Smallest MCP Server
OfficialThe Smallest MCP Server lets you manage, monitor, and operate AI voice agents and calling infrastructure on the Smallest AI platform directly from your IDE.
Agent Management: Create, read, update, duplicate, and archive AI voice agents. Configure name, language, voice, LLM model, prompts, first message, background sound, tools, knowledge base, pronunciation dictionaries, voicemail detection, and more.
Agent Versioning & Drafts: List, rename, compare, publish, or discard drafts. Test drafts via webcall, chat, or telephony before going live. Manage published versions for rollback, update metadata, diff versions, and A/B compare version metrics.
Call Operations: Initiate outbound calls with specific agents and optional per-call variables. Search/filter call logs by status, type, date range, agent, phone number, or campaign. Debug individual calls with full transcripts, errors, analytics, latency metrics, cost breakdown, and event timeline.
Campaign Management: List, create, schedule, start, pause, and delete outbound calling campaigns. Export call logs in JSON or CSV format.
Audience Management: List, create, and delete audiences (contact lists). View, search, add, and remove audience members.
Analytics & Reporting: Access usage stats, call volume timeseries, outcome distribution, agent performance, hourly/daily/weekly metrics, pickup rates, duration stats, concurrency data, attempt cohorts, and A/B version comparisons.
Billing & Credits: Check credit balance, view transaction history, usage breakdown, invoices, and payment methods. Configure auto-reload, billing alerts, view plans, and redeem coupons.
Text-to-Speech & Speech-to-Text: Convert text to audio using Lightning models. Transcribe audio files with support for 32+ languages, speaker diarization, emotion detection, PII redaction, and word timestamps.
Phone Numbers & Voices: List available phone numbers and voices, with filters for gender, language, and cloned voices.
Team Management: Invite members to your organization by email with member or admin role assignment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Smallest MCP ServerList all my agents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Smallest MCP Server
MCP server for the Smallest AI platform. Manage agents, debug calls, view analytics — directly from your IDE.
Quick start
Option A: npm (recommended)
Requires Node.js 18+. Add this to your MCP config (~/.cursor/mcp.json for Cursor, claude_desktop_config.json for Claude Desktop):
{
"mcpServers": {
"smallest": {
"command": "npx",
"args": ["-y", "@developer-smallestai/smallest-mcp-server"],
"env": {
"ATOMS_API_KEY": "sk_your_key_here"
}
}
}
}Auto-updates to the latest version every time your editor restarts.
Option B: One-line installer (no dependencies)
Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/smallest-inc/mcp-server/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/smallest-inc/mcp-server/main/install.ps1 | iexDownloads a standalone binary, prompts for your API key, and configures Cursor + Claude Desktop automatically. Re-run to update.
Option C: One prompt
Open a chat in Cursor or Claude Desktop and type:
Set up the Smallest MCP server for me.
The npm package is @developer-smallestai/smallest-mcp-server.
My API key is: sk_paste_your_key_hereVerify
Reload your editor, then type: "List all my agents"
Related MCP server: mcp-vapi
Available tools
Read
Tool | Description |
| Search and list calls with filters for status, type, date range, agent, phone number |
| Get detailed info about a single call — status, transcript, errors, analytics, latency |
| List agents with their configuration, voice, LLM model, and call stats |
| Get full details for a single agent |
| Read an agent's current system prompt and tools |
| Usage statistics — total calls, duration, costs, status breakdown |
| List outbound calling campaigns with status and progress |
| List phone numbers owned by your organization |
| List available voices with gender, language, and model filters |
| Read a multi-agent (Playbooks) agent's SOPs, intent router, and shared auth tools |
| View a branch's pending (unpublished) draft changes |
| Get a single committed revision's metadata and resolved config |
Write
Edits are saved to a branch's draft (agents use the branch/revision model). Pass an optional branch_id to any editing tool — omit it to edit the live branch; if the agent has several branches you'll be asked which one. Run publish_draft once to commit.
Tool | Description |
| Create a new AI voice agent ( |
| Update agent settings — name, prompt, first message, voice, model, language, variables, pre-call API, etc. |
| Add or update an API-call tool the agent can invoke during a call |
| Remove a tool from an agent by name |
| Enable/disable end_call and set a transfer number — agent-level |
| Add SOP playbooks (intent + prompt + scoped API tools + auth level) to a multi-agent |
| Edit, archive, or restore one playbook |
| Set the intent router, conversation guide, and shared weak/strong auth tools |
| Archive (soft-delete) or unarchive an agent |
| Copy an agent |
Versioning (branches & revisions)
Tool | Description |
| List the agent's branches (which is live, which have a pending draft) |
| Create a working branch from another branch's head |
| Rename a branch |
| Make a branch's head the live (serving) config |
| Publish (commit) or discard a branch's pending draft |
| List a branch's committed revisions |
| Compare two configs (revisions or a branch draft) |
| Start a test call against a branch's head, its draft, or a specific revision |
Act
Tool | Description |
| Initiate an outbound phone call using a specific agent |
Resources
Resource | URI | Description |
Platform Overview |
| Key concepts, call types, statuses, and cost breakdown |
Environment variables
Variable | Required | Description |
| Yes | Your Smallest AI API key |
Development
npm install
npm run dev # run with tsx
npm run build # bundle to dist/Releases
Merging to main automatically publishes a new version to npm and GitHub Releases.
Version bumps are automatic based on commit messages:
Commit message contains | Bump | Example |
| minor (0.2.0 → 0.3.0) |
|
| major (0.2.0 → 1.0.0) |
|
Anything else | patch (0.2.0 → 0.2.1) |
|
License
MIT
Available Tools
83 toolsadd_agent_toolA
Add (or update) one or more API-call tools on a single_prompt agent. API-call tools let the agent make an HTTP request to an external API during a call — e.g. look up an order, book an appointment, or post to a CRM. The agent decides when to invoke a tool from its name + description, filling in any declared parameters. Pass a single tool via the top-level fields, or several at once via tools. Upserts by name: an existing tool with the same name is replaced, others are preserved. Changes are saved to the branch's draft via read-modify-write against the open draft — make tool edits one at a time (sequential edits stack; concurrent edits to the same branch can drop each other), then publish_draft once to make everything live. Use remove_agent_tool to delete a tool by name, and configure_call_actions for end_call / transfer_call.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The endpoint URL to call. May contain {{variable}} placeholders. | |
| name | No | Unique tool name, no spaces (e.g. lookup_order). Re-using a name replaces that tool. | |
| tools | No | Batch mode: multiple API-call tools to add/update in one write. When provided, the top-level single-tool fields are ignored. | |
| method | No | HTTP method | |
| enabled | No | ||
| headers | No | ||
| agent_id | Yes | The agent ID to add the tool(s) to | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. | |
| parameters | No | ||
| timeout_ms | No | ||
| description | No | What the tool does and when the agent should call it. This is the only guidance the LLM gets — be specific. | |
| query_params | No | ||
| request_body | No | ||
| response_variables | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: upsert by name (replace existing), edits saved to draft via read-modify-write, concurrent edit risks, need to publish_draft to make live, and that the agent decides when to invoke based on name+description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded purpose and logical flow. It is informative but slightly verbose with minor redundancy. Each sentence adds value, but some details (e.g., 'API-call tools let the agent...') could be tighter. Still, it respects conciseness expectations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (14 parameters, nested objects, no output schema), the description covers all necessary context: what the tool does, how to use it, side effects (draft editing, upsert behavior, concurrency risks), and related tools. It is complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining the batch vs single-tool modes, the upsert behavior by name, and the workflow context. While schema coverage is 50%, the description does not detail every parameter but provides high-level guidance that aids parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add (or update) one or more API-call tools on a single_prompt agent' and explains what API-call tools do with examples. It distinguishes from siblings by mentioning remove_agent_tool and configure_call_actions, leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use (to let the agent make HTTP requests), how to use (single tool via top-level fields or batch via `tools`), and when not to (use remove_agent_tool for deletion, configure_call_actions for end_call/transfer_call). It also advises making edits one at a time and publishing drafts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_audience_membersA
Add members (contacts) to an existing audience. Each member must include the phone number column defined when the audience was created (use get_audience to check). Max 10,000 members per request. Duplicate phone numbers are skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| members | Yes | Array of member objects. Each must include the audience's phone number column. Example: [{ phoneNumber: '+14155551234', firstName: 'John' }] | |
| audience_id | Yes | The audience ID to add members to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses max members per request and duplicate skipping, but does not mention error handling, partial success, or idempotency. For a simple add tool, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a purpose: action, requirement, limits/behavior. No redundancy and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (two parameters, no output schema), the description covers essential behavioral aspects. It could mention response format or error scenarios, but it is largely complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by specifying the phone number column requirement and providing an example. It also recommends using get_audience to check, which is beyond schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add members (contacts) to an existing audience' with a specific verb and resource. It distinguishes from sibling tools like delete_audience_members and search_audience_members by focusing on addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: prerequisites (check audience for phone column), limits (max 10,000), and behavior on duplicates (skipped). It does not explicitly state when not to use or list 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.
add_playbooksA
Add one or more playbooks (SOPs) to a multi_agents agent. Each playbook = an intent (name + description the classifier routes on) + a specialist prompt + optional scoped tools and an auth level. Edits land on the branch's draft — use publish_draft to go live. The first enabled playbook becomes the router fallback automatically if none is set. Names and intent names must be unique on the agent (case-insensitive, archived included).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The multi_agents agent ID | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live. | |
| playbooks | Yes | The SOPs to add (batch them — one draft write) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses draft lifecycle, fallback behavior for first enabled playbook, and uniqueness rules (case-insensitive, including archived). Without annotations, this is adequate but could mention permissions or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose, then details. Somewhat long but every sentence adds value. Could be slightly more terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: what playbook consists of, draft lifecycle, fallback, uniqueness. Refers to related tools. Could mention return value or error conditions, but adequate for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value beyond schema: explains draft context, fallback, and references configure_playbooks for identity tools. Also clarifies batch addition and uniqueness constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds one or more playbooks to a multi_agents agent, specifying the components: intent, prompt, tools, auth. It distinguishes from siblings like update_playbook (update) and get_playbooks (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context that edits go on draft, need publish_draft, and uniqueness constraints. However, does not explicitly state when to use vs alternatives like configure_playbooks or update_playbook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_agent_webhookA
Attach an EXISTING webhook to an agent for the given events. This is the right tool for 'send this agent's call-start/call-end/analytics to an already-created webhook' — find the webhook with get_webhooks first, then pass its id here. WARNING: this REPLACES the agent's current subscriptions — the backend deletes all of the agent's existing webhook subscriptions and recreates them for this webhook only, so an agent points at one webhook at a time. To only remove subscriptions, use detach_agent_webhooks. Never guess or default the event types. If the user hasn't said which of call-start (pre-conversation), call-end (post-conversation), or analytics (analytics-completed) they want, ask them before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent to attach the webhook to. | |
| webhook_id | Yes | An existing webhook's id (from get_webhooks). | |
| event_types | Yes | The events to deliver to this webhook for this agent. Never guess or default the event types. If the user hasn't said which of call-start (pre-conversation), call-end (post-conversation), or analytics (analytics-completed) they want, ask them before calling. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses critical behavior: 'this REPLACES the agent's current subscriptions' and that an agent points at one webhook at a time. It also warns about not guessing event types. This is comprehensive for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose, then usage details, then warnings. It is somewhat long but every sentence adds value. Slight improvement could be trimming redundancy, but overall effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description provides thorough guidance: workflow, behavioral replacement, event type warnings, and sibling differentiation. It fully equips an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the workflow (webhook_id from get_webhooks) and reinforcing the event_types constraint (ask user, don't guess). This extra context makes it a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('attach an EXISTING webhook to an agent for the given events') and the resource. It distinguishes from sibling tools like detach_agent_webhooks by specifying the action and including a workflow hint (find webhook with get_webhooks first).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use: 'send this agent's call-start/call-end/analytics to an already-created webhook', and the prerequisite to find the webhook with get_webhooks. It also warns against guessing event types and directs to ask the user, and differentiates from detach_agent_webhooks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_with_agentA
Hold a TEXT conversation with a published agent over the realtime chat WebSocket (mode=chat) — no audio, no phone, just text in / text out. Sends each message in messages in order, waiting for each agent turn to FULLY settle before sending the next — a turn can be several messages (a filler while a tool runs, then the answer), so tool-using flows (auth, lookups) complete instead of being cut off. Returns the full transcript. Use this to test an agent's prompt/behaviour programmatically (e.g. an automated build → test → evaluate → refine loop): run a scripted conversation, read the transcript, then adjust the prompt with update_agent and run again. This places a real (chargeable) chat session on the agent. Note: the agent must be published; to chat with unpublished draft changes use test_agent (mode=chat, include_draft=true).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to chat with (must be a published agent) | |
| messages | Yes | User turns to send, in order. Each is sent only after the previous turn's reply arrives. For realistic tests, write messages a real caller would send. | |
| settle_ms | No | Silence after a SUBSTANTIVE agent message before the turn counts as finished. Fillers (messages ending in '…', spoken while a tool runs) are waited on much longer automatically, so this can stay small; raise it only if the agent sends its answer in several slow bursts. | |
| variables | No | Per-call values for {{key}} placeholders in the agent prompt | |
| greeting_wait_ms | No | Time to wait after connecting for the agent's opening message (0 if it waits for the user first) | |
| reply_timeout_ms | No | Hard cap on how long to wait for a single agent turn before giving up on it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses turn-waiting behavior, filler messages, and that it returns full transcript. With no annotations, description fully covers 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph but front-loaded with core purpose; every sentence adds value. Slightly long but warranted given complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 params fully described and no output schema, description covers all necessary behavioral and contextual details, including chargeability and turn handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Each parameter has schema description; description adds context beyond schema (e.g., realistic messages, filler explanation for settle_ms).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it holds a TEXT conversation with a published agent over WebSocket, no audio. Distinguishes from test_agent for unpublished drafts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes programmatic use for testing agent behavior, mentions chargeable session, and directs to test_agent for unpublished drafts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_call_actionsA
Enable/disable the agent's end_call action and set/remove a transfer_call number. These are AGENT-LEVEL settings (the console's Tools tab) that apply to the whole agent — for multi-agent (Playbooks) agents the runtime injects them into every playbook, never gated behind auth. Changes land on the branch's draft; publish_draft to go live. Without an enabled end_call the agent cannot hang up on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID | |
| end_call | No | true = enable the end_call action; false = remove it | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. | |
| end_call_description | No | Optional guidance for WHEN to end the call (used with end_call: true) | |
| transfer_call_number | No | Cold-transfer destination in E.164 (e.g. +9198...). '' removes the transfer_call action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Discloses draft behavior, auth note ('never gated behind auth'), and consequence of disabling end_call. Could mention return value but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph with no wasted words. Could be broken into sentences for readability, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope, draft lifecycle, auth, and a critical consequence. No output schema, but tool is configuration-oriented and return value may be implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context like 'false = remove it' and E.164 example, but schema already covers most meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool enables/disables end_call and sets/removes transfer_call number. Uses specific verbs and identifies resource as agent-level settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that settings are agent-wide, apply to all playbooks, and require publish_draft to go live. No explicit alternatives 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.
configure_playbooksA
Configure the section-level Playbooks settings of a multi_agents agent: the intent router (fallback playbook, mid-call rerouting), the conversation guide (persona/tone/global rules injected into EVERY playbook — define them once here, not per-SOP), and the shared identity tools that satisfy weak/strong auth. Edits land on a draft (auto-created when draft_id omitted); publish_draft to go live.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The multi_agents agent ID | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live. | |
| weak_auth_tools | No | REPLACES the shared weak-auth (caller recognition) tools, e.g. identify_by_phone. Required (non-empty) if any playbook uses auth_level weak or strong. | |
| strong_auth_tools | No | REPLACES the shared strong-auth (full identity proof) tools, e.g. verify_dob. Required (non-empty) if any playbook uses auth_level strong. | |
| conversation_guide | No | Persona + style + global rules injected into every specialist prompt (e.g. 'You are Aria, a warm female support agent; mirror the caller's language; be concise.') | |
| fallback_playbook_id | No | Playbook the router uses when no intent matches. Must be an enabled playbook id. | |
| allow_mid_call_reroute | No | Let the router switch playbooks mid-call when the caller's intent changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that edits land on a draft and that publish_draft is required to go live. It also mentions that weak_auth_tools and strong_auth_tools replace shared tools. However, it does not describe what happens if optional parameters are omitted (e.g., whether existing settings remain unchanged), nor does it disclose any destructive actions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that is front-loaded with the main purpose and then lists components. It is clear and every sentence adds value, though it could be slightly more structured with bullet points. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no output schema), the description explains the purpose of each parameter group and the draft mechanism. However, it does not describe the return value or response upon success, nor does it mention prerequisites like the agent existing. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The tool description adds meaning by grouping parameters into three areas (intent router, conversation guide, identity tools) and explaining their role. It also clarifies that weak_auth_tools 'REPLACES' shared tools, a detail not in the schema. This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Configure' and the resource 'section-level Playbooks settings of a multi_agents agent'. It explicitly lists the three areas: intent router, conversation guide, and shared identity tools. It distinguishes from siblings by noting that the conversation guide is defined once here, not per-SOP, which is a key differentiator from tools like add_playbooks or update_playbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to configure playbooks settings for an agent, specifically the intent router, conversation guide, and auth tools. It mentions that edits land on a draft and that publish_draft is needed to go live. However, it lacks explicit statements about when not to use this tool or direct comparisons with alternatives like add_playbooks, though 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.
create_agentA
Create a new AI agent in your organization. By default the agent is a single_prompt agent with gpt-4.1 model and daniel voice (waves_lightning_v3_1); set workflow_type to multi_agents for a Playbooks agent (an intent router + specialist SOP playbooks — add them via add_playbooks after creation). The STT transcriber defaults to Pulse — change it (e.g. to pulse-legacy) via update_agent after creation. Returns the created agent's ID. For single_prompt agents, set the prompt via update_agent after creation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the new agent | |
| language | No | Language configuration. Defaults to English. | |
| slm_model | No | LLM model for the agent. Defaults to gpt-4.1. | |
| description | No | Short description of what the agent does | |
| synthesizer | No | Voice synthesizer configuration | |
| first_message | No | First message the agent says when a call starts (max 500 chars) | |
| global_prompt | No | Global system prompt for the agent (max 4000 chars). For the main prompt, use update_agent after creation. | |
| workflow_type | No | Agent type. single_prompt (default) = one prompt + tools. multi_agents = Playbooks: an intent router classifies each caller turn and routes to a specialist playbook (SOP) with its own prompt and scoped tools — configure via add_playbooks / configure_playbooks. multi_agents is domain-gated; the API returns 403 if your account isn't allowlisted. | |
| background_sound | No | Background sound during calls | |
| default_variables | No | Default template variables for the agent prompt (e.g. { company_name: 'Acme' }) | |
| knowledge_base_id | No | Knowledge base ID to attach to the agent | |
| smart_turn_config | No | Smart turn detection configuration | |
| allow_inbound_call | No | Whether to allow inbound calls (default true) | |
| enable_style_guide | No | Enable conversational style guide (default true) | |
| allow_interruptions | No | Whether to allow user interruptions (default true) | |
| pronunciation_dicts | No | Custom pronunciation dictionary | |
| voicemail_detection | No | Voicemail detection configuration | |
| wait_for_user_to_speak_first | No | Wait for user to speak before agent starts (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses default configurations (single_prompt, gpt-4.1, daniel voice, Pulse STT, returns agent ID) and explains that multi_agents requires allowlisting and playbooks must be added separately. It does not describe the agent's activation state, error conditions, or permission requirements, but overall provides good transparency about the creation process and defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of five sentences, each providing essential information: main purpose, defaults, multi_agents option, post-creation steps, and return value. No extraneous content; every sentence earns its place. The structure is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (18 parameters, no output schema, no annotations), the description covers creation, defaults, agent type differentiation, post-creation steps, and return value. It also notes the domain-gating for multi_agents. It does not mention error scenarios or lifecycle hooks (e.g., if name already exists), but is fairly complete for typical use. The schema provides detailed parameter information, so the description complements well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description's role is supplementary. It adds context such as default values (e.g., model gpt-4.1, workflow_type single_prompt) that are already referenced in schema descriptions, and explains the workflow_type parameter's effect. However, it does not provide additional semantics beyond the schema for most parameters, and the mention of STT transcriber (not a parameter) could cause confusion. The description adds modest value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new AI agent in your organization' and distinguishes from siblings like update_agent, duplicate_agent, delete_agent. It specifies the resource (agent) and action (create), and differentiates between single_prompt and multi_agents workflows, providing a clear and specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (to create a new agent) and what to do after creation (setting prompt via update_agent, adding playbooks via add_playbooks, changing STT via update_agent). It mentions the domain-gating for multi_agents. However, it lacks explicit guidance on when not to use this tool versus alternative creation methods like duplicate_agent, and does not mention prerequisites or constraints such as agent name uniqueness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_branchA
Create a new branch to work on a set of changes in isolation, without touching the live agent. The branch starts from a source branch's head (the live branch by default). Edit its draft with the usual tools (pass the new branch_id), publish_draft to commit, then make_branch_live to serve it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Branch name (1-100 chars). Cannot be 'main'. | |
| agent_id | Yes | The agent ID | |
| source_branch_id | No | Branch to fork from (from list_branches). Omit to fork from the live branch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must explain behavior. It conveys that the branch starts from a source branch head, defaults to the live branch, and is non-destructive ('without touching the live agent'). It does not elaborate on error conditions or limits, but the core behavior is sufficiently disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack all essential information: purpose, default behavior, and workflow. No redundant words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description covers the workflow well, including defaults and links to siblings. It omits explicit mention of the required agent_id (though schema does) and potential errors, but overall is adequate for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing baseline clarity. The description adds value by explaining that source_branch_id defaults to the live branch if omitted, and that the new branch_id should be used for subsequent editing, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a branch to work on changes in isolation, specifying the source branch default and linking to subsequent workflow steps. This distinguishes it from branch management siblings like delete_branch, rename_branch, and make_branch_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use (to work on changes without touching the live agent) and outlines the workflow (edit draft, publish, make live). It implicitly suggests using list_branches first via the source_branch_id parameter description, but lacks an explicit 'when not to use' or direct alternative mention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignA
Create a new outbound calling campaign. Requires an agent and an audience (contact list). The campaign is created in draft status unless a scheduled time is provided, in which case it will be scheduled. Use start_campaign to begin dialing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| agent_id | Yes | Agent ID to use for calls | |
| audience_id | Yes | Audience ID (contact list) to call | |
| description | No | Campaign description | |
| max_retries | No | Max retry attempts for failed/unanswered calls (0-10, default 3) | |
| retry_delay | No | Minutes to wait between retry attempts (1-1440, default 15) | |
| scheduled_at | No | Schedule campaign start time (ISO 8601, must be in the future). If omitted, campaign is created as a draft. | |
| phone_number_ids | No | Phone number product IDs to use as caller IDs. Use get_phone_numbers to find IDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description covers key behaviors: campaign is created in draft unless scheduled_at is provided, and start_campaign is needed to begin dialing. It doesn't mention idempotency or error cases but is sufficient for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no waste, front-loaded with purpose. Each sentence earns its place, providing essential information succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description explains core behavior and state transitions. It could mention the return value (e.g., campaign ID) but is otherwise complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining the significance of scheduled_at (draft vs scheduled) and referencing get_phone_numbers for phone_number_ids, providing context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a new outbound calling campaign.' It specifies prerequisites (agent and audience) and distinguishes from sibling tools like start_campaign. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it requires an agent and audience, explains draft vs scheduled status, and explicitly directs to start_campaign for beginning dialing. It lacks explicit when-not-to-use guidance but effectively informs the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookA
Register a NEW webhook endpoint (delivery URL). Use this only when the target URL does not already exist as a webhook. To point an agent at an ALREADY-REGISTERED webhook, do NOT create a new one — call get_webhooks to find it, then attach_agent_webhook. events is optional: omit it to register the endpoint only, or pass agent+event pairs to attach in the same call. Never guess or default the event types. If the user hasn't said which of call-start (pre-conversation), call-end (post-conversation), or analytics (analytics-completed) they want, ask them before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Optional agent + event-type pairs to subscribe at creation. Repeat an agent_id with different event types for multiple events. Never guess or default the event types. If the user hasn't said which of call-start (pre-conversation), call-end (post-conversation), or analytics (analytics-completed) they want, ask them before calling. | |
| headers | No | Custom headers sent with every delivery (e.g. gateway API keys), as key/value pairs. Max 10; reserved headers like content-type are rejected. | |
| endpoint | Yes | The HTTPS URL that will receive webhook deliveries. | |
| description | Yes | A human-readable label for this webhook. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that this creates a new webhook, events are optional and can attach in same call, headers have limits. Lacks mention of error behavior (e.g., duplicate endpoint) but is otherwise transparent. No annotations to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, usage condition, events detail, caution. No filler, well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers parameters and usage well, but there is no output schema and description does not explain what is returned (e.g., created webhook object). This omission, given complexity and no output schema, makes it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds significant value: explains events' optionality and attachment, headers limits and examples, endpoint format. Extra context raises score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states 'Register a NEW webhook endpoint' with a specific verb and resource. Distinguishes from siblings like get_webhooks and attach_agent_webhook by specifying the condition for use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use (only for new URLs) and when-not-to (already registered, use get_webhooks then attach_agent_webhook). Also gives explicit guidance on events: never guess/default, ask user if unspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_callA
Get detailed info about a single call — use this to check call status, debug failures, or get transcripts. Returns call status, failure reasons, errors, transcript, post-call analytics, latency metrics, cost breakdown, variables, voice/model config at time of call, and full event timeline. Works for calls in any state (queued, in-progress, completed, failed). Use a callId (e.g. CALL-1234567890-abc123).
| Name | Required | Description | Default |
|---|---|---|---|
| call_id | Yes | The callId to debug (e.g. CALL-1234567890-abc123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description details return fields and confirms read-only nature by listing no side effects. However, does not disclose any authorization needs 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with purpose and use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low parameter count, no output schema, and no nested objects, the description is complete: it lists what is returned and conditions of use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with full schema coverage; description adds example format and context beyond schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get detailed info' and resource 'single call', clearly distinguishing from siblings like 'list_calls'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use cases (debugging, status check) and that it works for any call state. Does not mention alternatives but context from siblings is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_agentA
Archive (soft-delete) an agent by its ID. Archived agents are inactive. Cannot archive agents with active campaigns. Unarchiving is not supported — to restore an agent, use app.smallest.ai.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to archive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key traits: soft-delete, agent becomes inactive, unarchiving not supported. Despite no annotations, reveals constraints and irreversible nature. Lacks mention of permissions or side effects, but sufficient for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences. Every sentence adds value: action, constraint, limitation and alternative. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple single-parameter tool, description provides all necessary context: what it does, constraints, and alternative for restoration. Agent can correctly decide when to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter fully (100% coverage), description simply restates agent ID context. Description adds no new semantic meaning beyond the schema, meeting baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (archive/soft-delete), the resource (agent by ID), and the effect (inactive). Distinguishes from sibling tools like delete_audience and delete_campaign by focusing on agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions when to use (to archive an agent), when not to use (cannot archive agents with active campaigns), and alternative for restoration (use app.smallest.ai). No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_audienceA
Delete an audience by ID. Cannot delete an audience that is linked to a campaign — remove or delete the campaign first.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | The audience ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses one behavioral constraint (cannot delete if linked to campaign) but does not mention whether deletion is permanent or irreversible. More context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, each serving a distinct purpose: first states the operation, second adds a critical usage constraint. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter, the description covers the core action and a key precondition. However, it lacks output details (e.g., success response) which could be inferred but are not explicitly stated. Still sufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the audience_id parameter accurately. The description adds no additional meaning beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete an audience by ID') and the resource ('audience'), making it distinct from sibling tools like delete_audience_members or delete_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on a precondition: cannot delete if linked to a campaign, and suggests removing or deleting the campaign first. This helps the agent avoid errors and choose the correct sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_audience_membersA
Remove specific members from an audience by their member IDs. Use get_audience_members or search_audience_members to find member IDs. If all members are removed, the audience itself may be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| member_ids | Yes | Array of member IDs to remove | |
| audience_id | Yes | The audience ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the primary behavior (removing members) and warns that removing all members may delete the audience. While it doesn't explicitly label the operation as destructive, the warning suffices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, no fluff. First sentence states purpose, second gives usage hint, third warns of side effect. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (2 params, no output schema), description covers purpose, parameter usage, and a key side effect. It could mention return value (e.g., success or count), but not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters. Description adds value by explaining how to obtain member IDs (via get_audience_members or search_audience_members), which is not in the schema. For audience_id, no extra info is added beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb (remove), resource (specific members from an audience), and method (by member IDs). It distinguishes from sibling tools like add_audience_members and get_audience_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance to first find member IDs using get_audience_members or search_audience_members, and warns about potential audience deletion if all members are removed. However, it does not explicitly state when not to use or alternative tools for removing entire audience.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_branchA
Delete (archive) a branch, along with its revisions and open draft. The default branch cannot be deleted, and the live branch cannot be deleted — make another branch live first. Use list_branches to find branch IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID | |
| branch_id | Yes | The branch to delete (from list_branches) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It discloses that deletion removes revisions and open draft, and that default/live branches are protected. However, it does not state if deletion is irreversible, permissions needed, or what the response indicates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, constraints, and a helpful hint. No unnecessary words. Front-loaded with action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values or success confirmation. It covers behavioral context adequately but lacks completeness for a destructive tool with side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description adds context that branch_id comes from list_branches, but the schema already says 'from list_branches'. No additional parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete (archive) a branch, along with its revisions and open draft.' It specifies the action and scope, distinguishing it from sibling tools like rename_branch or make_branch_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'The default branch cannot be deleted, and the live branch cannot be deleted — make another branch live first. Use list_branches to find branch IDs.' It advises when not to use and directs to a prerequisite tool, but does not explicitly mention alternatives for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_campaignA
Delete a campaign. This permanently removes the campaign and its execution data.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that deletion is permanent and removes execution data, but omits details like required permissions, impact on running campaigns, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no redundancy. The core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete with one parameter and no output schema, the description covers purpose and effect. Missing details on safe usage (e.g., active campaigns) but adequate for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with clear description. The tool description adds context about permanence but does not enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('campaign'), and specifies the permanent nature including removal of execution data. This distinguishes it from sibling tools like pause_campaign or start_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., pause_campaign or archive). No prerequisites or warnings about active campaigns are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookA
Delete a webhook and all of its agent/event subscriptions. This detaches it from every agent it was attached to.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | The webhook to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses key side effects: deletion cascades to subscriptions and detaches from all agents, which is critical for an irreversible operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter delete tool with no output schema, the description covers the main effects. Minor omission: no mention of return value or prerequisites like webhook existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for webhook_id. The tool description adds no additional parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete a webhook) and its scope (all subscriptions and detach from agents), distinguishing it from other webhook tools like update_webhook or detach_agent_webhooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to permanently remove a webhook) but does not explicitly contrast with alternatives like detach_agent_webhooks, which only detaches without deleting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detach_agent_webhooksA
Remove ALL of an agent's webhook subscriptions. The agent will stop receiving call-start/call-end/analytics deliveries until re-attached with attach_agent_webhook. This does not delete the webhook endpoint itself.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent whose subscriptions to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that all subscriptions are removed, that deliveries stop until re-attached, and that the endpoint itself is not deleted. This is good but lacks details on auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The action is front-loaded, and every sentence adds value (what it does, consequence, what it doesn't do).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the action, effect, and non-effect. It references the related sibling tool for re-attaching, providing complete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (agent_id) is fully described in the schema (100% coverage). The description adds no new semantic information beyond the schema's description, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove ALL of an agent's webhook subscriptions.' It specifies the effect (stop receiving deliveries) and distinguishes from the sibling tool 'attach_agent_webhook' by clarifying what it does not do (delete the endpoint).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to stop deliveries) and mentions the re-attachment alternative. However, it does not explicitly state when not to use it or list any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diffA
Compare two agent configs and show what changed, section by section (field paths with old/new values). Each side is a reference: a revision_id (from list_revisions) or ":draft" for a branch's open draft (branch_id from list_branches). E.g. diff a branch's draft against the live head to preview a publish.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | Left side: a revision_id, or "<branch_id>:draft" for a branch's open draft | |
| b | Yes | Right side: a revision_id, or "<branch_id>:draft" for a branch's open draft | |
| agent_id | Yes | The agent ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It explains that the tool compares configs and returns changes with old/new values. However, it does not explicitly state that the tool is read-only or mention any authentication requirements or rate limits. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the purpose, and contains zero wasted words. Every sentence adds necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description covers the core functionality and parameter usage with an example. However, it does not explicitly describe the structure of the return value, though the phrase 'field paths with old/new values' gives a reasonable expectation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for all 3 parameters, but the description adds value by explaining the format of 'a' and 'b' (revision_id or branch:draft) and providing a concrete usage example. This goes beyond the schema's descriptions, which only say 'Left side: a revision_id, or...'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares two agent configs and shows changes section by section with field paths and old/new values. It uniquely identifies this tool among siblings, as no other sibling tool performs diff operations on configs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, including an example of diffing a branch's draft against live head to preview a publish. It does not explicitly state when not to use it, but the context is sufficient and no sibling tool offers similar functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_agentA
Duplicate an existing agent, creating a new agent with the same configuration. The new agent is created in the target organization (defaults to your own org). Useful for creating variants of an agent for testing or A/B comparisons.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to duplicate | |
| target_organization_id | No | Target organization ID to create the duplicate in. If omitted, duplicates into your own organization. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It confirms the tool creates a new agent but omits important details such as whether all configurations are copied (including sub-resources), any potential side effects (e.g., duplication of dependencies), rate limits, or security requirements. The description is too sparse to allow an agent to fully understand the implications of using this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two short sentences that first state the action and result, then provide usage context. Every word is purposeful, with no redundancy or filler. The information is front-loaded, allowing an agent to quickly grasp the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with only two parameters and no output schema, the description covers the essential information: what it does, the default behavior, and a typical use case. It could be slightly improved by explicitly differentiating from 'create_agent' or noting any limitations (e.g., inability to duplicate an agent with certain associated resources), but overall it is adequate for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters with 100% coverage. The description adds value by explaining the overall purpose ('duplicate creating a new agent with the same configuration') and clarifying default behavior for the optional parameter ('If omitted, duplicates into your own organization'). This goes beyond the schema to provide operational context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Duplicate an existing agent') and the resource ('agent'), with added context about creating a copy with the same configuration. It distinguishes from siblings like 'create_agent' by specifying it's for copying, and mentions use cases (testing, A/B comparisons), making the purpose explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to create identical agent copies for testing) and mentions the target organization default, providing context for usage. However, it does not explicitly state when not to use it or contrast with alternatives like 'create_agent' or 'update_agent_config', so it misses clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_campaign_logsA
Export call logs for a campaign. Returns detailed call data grouped by audience member, including call status, duration, recording URL, transcript, cost, retry attempts, and post-call analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format (default json) | json |
| campaign_id | Yes | The campaign ID to export logs for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains the output but does not disclose side effects (e.g., whether it's read-only) or any restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and detail the output, with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the return fields well, but lacks info on pagination or limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond the schema; it mentions output grouping but not how parameters affect it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports call logs for a campaign and lists the detailed return fields (status, duration, recording URL, etc.), which distinguishes it from sibling tools like list_calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like list_calls; usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentA
Get full details for a single agent by ID, including voice config, model, prompt, language, call behavior settings, and workflow type.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns 'full details' with a list of included fields, but does not mention error handling, permission requirements, or behavior on invalid IDs. The description adds some value beyond the schema but lacks complete transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence of 23 words. It front-loads the primary action ('Get full details for a single agent by ID') and then lists the included fields. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description provides a sufficient overview of the returned data. It lists major categories, enabling an agent to determine usefulness. However, it could add error behavior details to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (agent_id) with a schema description already explaining its purpose ('The agent ID to retrieve'). The tool description adds minimal additional meaning beyond 'by ID', so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving full details for a single agent by ID. It lists specific return fields (voice config, model, prompt, language, call behavior, workflow type), distinguishing it from sibling tools like get_agents (which retrieves multiple agents) or get_agent_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an agent ID is available, but does not explicitly state when to use this tool vs alternatives like get_agents or get_agent_prompt. No guidance on 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_agent_performanceB
Compare agent performance — shows each agent's total calls, average duration, completion rate, and cost. Use to find top and bottom performers.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It does not mention whether the tool is read-only, if results are aggregated, paginated, or sorted, nor any permission or data freshness requirements. The description assumes a read operation but fails to confirm it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, starting with the core purpose. It is concise and front-loaded, wasting no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 optional parameters and no output schema. The description could be more complete by explaining expected output structure, sorting behavior, or limitations (e.g., time range constraints). As a performance comparison tool, missing details about aggregation and ranking reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning to the parameters beyond what the schema provides (e.g., filtering logic, defaults).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows agent performance metrics (calls, duration, completion rate, cost). It implies comparison and identifies the resource (agent performance). While it distinguishes from general agent listing tools, it does not explicitly differentiate from other performance-related siblings like get_hourly_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to find top and bottom performers' gives a concrete use case. However, no guidance is provided on when not to use this tool (e.g., for individual agent details) or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_promptA
Read the current system prompt / instructions for an agent. Returns the prompt text and any configured tools.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to read the prompt from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It accurately indicates a read operation (non-destructive) and specifies the return content (prompt text and tools). However, it does not mention idempotency, authorization requirements, or rate limits, which would add safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that concisely states the purpose and return value. It is front-loaded with the verb 'Read', making it immediately clear what action the tool performs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description completely covers what the tool does and returns. It provides sufficient context for an agent to understand the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of the parameter (agent_id) with a clear description. The tool description does not add additional semantic meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the system prompt for an agent and returns the prompt text and configured tools. It distinguishes itself from sibling tools like update_agent_prompt (which writes) and get_agent (which returns agent metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Among many sibling get_* tools, there is no explicit context for when reading the prompt is appropriate or what alternatives (like get_agent) offer different data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentsA
List AI agents in your organization. Returns agent configuration including voice, LLM model, language settings, and call statistics. Supports pagination, filtering, and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Max results per page (default 20, max 50) | |
| agent_name | No | Filter by agent name (partial match, case-insensitive) | |
| sort_field | No | Field to sort by (default createdAt) | |
| sort_order | No | Sort order (default desc) | |
| workflow_type | No | Filter by workflow type | |
| include_archived | No | Include archived agents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it lists agents and supports pagination/filtering/sorting, but does not explicitly declare read-only behavior, auth requirements, rate limits, or potential network latency. The description is clear but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the primary action. Every sentence adds value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a listing tool with 7 optional parameters and no output schema, the description covers the key capabilities and return fields. It lacks details on empty results, error handling, or rate limits, but given the complexity and sibling context, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is described in the schema. The description adds a high-level statement about supporting pagination, filtering, and sorting, but does not add new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists AI agents and returns configuration details including voice, LLM model, language settings, and call statistics. It specifies support for pagination, filtering, and sorting, which distinguishes it from sibling tools like get_agent (single agent) and get_agent_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing agents but does not provide explicit guidance on when to use this tool versus alternatives like get_agent for a single agent. No when-not-to-use scenarios are mentioned, but the context of sibling tools makes it somewhat clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_webhooksA
List an agent's current webhook subscriptions — which webhook it's attached to and for which events (pre-conversation, post-conversation, analytics-completed).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent whose subscriptions to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It indicates a read operation ('list') but does not mention authentication needs, rate limits, or what happens if the agent has no subscriptions. The description lacks depth beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence that directly states the purpose and provides specific event types. It is concise and front-loaded with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values or structure. For a list tool, it would be helpful to mention that the response contains an array of subscriptions with webhook IDs and events. The description is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, baseline is 3. The description adds value by specifying the events (pre-conversation, etc.) and clarifying that it lists 'current' subscriptions, which goes beyond the schema's simple parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List an agent's current webhook subscriptions' specifying the verb 'list' and resource 'webhook subscriptions'. It also mentions the events (pre-conversation, post-conversation, analytics-completed), distinguishing it from sibling tools like 'get_webhooks' and 'get_webhook_events'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving subscriptions for a specific agent but does not provide explicit guidance on when to use versus alternatives like 'get_webhooks' or when not to use. No exclusions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attempt_cohortsA
Get attempt cohort analysis — shows volume and success rate by attempt number (1st attempt, 2nd attempt, etc.). Useful for optimizing retry strategies.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool shows data but doesn't disclose side effects, authentication needs, or rate limits. As a read operation, it's safe, but more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose with no extraneous words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately explains the return value (volume and success rate by attempt number). Parameters are optional and clearly described in the schema. The tool is simple and the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, fulfilling the baseline. The description does not add parameter-specific meaning beyond the schema; it focuses on output. No additional semantic value is provided for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as getting an attempt cohort analysis, specifying it shows volume and success rate by attempt number. It distinguishes itself from sibling tools, none of which focus on cohort analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it's useful for optimizing retry strategies, giving clear context for use. It does not explicitly mention when not to use or alternatives, but the purpose is clear enough for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audienceA
Get details for a specific audience by ID, including name, description, and phone number column name.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | The audience ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It only states 'Get details', implying a read-only operation but does not explicitly declare idempotency, side effects, or permissions. For a simple read tool, it is minimally sufficient but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 17 words, front-loading the action and key output fields. Every word earns its place with no redundancy. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description hints at return fields (name, description, phone number column name), which helps the agent understand what to expect. However, it does not mention error handling, empty results, or full output structure. For a simple tool, this is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with one parameter (audience_id) described as 'The audience ID'. Description adds 'by ID' but no extra semantics about format, source, or constraints. Baseline score 3 is appropriate since schema already describes the parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves details for a specific audience by ID, listing specific fields like name, description, and phone number column name. This distinguishes it from siblings like get_audiences (list) and get_audience_members (list members).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The name and description imply it's for single audience details, but it does not mention get_audiences for listing or when not to use it. Adequate but lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audience_membersA
List members (contacts) in an audience with pagination. Each member has a data object containing their phone number and any other fields from the original CSV upload.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| page_size | No | Members per page (default 5) | |
| audience_id | Yes | The audience ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides relevant behavioral context: it returns a list of members with pagination and details the data object structure (phone number and other fields). It does not cover rate limits or auth, but for a read operation, the disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first delivers the core purpose and pagination, the second adds detail on return structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema, no annotations), the description covers the essential aspects: purpose, pagination, and member data shape. Lacks details on edge cases (e.g., empty audience), but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with full descriptions for all three parameters (audience_id, page, page_size). The description adds no additional meaning beyond what the schema already provides, 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.
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 'members (contacts) in an audience', and mentions pagination. This distinguishes it from sibling tools like search_audience_members, which implies filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing all members with pagination. It does not explicitly state when to use this vs. search_audience_members, but the context of sibling tools makes the distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audiencesA
List all audiences in your organization. Shows audience name, member count, linked campaigns, and the phone number column name. Audiences are contact lists used by campaigns for outbound calling.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool lists data, implying a read-only operation, but does not explicitly confirm no side effects, mention authentication, rate limits, or pagination. The term 'list' suggests safety, but lacks explicit behavioral guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences. The first front-loads the action and output, and the second provides context on what audiences are. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list-all tool with no parameters and no output schema, the description covers the essential purpose and output. It could mention pagination or limits, but the context is generally complete given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The description adds value by explaining the output fields, which is sufficient for a parameterless tool. Baseline for 0 params is 4, and the description meets it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all audiences in the organization and specifies the exact fields returned (name, member count, linked campaigns, phone number column). It distinguishes itself from sibling tools like 'get_audience' and 'get_audience_members' by focusing on listing all audiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need a list of all audiences but does not explicitly compare with alternative tools like 'get_audience' for a specific audience. No guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auto_reloadA
Get the current auto-reload configuration for your organization. Auto-reload automatically adds credits when your balance drops below a threshold.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains what auto-reload does (automatically adds credits when balance drops below a threshold), providing behavioral context beyond a simple 'get configuration'. However, it does not disclose permissions or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the purpose, and the second adds useful context about auto-reload functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read operation without an output schema, the description is sufficiently complete. It explains the feature and its purpose. Minor omission: does not hint at the returned configuration structure, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage (empty schema). Per guidelines, baseline is 4. The description adds no parameter info, which is acceptable as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the auto-reload configuration for the organization, using the verb 'get' and specifying the resource. It distinguishes from siblings like get_billing_alerts by focusing on auto-reload's credit-add behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for reading auto-reload settings but does not explicitly state when or when not to use it, nor does it mention alternatives or prerequisites. The context is clear but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_alertsA
Get the current billing alert configuration for your organization. Billing alerts notify you when credit usage reaches specified thresholds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description accurately indicates a read-only operation. It could be improved by stating that it does not modify state, but for a simple get with no parameters, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the action and provide context with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is mostly complete. It explains the tool's purpose and the concept of billing alerts. It could mention the expected return structure, but it's not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description adds no parameter info, but that is acceptable as there are none to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the current billing alert configuration for your organization' with a specific verb and resource. It distinguishes from siblings like update_billing_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what billing alerts are, implying when to use this tool (to view thresholds). However, it doesn't explicitly contrast with alternatives like get_credit_balance, though the purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_branch_draftA
Get a branch's pending (unpublished) draft — its latest draft revision and edit history (which sections changed per edit). Each branch has at most one open draft. Use list_branches to see which branches have one (hasOpenDraft).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID | |
| branch_id | No | Branch whose draft to read (from list_branches). Omit for the live branch; if the agent has multiple branches you'll be asked to pick one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It reveals that each branch has at most one open draft and that the tool returns the latest draft revision and edit history. This is transparent for a read operation, though it could explicitly state it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack all necessary information without waste. The first sentence defines the tool; the second provides context and a usage tip. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description covers the what, the input hints, and a key constraint (max one draft). It could mention the output structure more, but the mention of 'edit history' suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema: for branch_id, it explains where to get the value (from list_branches), that omitting it gives the live branch, and behavior with multiple branches. This is exemplary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'a branch's pending (unpublished) draft', and specifies what is included ('latest draft revision and edit history'). It also distinguishes from siblings like list_branches and other branch operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use this tool and points to list_branches as an alternative to check for drafts. It could be improved by stating when not to use it, but the guidance is clear and contextually helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_counts_by_dayC
Get call count per day as a simple histogram. Shows { day, count } pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only states it returns a histogram, but does not mention it is read-only, whether results are limited, or how missing data is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key purpose. No fluff, but could include slightly more detail without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters and no required fields, the description does not explain how aggregation works, date handling, or output list structure. Lacks completeness for a tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets call count per day as a histogram with day-count pairs. It uses a specific verb and resource, but does not differentiate from similar sibling tools like get_call_volume or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No explicit context, prerequisites, or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_outcomesA
Get call outcome distribution over time — daily breakdown of completed, failed, and no-answer calls, plus totals.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It mentions daily breakdown and totals, indicating a read-like operation, but lacks details on auth needs, rate limits, or behavior with no data. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, no wasted words. Efficiently conveys purpose and output nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and no output schema, description explains return (daily breakdown of categories plus totals) but omits defaults (e.g., date range defaults) and output structure. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add extra meaning beyond the schema, such as explaining defaults or relationships. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool provides call outcome distribution over time with specific categories (completed, failed, no-answer) plus totals. It uses a specific verb 'Get' and resource 'call outcome distribution', distinguishing it from siblings like get_call_counts_by_day.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for analyzing call outcomes over time but does not explicitly state when to use or not, nor mention alternatives among siblings. Usage is implied but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_start_distributionA
Get call start distribution by hour for a specific date — shows how many calls started in each hour (0-23). Useful for scheduling and capacity planning.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date to query (YYYY-MM-DD format, e.g. 2025-01-15) | |
| agent_id | No | Filter to a specific agent by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly implies a read operation but does not disclose any behavioral traits such as authentication requirements, rate limits, or whether the data is live or cached. For a simple aggregation, the description is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences with no redundancy. The verb and resource are front-loaded, and every word contributes to understanding. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no output schema), the description is complete. It explains the input (date), optional filter (agent_id), output format (hourly counts), and use case. No additional details are needed for an AI agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described in the schema. The description adds value by explaining the output format ('each hour (0-23)') and reinforcing the date parameter's role. This goes beyond the baseline of 3 by providing additional context not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('call start distribution') with clear scope ('by hour for a specific date'). It explicitly states the output ('how many calls started in each hour (0-23)'), which distinguishes it from sibling tools like get_call_counts_by_day or get_call_volume that aggregate differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage hint ('Useful for scheduling and capacity planning') but does not explicitly state when not to use this tool or compare it to alternatives. This is implied usage guidance, not explicit exclusion or context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_volumeB
Get call volume over time as a daily timeseries. Shows how many calls were made each day in the date range.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that output is a daily timeseries but omits details about response structure, aggregation behavior, permissions, or rate limits. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loading the core purpose. It could be slightly more efficient but avoids unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and the presence of five optional filters, the description should explain the return format (e.g., array of objects) and aggregation behavior. It mentions 'daily timeseries' but is insufficiently detailed for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all parameters are well-described there. The description adds no additional parameter meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a daily timeseries of call volume, specifying the verb 'Get' and resource 'call volume over time as a daily timeseries'. However, it does not differentiate from the sibling tool 'get_call_counts_by_day', which likely serves a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_call_counts_by_day' or other analytics tools. The description implies usage for daily volume trends but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignA
Get detailed information about a specific campaign, including status, execution progress, events timeline, and metrics (participants, contacts called, contacts connected).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It implies a read-only operation but does not explicitly state non-destructiveness, auth requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with front-loaded purpose, no redundant words, and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description sufficiently explains what data is returned, making it complete for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, but the description adds no further semantic value beyond the schema's basic 'campaign ID' description. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a specific campaign, listing specific elements like status, execution progress, events timeline, and metrics. This distinguishes it from other 'get_*' tools for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when detailed information on a single campaign is needed, but lacks explicit guidance on when not to use it or mention of alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignsB
List outbound calling campaigns for your organization. Shows campaign status, progress, agent used, audience, retry config, and execution details.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Max results per page (default 20, max 50) | |
| search | No | Search by campaign name (partial match, case-insensitive) or campaign ID (exact match) | |
| status | No | Filter by campaign status | |
| sort_field | No | Field to sort by (default createdAt) | |
| sort_order | No | Sort order (default desc) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the full burden. It mentions the fields returned (status, progress, agent used, etc.) and implies a list operation with pagination via schema. However, it doesn't state that it's read-only or disclose any potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states the purpose, second lists the data fields returned. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description adequately covers the tool's purpose and output fields. It lacks mention of pagination behavior but the schema covers that. Overall sufficient for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 6 parameters. The description adds no additional parameter information beyond what the schema already provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List outbound calling campaigns' (verb+resource) and enumerates the data fields shown (status, progress, agent used, audience, etc.). It distinguishes from sibling get_campaign (singular) by implying this returns multiple campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_campaign (singular) or other get_* tools. The description does not mention filtering, sorting, 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.
get_concurrencyA
Get concurrent call counts for a specific date — minute-by-minute concurrency data plus per-agent max concurrency. Shows how many calls were running simultaneously.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date to query (YYYY-MM-DD format, e.g. 2025-01-15) | |
| agent_id | No | Filter to a specific agent by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly indicates it's a read operation returning concurrency data, with no mention of destructive behavior. The description adds value by specifying the type of data returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose, and contains no fluff. Every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description explains the output (minute-by-minute concurrency, per-agent max) adequately. It could be improved by mentioning output format, but it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The tool description adds context about output but does not add new semantic meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves concurrent call counts for a specific date, with minute-by-minute and per-agent max concurrency. It distinguishes itself from siblings like get_call_counts_by_day by focusing on concurrency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying concurrency but does not explicitly specify when to use this tool versus alternatives such as get_call_volume or get_call_counts_by_day.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_balanceA
Get the current credit balance for your organization, including plan information and enterprise status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It indicates a read operation and outlines returned data (balance, plan, enterprise status), but does not disclose authentication requirements, rate limits, or potential side effects. For a simple getter, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the tool's purpose and output. Every word is meaningful with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description sufficiently covers the main return values. Minor gaps (e.g., currency, real-time nature) are not critical for this getter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema description coverage is 100%. The description adds value by specifying the output includes balance, plan info, and enterprise status. This exceeds the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the current credit balance, plan information, and enterprise status for the organization. It uses a specific verb and resource, distinguishing it from siblings like get_credit_ledger and get_credit_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking the organization's current credit balance, but it does not explicitly differentiate when to use this versus related billing tools. No exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_ledgerB
Get the credit transaction history (ledger) for your organization. Shows purchases, usage deductions, bonuses, admin adjustments, coupon credits, and more. Supports filtering by date range, transaction type, and scope.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date filter (ISO 8601, e.g. '2025-01-31') | |
| from | No | Start date filter (ISO 8601, e.g. '2025-01-01') | |
| type | No | Filter by transaction type | |
| limit | No | Max entries to return (default 50) | |
| scope | No | Filter by product scope | |
| offset | No | Offset for pagination (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It states 'Get' implying read-only, but doesn't confirm auth needs, rate limits, or pagination behavior beyond parameters. Lacks explicit safety guarantees, but adequately describes what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and key features. Front-loaded with the primary action (Get credit transaction history) and then details. No unnecessary words, though slight structure improvement could combine ideas.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 6 parameters and no output schema, the description omits return format, default sorting, pagination details, and any behavioral caveats. Given sibling diversity, more context (e.g., response structure) is needed for robust usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter well. The description adds only a high-level mention of filtering, not deeper meaning. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves credit transaction history (ledger) and lists specific transaction types (purchases, usage deductions, etc.), which distinguishes it from sibling tools like get_credit_balance and get_credit_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_credit_balance, get_credit_usage). It doesn't mention prerequisites or scenarios where this tool is preferred, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_usageA
Get daily credit/cost usage over time — shows credits consumed each day and total for the period. Useful for billing and budget tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses the tool returns daily credits consumed and totals, but does not mention that it is read-only, any authentication requirements, or potential rate limits. It adequately conveys behavior for a simple data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences with no filler. The first sentence states the purpose and output, the second adds context on usage. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description includes the key output details (daily credits consumed and total). Parameter coverage is complete. It could be more precise about the output format, but for a straightforward time-series tool, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented with descriptions. The description does not add extra meaning beyond what the schema already provides (ISO 8601 format, defaults). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool retrieves daily credit/cost usage over time, specifying per-day and total values. It distinguishes from many sibling tools by focusing on usage rather than balance or alerts, though it could explicitly differentiate from get_credit_balance or get_credit_ledger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is useful for billing and budget tracking, implying when to use. However, it does not specify when not to use it or mention alternatives such as get_credit_balance for current balance or get_billing_alerts for alerts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryA
Get summary statistics for a specific date — total calls, completed, failed, no-answer, in-progress, in-queue, average duration, and total cost.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date to query (YYYY-MM-DD format, e.g. 2025-01-15) | |
| agent_id | No | Filter to a specific agent by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It correctly indicates a read operation (Get summary statistics) and lists metrics, but lacks disclosure on authentication needs, rate limits, or whether data is aggregated across all users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with a clear list of metrics. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple summary tool with 2 parameters and no output schema, the description is fairly complete: it lists all returned metrics and implies a read-only operation. Could mention date format expectations but schema already specifies that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond schema; it only restates that the tool retrieves for a specific date. No elaboration on agent_id filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and resource 'summary statistics for a specific date', lists all returned metrics (total calls, completed, etc.), distinguishing it from sibling tools like get_call_counts_by_day or get_duration_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_call_volume, get_hourly_performance). Does not mention context such as required permissions or date constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboardA
Get the full analytics dashboard in a single call — includes summary KPIs, call volume timeseries, call outcomes, pickup rates by number, hourly performance, and duration stats.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral transparency. It does not disclose whether the operation is read-only, its performance implications (aggregation may be slow), required permissions, or response size. The description only lists contents, not behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main purpose and efficiently lists included content. Every part earns its place; no redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (aggregating multiple metrics) and the lack of an output schema, the description adequately indicates what the tool returns. However, it omits default behavior for optional parameters (e.g., date range defaults) and does not mention pagination or response structure; a bit more detail would increase completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning beyond what the schema already provides. It lists the output categories but does not explain parameter usage or defaults. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('full analytics dashboard') and lists the included metrics, clearly distinguishing it from sibling tools that focus on individual metrics. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies through its wording ('in a single call') that this is for a consolidated view, but it does not explicitly state when to use this versus individual tools like get_call_volume or get_duration_stats. Some guidance on trade-offs would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_duration_statsB
Get call duration statistics — average, median, min, max, and p95 duration. Shows how long calls typically last.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing full burden on the description. It states what statistics are returned but fails to disclose behavioral traits such as being a read-only operation, data freshness, side effects, or any constraints. The description offers minimal transparency beyond the output values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with key information. The second sentence is slightly redundant ('Shows how long calls typically last' is implied by the first), but overall it is efficient and not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description adequately explains the returned statistics but omits details like default behavior of date parameters, time zone handling, and output format. It is sufficient for basic use but lacks completeness for an agent to fully understand invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The description adds context about the statistics but does not provide additional meaning for the parameters themselves (e.g., format requirements or behavioral implications). Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'call duration statistics', listing specific metrics (average, median, min, max, p95) and providing a concise summary. It effectively differentiates from sibling tools like 'get_call_volume' which focuses on counts rather than duration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for understanding call length but does not provide explicit guidance on when to use this tool versus alternatives like 'get_daily_summary' or 'get_call_outcomes'. It lacks 'when-to-use' and 'when-not-to-use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hourly_performanceA
Get performance metrics by hour of day (0-23). Shows call count, average duration, and cost per hour. Useful for identifying peak hours.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavior. It lists the returned metrics but does not disclose details like timezone handling, whether optional filters affect scope, or if results are sorted by hour. The description is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and key outputs. Every word is relevant, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 optional parameters and no output schema, the description provides basic context but omits details like timezone, data ordering, or whether empty hours are returned. It is minimally complete for a simple aggregation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions (e.g., start_date, end_date, agent_name). The description does not add extra meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get performance metrics by hour of day (0-23)' and lists the metrics shown (call count, average duration, cost per hour). It distinguishes from sibling tools that aggregate daily or weekly, such as 'get_daily_summary' and 'get_weekly_trends'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'Useful for identifying peak hours,' which implies the tool is for analyzing hourly patterns. However, it does not explicitly state when not to use it or provide alternative tools for different aggregations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoicesA
List all invoices for your organization from Stripe. Shows invoice details including amounts, status, and dates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only listing but does not disclose behavioral traits such as pagination, data freshness, or any limitations on the number of invoices returned. It adds some context by mentioning Stripe as the source but lacks details about side effects or scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose. No fluff, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description covers the key aspects: what it does (list invoices) and what it shows (details). Could optionally mention ordering or date range, but completeness is adequate given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in the schema, which is expected for a simple list-all tool. The description adds meaning by specifying the source (Stripe) and the type of details shown (amounts, status, dates). Per guidelines, baseline for 0 parameters is 4, and the description meets this adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all invoices from Stripe with details like amounts, status, dates. The verb 'List' and resource 'invoices' are specific, and it distinguishes from sibling tools like get_billing_alerts or get_payment_methods by focusing on invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_billing_alerts or get_credit_balance. The description does not mention when to use or not use it, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_methodsA
List all payment methods (cards) configured for your organization. Shows card brand, last 4 digits, expiry, and which is the default.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool is read-only (list), shows specific fields, and indicates the default card. No mention of authentication or rate limits, but given zero parameters, the behavioral disclosure is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description covers purpose, scope, and output fields completely. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description adds no parameter info because none exist. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all payment methods (cards) for the organization, with specific fields (brand, last 4 digits, expiry, default). This verb+resource+scope is distinct from sibling tools like get_invoices or get_billing_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. While the tool's purpose is clear, an explicit statement about when it's appropriate versus alternatives would improve usability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_phone_numbersA
List phone numbers acquired by your organization. Shows product ID (needed for make_call's from_product_id), number, country, provider, and which agent it's assigned to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for disclosing behavior. While the verb 'List' suggests a read-only operation, the description does not explicitly state it is safe, has no side effects, or require specific permissions. This is inadequate for transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous words. The first sentence states the purpose, the second provides useful detail. Perfectly sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description covers what the tool returns and even cross-references another tool (make_call). This is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and 100% schema description coverage. The description adds value by listing the returned fields (product ID, number, country, provider, assigned agent), which clarifies the output beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List phone numbers acquired by your organization,' specifying a clear verb and resource. It distinguishes itself from sibling tools like get_phone_number_trends by focusing on listing acquired numbers, and adds unique context by noting the product ID is needed for make_call's from_product_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing available phone numbers and their attributes, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_phone_number_trendsB
Get per-phone-number daily trends — calls, pickup rate, and average duration per day for each number.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. It omits behavioral details such as whether trends are aggregated across all numbers, pagination, data freshness, or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, front-loaded with purpose and key metrics. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description does not specify return structure (e.g., array of objects, keys). Missing details on how per-number granularity is represented, leaving the agent uncertain about using the tool for specific queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description adds overall context but does not enhance parameter understanding beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb 'Get' and resource 'per-phone-number daily trends', listing metrics (calls, pickup rate, average duration). This clearly distinguishes from sibling tools like get_call_counts_by_day or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_daily_summary or get_call_volume). Lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pickup_ratesA
Get pickup rate by phone number — shows total calls, answered calls, and pickup rate for each outbound number. Useful for optimizing caller IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description bears full responsibility. It accurately conveys the read-only nature of the tool and what it returns. It does not mention authorization or rate limits, but for a simple query tool, the description is sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences with no wasted words. It front-loads the main purpose and includes the key output fields, making it easy to scan quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 optional parameters and no output schema, so the description should cover return structure. It lists the returned metrics (total calls, answered calls, pickup rate) and implies a per-phone-number list. Some additional detail about response format would be helpful, but it is fairly complete given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any parameter-specific information beyond what is already in the schema. It mentions 'by phone number' but the parameters are about dates, agent, campaign, and call type, without explaining how they affect results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets pickup rate by phone number, listing the returned metrics (total calls, answered calls, pickup rate) and the use case for optimizing caller IDs. This is specific and distinguishes it from many sibling tools that focus on agents, campaigns, or versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating it is useful for optimizing caller IDs, but does not explicitly mention when not to use it or compare with alternative tools like get_phone_number_trends. The guidance is implied 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_plansA
List available plans and optionally get the features included in a specific plan. Use this to understand plan pricing, included features, and credit rates.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | No | If provided, also returns the features for this specific plan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly explains the two modes of operation (list all plans vs. get features for a specific plan) and implies a read-only behavior without stating destructive actions. Additional details on authentication or rate limits are not needed for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous information. The first sentence states the core functionality, and the second provides usage guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema, no nested objects), the description fully explains both modes of operation and the intended use. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for plan_id. The description adds value by explaining the effect of providing the parameter ('also returns the features for this specific plan'), which goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('available plans') and also clarifies the conditional behavior when a plan is specified. It clearly distinguishes from sibling tools that deal with other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the use case ('to understand plan pricing, included features, and credit rates'), providing clear context. It does not explicitly state when not to use it or list alternatives, but for a simple listing tool this is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbooksA
Read a multi_agents agent's Playbooks config: the intent router (fallback + mid-call rerouting), shared auth tools, and the SOP list (id, intent, auth level, tool count). Pass playbook_id for one playbook's full detail (prompt, tools, intent description). Reads the branch's open draft when it has one, else its head; pass branch_id to target a specific branch.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The multi_agents agent ID | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live. | |
| playbook_id | No | Return the full config of just this playbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses read-only nature, the logic for selecting draft vs head, and that passing specific parameters returns more detail. No side effects or permissions mentioned, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph of 3-4 sentences, front-loaded with main purpose and components. Efficient but could be slightly more structured with bullet points for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description adequately explains return content (config components) and parameter behaviors. Does not describe return format or errors, but sufficient for an AI agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds extra context: branch_id explains behavior when omitted and draft stacking; playbook_id says it returns full config. This adds meaningful value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool reads a multi_agents agent's Playbooks config, listing specific components (intent router, shared auth tools, SOP list). It distinguishes from sibling tools by focusing on reading config, and uses a specific verb 'Read' with clear resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use variants (with playbook_id for full detail, branch_id for targeting a branch) but does not explicitly mention when not to use or compare to alternatives like get_branch_draft. The branch draft vs head logic gives clear guidance on expected behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_revisionA
Get a single committed revision — its metadata and fully resolved config. Use list_revisions to find revision IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID | |
| branch_id | No | Branch the revision belongs to (from list_branches). Omit for the live branch; if the agent has multiple branches you'll be asked to pick one. | |
| revision_id | Yes | The revision ID (from list_revisions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description clearly indicates this is a read operation (retrieving committed revision). It doesn't disclose potential access requirements or rate limits, but for a simple get operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the core functionality, second provides usage guidance. No unnecessary words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that retrieves a specific revision, the description is complete: it specifies what is returned (metadata, config) and tells the agent how to obtain the required revision ID. No output schema is present, but the description compensates by describing the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The description adds the context that the result includes metadata and config, but doesn't provide additional per-parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves a single committed revision with its metadata and fully resolved config. It distinguishes from siblings like list_revisions (which lists IDs) and diff (which compares revisions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to use list_revisions to find revision IDs, providing clear when-to-use guidance and naming the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_breakdownA
Get a breakdown of credit usage by feature and product scope for your organization. Shows how credits are being consumed across different services (voice AI, voice models, platform).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral context. It states the tool returns a breakdown and scopes it to 'your organization,' but does not disclose permissions, rate limits, or behavior when data is absent. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core purpose and add specific service examples. No unnecessary words or repetitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and no annotations, the description adequately conveys the tool's purpose and what it returns. It could mention output format or pagination, but it's sufficiently complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. Per guidelines, baseline is 4. The description does not add parameter semantics because there are none to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function: get a breakdown of credit usage by feature and product scope. It explicitly mentions services (voice AI, voice models, platform), making it distinct from siblings like get_credit_balance or get_credit_usage, which are likely simpler totals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for detailed breakdowns but does not explicitly state when to use this tool versus alternatives like get_credit_usage or get_usage_stats. No direct comparison or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_statsA
Get call usage statistics for your organization — total calls, pickup rate, duration, costs, and unique users reached. Each metric includes current period, previous period, and percent change. Useful for understanding usage patterns and costs.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601 datetime, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601 datetime, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of transparency. It describes the returned metrics and period comparisons, but does not disclose any behavioral traits such as data freshness, permission requirements, or rate limits. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no filler. Every word adds value, making it an example of concise and well-structured documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the metrics returned but lacks details on the output structure or example. With no output schema, a bit more detail would improve completeness. However, for a simple statistics tool, the current level is average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 5 parameters with descriptions, achieving 100% coverage. The description adds no additional meaning beyond the schema, only repeating the date range implicitly. A baseline score of 3 is appropriate since the schema already provides sufficient documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns call usage statistics including total calls, pickup rate, duration, costs, and unique users. It also specifies that metrics include current period, previous period, and percent change, making the purpose unambiguous and distinct from related tools like get_call_counts_by_day or get_pickup_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Useful for understanding usage patterns and costs,' which implies when to use it but does not explicitly state when not to use it or how it differs from alternatives like get_usage_breakdown or get_daily_summary. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_voicesA
List available voices for agents. Returns voice IDs, names, gender, language, and supported models. Use the voiceId with update_agent's synthesizer.voiceConfig to change an agent's voice. A voice whose supportedModels include 'lightning-v3.1-pro' is a Lightning V3.1 Pro voice (use it with the waves_lightning_v3_1 model). Optionally include your organization's cloned voices.
| Name | Required | Description | Default |
|---|---|---|---|
| gender | No | Filter by voice gender | |
| language | No | Filter by language (e.g. 'english', 'hindi'). Case-insensitive partial match. | |
| include_cloned | No | Include your organization's cloned voices (requires auth) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that include_cloned requires auth and explains supportedModels interpretation. However, it does not mention other traits like rate limits, pagination, or whether it is a read-only operation, which is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences. First states purpose, second gives a key usage example, third explains a special model case. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description covers the essential aspects: return fields, usage with update_agent, and the cloned voice option. It could mention pagination or limits, but for a list tool it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by noting that include_cloned requires auth and provides context on how parameters relate to voice selection. It does not repeat schema details but supplements them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List available voices for agents' and specifies return fields (IDs, names, gender, language, supported models). It distinguishes the tool from siblings by detailing the relationship with update_agent and cloned voices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: how to use the voiceId with update_agent's synthesizer.voiceConfig, and how to interpret Lightning V3.1 Pro voices. It does not explicitly exclude alternatives, but no sibling tool serves the same purpose, so it's sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhook_eventsA
List recent delivery events (attempts, payloads, and outcomes) for a webhook. Use this to verify that call-start/call-end/analytics events are firing and reaching your endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | The webhook whose delivery events to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes the tool as listing events, implying a read operation, but does not explicitly state it is non-destructive, nor does it mention pagination, time range, sorting, or dependencies like the webhook needing to exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the purpose and then providing a usage example. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema), the description covers the basic purpose and use case. However, it does not describe the return format, pagination, or event structure, which would be helpful for agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single parameter webhook_id fully described. The description does not add extra parameter semantics beyond what is already in the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists recent delivery events for a webhook, specifying the verb 'list' and the resource 'delivery events'. It also provides a concrete use case (verifying webhook events) and distinguishes itself from sibling tools like get_webhooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this to verify that call-start/call-end/analytics events are firing.' It gives clear context but does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhooksA
List the organization's webhooks, or fetch a single one by ID. Each webhook includes its subscriptions — the agents and event types (pre-conversation, post-conversation, analytics-completed) it's attached to.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | No | Fetch just this webhook. Omit to list all webhooks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It accurately describes a read-only operation (list/fetch) and mentions the structure of returned data. It does not disclose potential restrictions like authentication or rate limits, but the behavior is straightforward and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core action and then add relevant detail. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 optional parameter, no output schema), the description is fully adequate. It explains both usage modes and the key response content (subscriptions, agents, event types), so an agent can understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The tool description reinforces the parameter's role by explaining the two behaviors (list all when omitted, fetch single when provided) and adds context about the response containing subscriptions, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states verb-resource pairs ('List the organization's webhooks' or 'fetch a single one by ID'), distinguishing between the two behaviors. It also details what is included in the response (subscriptions with agents and event types), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two modes of use (list all vs fetch by ID) but does not explicitly contrast with sibling tools like create_webhook or get_webhook_events. The usage context is implied rather than stated with exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weekly_trendsB
Get weekly aggregated metrics — calls, average duration, and cost per week. Good for spotting week-over-week trends.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date (ISO 8601, e.g. 2025-01-20T23:59:59Z). Defaults to now. | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter to a specific agent (partial match) | |
| start_date | No | Start date (ISO 8601, e.g. 2025-01-15T00:00:00Z). Defaults to 7 days ago. | |
| campaign_id | No | Filter to a specific campaign by ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It describes the output as aggregated metrics but does not disclose behavioral traits such as data freshness, whether results are paginated, authentication requirements, or that it is a read-only operation. The agent lacks critical 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the main purpose and key metrics, and contains no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what the response contains beyond the high-level metrics. It mentions 'calls, average duration, and cost per week' but omits structure, grouping, and additional fields. Given the moderate complexity of 5 optional parameters, the description is insufficient for an agent to fully understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all five parameters having descriptions, so the baseline is 3. The description does not add any additional meaning beyond the schema—it only mentions the output metrics, not parameter details. Thus, no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'weekly aggregated metrics', and lists specific metrics (calls, average duration, cost). However, it does not explicitly differentiate from sibling tools like get_daily_summary or get_usage_breakdown, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Good for spotting week-over-week trends,' which provides implicit usage context. However, it lacks explicit guidance on when not to use this tool or mention of alternative tools for different time granularities or metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_memberA
Invite one or more users to your organization by email. They'll receive an invitation email to join. Requires admin role on the organization. You can invite as 'member' (default) or 'admin'.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Role to assign to invited users. Default: member. | member |
| emails | Yes | Email addresses to invite (e.g. ['alice@company.com', 'bob@company.com']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that an invitation email is sent and requires admin role, but lacks details on side effects like duplicate handling, rate limits, or response behavior. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding necessary information: action, email effect, admin requirement, and role options. No wasted words; front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the description covers the basic purpose, prerequisite, and options. However, it omits error handling, response format, and edge cases (e.g., already invited users), leaving gaps for an agent to fully understand behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats schema info (email array, role enum) without adding new meaning beyond the context that role is for the invited user. No significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool invites users by email to an organization, specifying the action and resource. It distinguishes itself from siblings as there is no other invite tool among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use (inviting users by email) and includes a prerequisite (admin role) and role options. However, it does not explicitly mention when not to use or alternatives, though none exist in siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_branchesA
List the agent's branches. The live (serving) branch is marked with isLive; hasOpenDraft flags a branch that has unpublished draft changes waiting for publish_draft. Use this to find a branch_id (for make_branch_live) or to see where edits are in progress before publishing or discarding.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses flags (isLive, hasOpenDraft) and implies read-only behavior. Does not explicitly state it's non-destructive or require authentication, but adequate for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. First sentence states purpose, second adds relevant flags and use cases. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with one parameter and no output schema, the description covers core behavior, flags, and use cases. Slightly incomplete because it doesn't describe all returned fields, but sufficient for agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (agent_id) with 100% schema coverage. Description adds context that branches belong to that agent, but does not add significant meaning beyond the schema. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and resource (agent's branches), and distinguishes from sibling tools like create_branch or make_branch_live by focusing on listing and marking flags like isLive and hasOpenDraft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: to find branch_id for make_branch_live or to check edit progress before publishing/discarding. Implicitly excludes mutation uses, though could explicitly mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_callsA
Search and list calls across your organization. Use this to browse calls with filters (by status, type, date range, agent, phone number, campaign). Returns a summary list with metadata, duration, cost, and disconnection reasons. For detailed info about a specific call (status, transcript, errors, debugging), use debug_call instead.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| limit | No | Max results per page (default 20, max 100) | |
| end_date | No | End date filter (ISO 8601, e.g. 2025-01-20) | |
| call_type | No | Filter by call type | |
| agent_name | No | Filter by agent name (partial match, case-insensitive) | |
| has_errors | No | If true, only return calls that have errors | |
| start_date | No | Start date filter (ISO 8601, e.g. 2025-01-15) | |
| call_status | No | Filter by call status | |
| campaign_id | No | Filter by campaign ID | |
| phone_number | No | Filter by phone number (client-side match on fromNumber or toNumber) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that the tool returns 'a summary list with metadata, duration, cost, and disconnection reasons,' which helps understand the output. However, it does not explicitly state that the operation is read-only or safe, nor does it mention any side effects. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sentence states the core purpose; the second provides filter examples and return contents, and ends with a clear alternative. Every sentence contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no output schema, and no annotations, the description covers essential context: types of filters, what the return summary includes, and an alternative for detailed info. It could mention pagination behavior (limit/page) but the schema already covers that. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter thoroughly. The description adds value by listing categories of filters (status, type, date range, etc.) but does not provide additional meaning beyond what is in the schema. Per guidelines, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search and list calls across your organization.' It specifies the verb (search and list) and the resource (calls), and distinguishes from sibling tool debug_call by noting the latter is for detailed info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use this tool (to browse calls with filters) and explicitly mentions an alternative: 'For detailed info about a specific call... use debug_call instead.' It lacks explicit 'when not to use' statements but the alternative context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_revisionsA
List the committed revisions on a specific branch, newest first. Revisions are branch-scoped — this returns one branch's history, not a global list. Shows revision number, label, who published it, and its security-check status. Use get_revision for a single revision's config.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of revisions to skip for pagination (default 0) | |
| limit | No | Max revisions to return (default 20) | |
| agent_id | Yes | The agent ID | |
| branch_id | No | Branch whose revisions to list (from list_branches). Omit for the live branch; if the agent has multiple branches you'll be asked to pick one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description adequately discloses the behavior: it lists revisions newest first, is branch-scoped, and returns specific fields. It does not mention destructive actions or rate limits, but as a read-only list operation, the transparency is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, each serving a clear purpose: stating the action and ordering, explaining scope and output, and providing an alternative tool. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the lack of an output schema, the description covers all essential aspects: what it lists, the ordering, the fields returned, the branch scoping, and pagination hints (via 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to repeat parameter details. However, it adds valuable context for the 'branch_id' parameter, explaining that omitting it uses the live branch and that branching may prompt selection. This extra guidance justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists committed revisions on a branch, newest first, and specifies the returned fields (revision number, label, publisher, security status). It also distinguishes itself from the sibling tool 'get_revision' by directing users to use that for a single revision's config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use this tool vs. the alternative 'get_revision', and explains branch scoping and the default live branch behavior. While not exhaustive, it offers clear context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_branch_liveA
Make a branch's head revision the live (serving) configuration for the agent. Under the branch model only a branch head can serve — so this switches which branch the agent runs. Use list_branches to find branch IDs. The head must have passed its security check (otherwise this is rejected).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID | |
| branch_id | Yes | The branch to make live (from list_branches) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses effect (switches live branch) and security check requirement, but does not mention reversibility, permissions, or success/failure response. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each serving a clear purpose: purpose, context, prerequisite. No wasted words. Front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple parameters and no output schema, description covers purpose, prerequisites, and a constraint. Missing mention of what happens on success (e.g., return value or side effect), but otherwise complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds a hint about branch_id source (from list_branches) but no additional semantic value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'make' and resource 'branch's head revision the live configuration for the agent'. Distinguishes from sibling tools like list_branches (listing), create_branch (creating), and delete_branch (deleting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells to use list_branches to find branch IDs and mentions the prerequisite that the head must pass security check. Does not contrast with similar tools like publish_draft but given the distinct action, 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.
make_callA
Initiate an outbound phone call using a specific agent. The agent will call the provided phone number and follow its configured prompt. Only telephony outbound calls are supported — for webcall or chat, use app.smallest.ai.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | The agent ID to use for the call | |
| variables | No | Per-call variables to pass to the agent prompt (e.g. { prospect_name: 'John', prospect_company: 'Acme' }). These override the agent's defaultVariables for this call. | |
| version_id | No | Agent version ID to use for this call. If omitted, uses the agent's current live configuration. | |
| phone_number | Yes | Phone number to call in E.164 format (e.g. +14155551234) | |
| from_product_id | No | Telephony product ID to use as the caller ID. Must be a phone number product owned by your org. If omitted, a default number is used. Use get_phone_numbers to find available product IDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose behavioral traits such as whether the call is synchronous, what happens on failure, credit consumption, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. Every sentence adds value: first states purpose and mechanism, second clarifies scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the primary purpose, but omits return value information and behavioral context (e.g., async/sync, error handling). Given the lack of annotations and output schema, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema descriptions are detailed. The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('initiate an outbound phone call'), specifies the resource ('using a specific agent'), and distinguishes from alternatives ('for webcall or chat, use app.smallest.ai').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use (telephony outbound calls) and when not to (webcall/chat), but does not compare to other sibling tools like debug_call or test_version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_campaignA
Pause a running campaign. Active calls in progress will complete, but no new calls will be initiated. Use start_campaign to resume.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign ID to pause |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the behavioral details: active calls will complete and no new calls will be initiated, which is helpful. However, it could mention if the operation is reversible or any prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no fluff. It front-loads the action and provides the necessary behavioral detail efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential aspects: purpose, behavior, and resumption. Minor additions about error conditions could improve completeness, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and the description matches the schema's parameter description ('The campaign ID to pause'). No additional semantics are added beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Pause' and the resource 'campaign', and distinguishes from the sibling tool 'start_campaign' by mentioning it is used to resume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to pause a running campaign) and what happens (active calls complete, no new calls). It also references the complementary tool 'start_campaign' for resuming, providing good context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_draftA
Publish a branch's pending draft edits, committing them as a new revision. If the branch is live, the changes serve immediately; otherwise use make_branch_live to serve them. Publishing runs an async security check on the prompt; this tool waits for it and reports the real outcome — if the check is still running after ~60s the changes aren't committed yet (they commit automatically once it passes), and if it fails the draft stays open so you can fix the prompt and publish again. Can also discard the pending draft instead of publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Revision label (max 200 chars, e.g. 'Changed voice to yuvika') | |
| action | No | Whether to publish the draft (commit it) or discard it | publish |
| agent_id | Yes | The agent ID | |
| branch_id | No | Branch to publish (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses async security check, ~60s wait, outcome reporting, conditional commit, and failure handling. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with main action. Every sentence adds value, though slightly long. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all key aspects: main operation, branch live state, async check behavior, discard alternative. No output schema needed, but description is thorough for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds context for branch_id (omit for live) and action (discard vs publish), slightly enhancing the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with explicit verb and resource: 'Publish a branch's pending draft edits, committing them as a new revision.' Clearly distinguishes from siblings like make_branch_live and delete_branch by describing the relationship and alternative actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (to publish draft) and when not (if branch not live, use make_branch_live). Also covers discard option and async behavior with timeouts and retry guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redeem_couponA
Redeem a coupon code to add credits to your organization's balance. Use validate_coupon first to check the code before redeeming.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The coupon code to redeem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions adding credits, but does not disclose idempotency, error handling, or side effects like irreversibility. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, no wasted words. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description adequately covers the action and prerequisite. Could mention error states but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameter with a description. The tool description adds no extra meaning beyond 'coupon code', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool redeems a coupon code to add credits, with a specific verb and resource. It distinguishes itself from the sibling tool 'validate_coupon' by advising to use that first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the agent to use 'validate_coupon' before redeeming, providing clear when-to-use and when-to-avoid guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_agent_toolA
Remove a tool (by name) from a single_prompt agent. Works for any tool type (api_call, transfer_call, etc.). The change is saved to the agent's draft — publish_draft to make it live. Use get_agent_prompt to see the agent's current tool names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The exact name of the tool to remove | |
| agent_id | Yes | The agent ID to remove the tool from | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses draft behavior and exact name matching, but lacks details on error handling (e.g., if tool does not exist) or authorization requirements. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: action and object, scope, then workflow. Front-loaded, every sentence adds value. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple mutation tool. Covers draft workflow and name matching, but lacks output behavior (e.g., success/failure). No output schema, but description could mention if the tool is returned or just success indication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds minor context ('by name') but does not significantly enhance parameter understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Remove a tool'), the resource ('from a single_prompt agent'), and specifies it works for any tool type. Distinguishes from siblings like add_agent_tool and get_agent_prompt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides workflow guidance: removal saves to draft, publish_draft makes it live. Recommends get_agent_prompt to see current tools. Could be improved by stating when not to use (e.g., if agent is live and you want immediate effect).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_branchA
Rename a branch. The default branch cannot be renamed, and 'main' is reserved. Use list_branches to find branch IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New branch name (1-100 chars) | |
| agent_id | Yes | The agent ID | |
| branch_id | Yes | The branch to rename (from list_branches) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions constraints but omits behavioral traits like idempotency, side effects on live branches, permissions, or return values. Minimal disclosure beyond basic constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with purpose, then constraints and a helpful hint. Highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and key constraints, but lacks details on outcome (e.g., effect on live branches, propagation), error scenarios, or post-rename behavior. Adequate for a simple tool but incomplete for an agent to fully understand consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so schema already explains all parameters. Description adds no significant parameter-specific info beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Rename a branch' with specific verb and resource. Includes key constraints (default branch cannot be renamed, 'main' reserved) and references sibling tool list_branches for finding branch IDs, distinguishing it from other branch-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not-to-use conditions (default branch, 'main' reserved) and suggests using list_branches as a prerequisite. Lacks comparison to all sibling tools but offers sufficient context for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audience_membersA
Search for members in an audience. Supports general search across all fields, or field-specific search (e.g. by phone number or name). Returns up to 10 results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | General search term — searches across all member fields | |
| audience_id | Yes | The audience ID to search in | |
| field_filters | No | Field-specific search filters (e.g. { phoneNumber: '+1415', firstName: 'John' }). Use either this or query, not both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the result limit (up to 10) and the dual search modes, but does not state whether the operation is read-only, any authorization requirements, or potential side effects. This is adequate but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the purpose, modes, and result limit. No redundant information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 3 parameters and no output schema, the description covers the essential modes and limit. It could mention that the tool is safe/read-only or what fields are searchable, but overall it is sufficiently complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. The description adds value by explaining the two search modes and giving examples (phone number, name), clarifying the parameter usage beyond the schema descriptions. It also reiterates the mutual exclusivity, which is already in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching for members in an audience. It specifies two modes (general and field-specific) and a result limit, distinguishing it from sibling tools like get_audience_members, delete_audience_members, and add_audience_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies when to use the tool (search members), it does not explicitly state when not to use it or provide alternatives. The schema's mutual exclusivity of query and field_filters is noted but no guidance on when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_campaignA
Start a campaign to begin dialing contacts. Works on campaigns in draft or paused status. For paused campaigns, this resumes from where it left off. The campaign enters processing state and begins making calls asynchronously.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign ID to start |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: the campaign enters 'processing state' and begins dialing asynchronously, and for paused campaigns it resumes from where it left off. This adds value beyond the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: first states purpose, second specifies valid statuses, third explains behavior. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 output schema), the description covers the essential context: input requirements, valid states, and async behavior. It lacks error scenarios or return values, but for an action tool this is arguably complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter (campaign_id) with a description 'The campaign ID to start.' The tool description adds no further semantic detail, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start a campaign to begin dialing contacts.' It specifies the valid statuses (draft or paused) and distinguishes itself from siblings like create_campaign and pause_campaign, making it easy to select.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: only for drafts or paused campaigns. It implies not to use for already running campaigns, though it doesn't explicitly state exclusions. This is sufficient for the tool's simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_agentA
Start a test call against a branch — its committed head by default, its open draft (include_draft: true) to try unpublished changes, or a specific revision_id. Modes: webcall (default) or chat return LiveKit connection details; telephony places a real call to to_phone (required, E.164).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Test mode. Default webcall. telephony places a real call to to_phone. | |
| agent_id | Yes | The agent ID | |
| to_phone | No | Destination phone number in E.164 — required when mode is telephony. | |
| branch_id | No | Branch to test (from list_branches). Omit for the live branch; if the agent has multiple branches you'll be asked to pick one. | |
| revision_id | No | Test a specific committed revision. Cannot be combined with include_draft. | |
| include_draft | No | Test the branch's open draft (unpublished changes) instead of its committed head. Cannot be combined with revision_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Reveals key behavioral traits: webcall/chat return LiveKit connection details, telephony places a real call, and parameters revision_id and include_draft cannot be combined. No annotations provided, so description handles transparency well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence covers all key aspects without redundancy. Could be slightly more structured (e.g., list modes), but it is concise and front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema, and description does not fully specify what telephony mode returns (only says 'places a real call'). It mentions return for webcall/chat but omits details for all modes. Slight gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for parameter descriptions. The description adds extra context like default mode, required condition for to_phone, and mutual exclusivity, going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a test call against a branch, specifying modes, branch targets, and the ability to test drafts or revisions. It distinguishes from siblings like make_call (production) and debug_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use each mode and parameters (e.g., telephony requires to_phone), and highlights mutual exclusivity of revision_id and include_draft. However, it does not explicitly contrast with sibling tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_speechA
Convert text to speech audio using Smallest AI's Lightning TTS. Saves the audio file to the specified path. IMPORTANT: Always ask the user where to save the file before calling. Suggest ~/Desktop/.wav as default. Do NOT retry if successful — the file is saved even if inline audio rendering fails.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to synthesize into speech | |
| model | No | TTS model. lightning_v3.1 (default) or lightning_v3.1_pro (Lightning V3.1 Pro — higher quality, curated voices). Default: lightning_v3.1 | lightning_v3.1 |
| speed | No | Speech speed multiplier (0.5-2.0). Default: 1.0 | |
| language | No | Language code (e.g. en, hi, ta, es). Default: en. | en |
| voice_id | No | Voice ID to use (e.g. emily, daniel, rachel, yuvika). Use get_voices to see available voices. | emily |
| output_path | Yes | File path to save the audio to (e.g. ~/Desktop/output.wav). Ask the user where to save. | |
| sample_rate | No | Audio sample rate in Hz (8000, 16000, 24000, 44100). Default: 24000 | |
| output_format | No | Output audio format. Default: wav | wav |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: saves file, uses specific TTS engine, and that file is saved even if inline rendering fails. No annotations provided, but description covers main aspects. Could mention error handling 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences with front-loaded purpose. Imperative notes are concise and actionable. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema or annotations, description provides core functionality and usage guidance. Could elaborate on error scenarios, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. Description adds value by referencing get_voices for voice_id and emphasizing the save path behavior. Mild bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts text to speech using Smallest AI's Lightning TTS and saves to a file. It uses specific verbs and resources, and is distinct from sibling tools which are unrelated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit instructions: always ask user for save path, suggest default ~/Desktop/<name>.wav, and do not retry on success. This guides appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_audioA
Transcribe an audio file to text using Smallest AI's Pulse STT. Supports 32+ languages. IMPORTANT: Always ask the user what language the audio is in before calling this tool. Pass a file path on the user's machine (e.g. ~/Desktop/recording.wav) or a publicly accessible URL. Note: files uploaded to the chat sandbox are NOT accessible — ask the user for the actual file path on their machine or a URL instead.
| Name | Required | Description | Default |
|---|---|---|---|
| diarize | No | Enable speaker diarization (identify different speakers) | |
| language | Yes | Language of the audio. REQUIRED — ask the user. Use ISO 639-1 codes: en, hi, es, de, fr, it, pt, ta, mr, gu, bn, kn, ml, te, pa, or, ru, uk, pl, nl, sv, etc. Use 'multi' only if the user explicitly says they don't know the language. | |
| audio_url | No | Publicly accessible URL of an audio file. Either file_path or audio_url is required. | |
| file_path | No | Path to audio file on the user's machine (e.g. ~/Desktop/recording.wav, /Users/name/audio.mp3). NOT sandbox paths. Either file_path or audio_url is required. | |
| redact_pii | No | Redact personally identifiable information from transcription | |
| word_timestamps | No | Include word-level timestamps with confidence scores | |
| emotion_detection | No | Detect emotions in speech |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosure includes tool provider, language support, and input requirements. No annotations provided, so description carries full burden; it covers key behavioral aspects but lacks details on output format 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise but informative, front-loaded with purpose, then critical usage notes. Every sentence adds necessary context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: purpose, input methods, language requirement, and feature flags. No output schema, so return value omitted, but overall sufficient for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by providing concrete examples for file_path and audio_url, and reinforcing language requirement with ISO codes. Other parameters rely on schema which is clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Transcribe an audio file to text' using Smallest AI's Pulse STT. Specific verb and resource, no sibling overlaps, so differentiation is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to ask user for language, warns against using sandbox paths, and distinguishes between file path and URL usage. Clear when-to-use and what to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agentA
Update an agent — name, prompt/instructions, first message, voice, model, language, variables, the pre-call API, and other settings. Only provided fields are updated. Config changes are saved to the branch's draft (publish_draft to make them live, or test first with test_agent using include_draft); metadata (name, phone numbers, inbound toggle) applies immediately. To add/remove the agent's API-call tools use add_agent_tool / remove_agent_tool; for end_call/transfer use configure_call_actions. To manage post-call disposition metrics use add_disposition_metrics / remove_disposition_metrics (upsert/remove by identifier; existing metrics are preserved) — get_agent lists the current ones.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New agent name | |
| prompt | No | The agent's system prompt / instructions (full text). single_prompt agents only. | |
| agent_id | Yes | The agent ID to update | |
| language | No | Language configuration | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. | |
| slm_model | No | Inference LLM model for the agent | |
| description | No | Agent description | |
| synthesizer | No | Voice synthesizer configuration | |
| pre_call_api | No | Configure (or disable) the pre-call API — an HTTP request the platform makes automatically BEFORE the call connects to enrich the agent with data. Runs once and is not chosen by the LLM (unlike add_agent_tool, which the agent invokes during the call). | |
| first_message | No | First message when call starts (max 500 chars) | |
| global_prompt | No | Global system prompt for the agent (max 4000 chars). This is separate from the main prompt (the `prompt` field). | |
| background_sound | No | Background sound option | |
| denoising_config | No | Audio denoising configuration | |
| redaction_config | No | Redaction configuration | |
| transcriber_type | No | Speech-to-text (STT) transcriber. 'pulse' is the current default and recommended option (widest language support). 'pulse-legacy' is the older model, deprecated and only available to allowlisted organizations — prefer 'pulse'. Note: 'gpt-realtime'/'gpt-realtime-mini' transcribers are set automatically when using a speech-to-speech LLM model and should not be set here. | |
| default_variables | No | Default variables for the agent prompt. Example: { prospect_name: 'Default', company: 'Acme' } | |
| knowledge_base_id | No | Knowledge base ID to attach to the agent | |
| smart_turn_config | No | Smart turn detection configuration | |
| speech_formatting | No | Enable speech formatting | |
| allow_inbound_call | No | Whether to allow inbound calls | |
| enable_style_guide | No | Enable conversational style guide | |
| allow_interruptions | No | Whether to allow user interruptions | |
| pronunciation_dicts | No | Custom pronunciation dictionary | |
| voicemail_detection | No | Voicemail detection configuration | |
| telephony_product_ids | No | Telephony product IDs (see get_phone_numbers) to assign to this agent. Takes effect IMMEDIATELY — number assignment is agent metadata, not versioned config, so no draft/publish is involved. Replaces the agent's current numbers; assigning a number already attached to another agent moves it. Pass [] to unassign all. | |
| session_timeout_config | No | Session timeout configuration | |
| voice_detection_config | No | Voice activity detection configuration | |
| add_disposition_metrics | No | Post-call disposition metrics to add or update (upsert by identifier). Only these are changed; existing metrics and the summary prompt are preserved. Saved to the branch draft. | |
| call_disposition_config | No | Call disposition configuration prompt | |
| llm_idle_timeout_config | No | LLM idle timeout configuration per call type | |
| interruption_backoff_timer | No | Delay in seconds before agent resumes after interruption (0-10) | |
| remove_disposition_metrics | No | Identifiers of post-call disposition metrics to remove from the branch draft. | |
| wait_for_user_to_speak_first | No | Wait for user to speak before agent starts | |
| mute_user_until_first_bot_response | No | Mute user audio until the bot sends its first response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that only provided fields are updated, that config changes go to draft while metadata (name, phone numbers, inbound toggle) apply immediately, and that phone number assignment replaces existing numbers. It does not explicitly mention rate limits or authentication, but the mutative nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the purpose and then provides workflow and tool differentiation. It is concise but could be more structured (e.g., bullet points) for easier parsing. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (34) and no output schema, the description covers the key aspects: what fields can be updated, the draft/publish workflow, immediate updates, and alternative tools. It is missing a note on the return value (expected to be the updated agent) and that some fields are for single_prompt agents only (but schema covers that).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description groups parameters and adds workflow context (draft vs immediate) but does not add significant detail beyond the schema except for the pre-call API explanation. Schema already describes most parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an agent's settings (name, prompt, etc.) and distinguishes itself from sibling tools like add_agent_tool, remove_agent_tool, configure_call_actions, and add/remove_disposition_metrics. The verb 'update' and resource 'agent' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool vs alternatives: 'To add/remove the agent's API-call tools use add_agent_tool / remove_agent_tool; for end_call/transfer use configure_call_actions. To manage post-call disposition metrics use add_disposition_metrics / remove_disposition_metrics'. It also explains the draft/publish workflow and immediate metadata updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_billing_alertsA
Configure billing alert settings. Set up to 3 credit usage thresholds that trigger email notifications. Alerts can be sent to additional email addresses beyond the account owner.
| Name | Required | Description | Default |
|---|---|---|---|
| is_enabled | Yes | Enable or disable billing alerts | |
| thresholds | Yes | Up to 3 unique credit usage thresholds that trigger alerts (e.g. [10, 50, 100]) | |
| additional_emails | No | Up to 10 additional email addresses to receive alerts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It indicates mutation but lacks details on side effects (e.g., overriding existing settings), authentication needs, or confirmation of success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the main action, no redundant information. Efficiently communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers the core functionality but lacks usage guidelines and side-effect disclosure. Completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context: thresholds trigger email notifications and additional emails go beyond the account owner. This enriches understanding beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures billing alert settings with specific actions: setting up to 3 credit usage thresholds and adding additional emails. It differentiates from sibling get_billing_alerts by focusing on mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_billing_alerts. The description does not mention prerequisites, context, 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.
update_playbookA
Edit one playbook (SOP) on a multi_agents agent: change its prompt, intent, auth level, tools, or archive/restore it (enabled=false/true — playbooks are archived, never deleted, so call history stays resolvable). Edits land on a draft (auto-created when draft_id omitted); publish_draft to go live. The router fallback cannot be archived — repoint it first via configure_playbooks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New customer-facing label | |
| tools | No | REPLACES the playbook's API-call tools. end_call/transfer_call are agent-level config (configure_call_actions), never playbook tools — any legacy ones embedded here are dropped on write. | |
| prompt | No | New specialist prompt | |
| enabled | No | false = archive (never routed to), true = restore | |
| agent_id | Yes | The multi_agents agent ID | |
| branch_id | No | Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live. | |
| auth_level | No | Identity proof required before this playbook's own tools may run: none | weak (caller recognition — shared weak auth tools must succeed) | strong (full identity proof — weak AND strong auth tools must succeed). Default none. | |
| intent_name | No | New intent label (must stay unique on the agent) | |
| playbook_id | Yes | The playbook id to edit (see get_playbooks) | |
| knowledge_base_id | No | Per-playbook knowledge base ID ('' to clear) | |
| intent_description | No | New intent description for the classifier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behavioral traits: playbooks are archived (not deleted) to preserve call history, edits go to a draft layer, and replacing tools drops legacy end_call/transfer_call tools. However, it does not mention authentication requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that efficiently convey the tool's purpose, key behaviors, and limitations with no wasted words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no output schema), the description provides essential operational context (draft workflow, archiving, tool replacement) that helps the agent use the tool correctly. It is fairly complete, though it could mention expected return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds context beyond schema, such as the draft creation when branch_id is omitted (though it inconsistently calls it 'draft_id'), the tool replacement behavior, and the router fallback restriction. This adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Edit one playbook (SOP) on a multi_agents agent' and lists specific editable aspects (prompt, intent, auth level, tools, enabled). This distinguishes it from siblings like configure_playbooks and add_playbooks, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when and how to use the tool, including the draft/publish workflow, the fact that router fallback cannot be archived (directing to configure_playbooks), and that tools are replaced. This helps the agent decide when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookA
Update a webhook's endpoint URL, description, or custom headers. Provide at least one field. This does NOT change which agents/events are attached — subscriptions are fixed at creation. To change attachments, delete the webhook and create a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| headers | No | Replace all custom headers. Pass an empty object ({}) to remove all custom headers. | |
| endpoint | No | New delivery URL. | |
| webhook_id | Yes | The webhook to update. | |
| description | No | New description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that only certain fields are updateable and subscriptions are fixed. Could add more about return value or error conditions, but overall transparent about limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the updateable fields and then state the critical limitation. No wasted words; effective and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential usage for a simple update tool, including constraints. Missing return value information, but given no output schema and the tool's straightforward nature, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds some context (e.g., 'Provide at least one field' and note about headers), but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb (update) and the resource (webhook), listing specific fields that can be updated (endpoint URL, description, custom headers). Distinguishes from sibling tools like create_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies what the tool does and does not do: it does not change attached agents/events, and advises to delete and recreate the webhook for attachment changes. Provides clear when-to-use and when-not-to-use guidance with an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_couponA
Check if a coupon code is valid and see how many credits it would give. Does not redeem the coupon — use redeem_coupon to actually apply it.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The coupon code to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clarifies the tool is non-destructive ('does not redeem'), which is good, but could disclose more about edge cases (e.g., error conditions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information, direct and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, no output schema), the description is fully sufficient. It explains the behavior and outcome without needing more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter, but the description adds value by explaining what the parameter represents ('the coupon code to validate') and hints at the return value (credits).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check if a coupon code is valid and see how many credits it would give') and explicitly distinguishes itself from the sibling tool 'redeem_coupon'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent when to use this tool (to check validity) and when not to (to redeem), and explicitly names the alternative 'redeem_coupon'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
43 tool updates
v0.11.1- Removed
activate_version - Changed
add_agent_tool2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Existing draft to write into (stacks this change onto the draft's other edits). Omit to create a new draft from the live version.", - "type": "string" -}
- Changed
add_playbooks2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Draft to edit. Omit to start a NEW draft from the active version (its id is returned — pass it to subsequent playbooks calls so all edits land on the same draft). Changes go live only after publish_draft.", - "type": "string" -}
- Added
attach_agent_webhook - Removed
compare_version_metrics - Changed
configure_call_actions2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Draft to edit (stacks onto its other changes). Omit to create a new draft from the active version.", - "type": "string" -}
- Changed
configure_playbooks2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Draft to edit. Omit to start a NEW draft from the active version (its id is returned — pass it to subsequent playbooks calls so all edits land on the same draft). Changes go live only after publish_draft.", - "type": "string" -}
- Changed
create_agent1 field changed- changed
Input schema / properties / global_prompt / descriptionPrevious value: -"Global system prompt for the agent (max 4000 chars). For the main prompt, use update_agent_prompt after creation."New value: +"Global system prompt for the agent (max 4000 chars). For the main prompt, use update_agent after creation."
- Added
create_branch - Added
create_webhook - Added
delete_branch - Added
delete_webhook - Added
detach_agent_webhooks - Added
diff - Removed
diff_versions - Added
get_agent_webhooks - Added
get_branch_draft - Removed
get_draft - Removed
get_draft_diff - Changed
get_playbooks3 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Read this draft's config instead of the active version", - "type": "string" -} - removed
Input schema / properties / version_idRemoved value: -{ - "description": "Read this published version's config instead of the active version", - "type": "string" -}
- Added
get_revision - Removed
get_version - Added
get_webhook_events - Added
get_webhooks - Added
list_branches - Removed
list_drafts - Added
list_revisions - Removed
list_versions - Added
make_branch_live - Changed
publish_draft7 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Whether to publish the draft (make it live) or discard it"New value: +"Whether to publish the draft (commit it) or discard it" - removed
Input schema / properties / activateRemoved value: -{ - "default": true, - "description": "Activate the published version once its security check passes (default true). Pass false to publish only — activate later with activate_version.", - "type": "boolean" -} - added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch to publish (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one.", + "type": "string" +} - removed
Input schema / properties / descriptionRemoved value: -{ - "description": "Changelog description (max 2000 chars)", - "type": "string" -} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "The draft ID to publish (returned by update_agent_config, update_agent_prompt, add_agent_tool, set_pre_call_api, etc.)", - "type": "string" -} - changed
Input schema / properties / label / descriptionPrevious value: -"Version label (max 200 chars, e.g. 'Changed voice to yuvika')"New value: +"Revision label (max 200 chars, e.g. 'Changed voice to yuvika')" - changed
Input schema / requiredPrevious value: -[ - "agent_id", - "draft_id" -]New value: +[ + "agent_id" +]
- Changed
remove_agent_tool2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Existing draft to write into (stacks this change onto the draft's other edits). Omit to create a new draft from the live version.", - "type": "string" -}
- Added
rename_branch - Removed
rename_draft - Removed
set_pre_call_api - Added
test_agent - Removed
test_draft - Removed
test_version - Added
update_agent - Removed
update_agent_config - Removed
update_agent_prompt - Changed
update_playbook2 fields changed- added
Input schema / properties / branch_idAdded value: +{ + "description": "Branch whose draft to edit (from list_branches). Omit to use the live branch; if the agent has multiple branches you'll be asked to pick one. Edits stack on the branch's single draft — publish_draft to go live.", + "type": "string" +} - removed
Input schema / properties / draft_idRemoved value: -{ - "description": "Draft to edit. Omit to start a NEW draft from the active version (its id is returned — pass it to subsequent playbooks calls so all edits land on the same draft). Changes go live only after publish_draft.", - "type": "string" -}
- Removed
update_version - Added
update_webhook
5 tool updates
v0.9.4- Changed
add_playbooks2 fields changed- removed
Input schema / properties / playbooks / items / properties / add_end_call_toolRemoved value: -{ - "description": "Add an end_call action tool so the agent can hang up from this playbook when the caller is done. Without it (on any playbook) the agent cannot end calls.", - "type": "boolean" -} - removed
Input schema / properties / playbooks / items / properties / transfer_call_numberRemoved value: -{ - "description": "Add a transfer_call action tool that cold-transfers to this number (E.164, e.g. +9198...).", - "type": "string" -}
- Changed
chat_with_agent3 fields changed- changed
Input schema / properties / reply_timeout_ms / defaultPrevious value: -25000New value: +30000 - changed
Input schema / properties / reply_timeout_ms / descriptionPrevious value: -"Max time to wait for each agent reply before giving up on that turn"New value: +"Hard cap on how long to wait for a single agent turn before giving up on it" - added
Input schema / properties / settle_msAdded value: +{ + "default": 2500, + "description": "Silence after a SUBSTANTIVE agent message before the turn counts as finished. Fillers (messages ending in '…', spoken while a tool runs) are waited on much longer automatically, so this can stay small; raise it only if the agent sends its answer in several slow bursts.", + "maximum": 20000, + "minimum": 500, + "type": "integer" +}
- Added
configure_call_actions - Changed
update_agent_config1 field changed- changed
Input schema / properties / telephony_product_ids / descriptionPrevious value: -"List of telephony product IDs (phone numbers) to assign to this agent"New value: +"Telephony product IDs (see get_phone_numbers) to assign to this agent. Takes effect IMMEDIATELY — number assignment is agent metadata, not versioned config, so no draft/publish is involved. Replaces the agent's current numbers; assigning a number already attached to another agent moves it. Pass [] to unassign all."
- Changed
update_playbook3 fields changed- removed
Input schema / properties / add_end_call_toolRemoved value: -{ - "description": "true = ensure an end_call tool on this playbook; false = remove it", - "type": "boolean" -} - changed
Input schema / properties / tools / descriptionPrevious value: -"REPLACES the playbook's API-call tools (end_call/transfer_call tools are preserved unless the flags below change them)"New value: +"REPLACES the playbook's API-call tools. end_call/transfer_call are agent-level config (configure_call_actions), never playbook tools — any legacy ones embedded here are dropped on write." - removed
Input schema / properties / transfer_call_numberRemoved value: -{ - "description": "Set/replace a transfer_call tool to this number ('' to remove)", - "type": "string" -}
5 tool updates
v0.9.1- Added
add_playbooks - Added
configure_playbooks - Changed
create_agent1 field changed- added
Input schema / properties / workflow_typeAdded value: +{ + "description": "Agent type. single_prompt (default) = one prompt + tools. multi_agents = Playbooks: an intent router classifies each caller turn and routes to a specialist playbook (SOP) with its own prompt and scoped tools — configure via add_playbooks / configure_playbooks. multi_agents is domain-gated; the API returns 403 if your account isn't allowlisted.", + "enum": [ + "single_prompt", + "multi_agents" + ], + "type": "string" +}
- Added
get_playbooks - Added
update_playbook
3 tool updates
v0.9.0- Added
chat_with_agent - Changed
create_agent1 field changed- changed
Input schema / properties / synthesizer / properties / voiceConfig / properties / model / descriptionPrevious value: -"Voice model to use. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — the platform routes it to the Pro pool automatically."New value: +"Voice model to use. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — Pro pool routing (modelId) is resolved and applied automatically."
- Changed
update_agent_config1 field changed- changed
Input schema / properties / synthesizer / properties / voiceConfig / properties / model / descriptionPrevious value: -"Voice model. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — the platform routes it to the Pro pool automatically."New value: +"Voice model. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — Pro pool routing (modelId) is resolved and applied automatically."
8 tool updates
v0.8.1- Added
add_agent_tool - Changed
create_agent1 field changed- changed
Input schema / properties / synthesizer / properties / voiceConfig / properties / model / descriptionPrevious value: -"Voice model to use"New value: +"Voice model to use. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — the platform routes it to the Pro pool automatically."
- Changed
publish_draft2 fields changed- added
Input schema / properties / activateAdded value: +{ + "default": true, + "description": "Activate the published version once its security check passes (default true). Pass false to publish only — activate later with activate_version.", + "type": "boolean" +} - changed
Input schema / properties / draft_id / descriptionPrevious value: -"The draft ID to publish (returned by update_agent_config or update_agent_prompt)"New value: +"The draft ID to publish (returned by update_agent_config, update_agent_prompt, add_agent_tool, set_pre_call_api, etc.)"
- Added
remove_agent_tool - Added
set_pre_call_api - Changed
text_to_speech4 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"lightning-v3.1"New value: +"lightning_v3.1" - changed
Input schema / properties / model / descriptionPrevious value: -"TTS model to use. Default: lightning-v3.1"New value: +"TTS model. lightning_v3.1 (default) or lightning_v3.1_pro (Lightning V3.1 Pro — higher quality, curated voices). Default: lightning_v3.1" - changed
Input schema / properties / model / enumPrevious value: -[ - "lightning-v3.1", - "lightning-v3.2", - "lightning-v2", - "lightning-large" -]New value: +[ + "lightning_v3.1", + "lightning_v3.1_pro" +] - changed
Input schema / properties / output_format / enumPrevious value: -[ - "wav", - "mp3", - "pcm", - "mulaw" -]New value: +[ + "wav", + "mp3", + "pcm", + "ulaw", + "alaw" +]
- Changed
update_agent_config2 fields changed- changed
Input schema / properties / synthesizer / properties / voiceConfig / properties / model / descriptionPrevious value: -"Voice model"New value: +"Voice model. To use a Lightning V3.1 Pro voice, set model to waves_lightning_v3_1 and pick a voiceId whose supportedModels include 'lightning-v3.1-pro' (see get_voices) — the platform routes it to the Pro pool automatically." - added
Input schema / properties / transcriber_typeAdded value: +{ + "description": "Speech-to-text (STT) transcriber. 'pulse' is the current default and recommended option (widest language support). 'pulse-legacy' is the older model, deprecated and only available to allowlisted organizations — prefer 'pulse'. Note: 'gpt-realtime'/'gpt-realtime-mini' transcribers are set automatically when using a speech-to-speech LLM model and should not be set here.", + "enum": [ + "pulse", + "pulse-legacy" + ], + "type": "string" +}
- Changed
update_agent_prompt1 field changed- added
Input schema / properties / draft_idAdded value: +{ + "description": "Existing draft to write into (stacks this change onto the draft's other edits). Omit to create a new draft from the live version.", + "type": "string" +}
70 tool updates
v0.1.1- First observed
activate_version - First observed
add_audience_members - First observed
compare_version_metrics - First observed
create_agent - First observed
create_campaign - First observed
debug_call - First observed
delete_agent - First observed
delete_audience - First observed
delete_audience_members - First observed
delete_campaign - First observed
diff_versions - First observed
duplicate_agent - First observed
export_campaign_logs - First observed
get_agent - First observed
get_agent_performance - First observed
get_agent_prompt - First observed
get_agents - First observed
get_attempt_cohorts - First observed
get_audience - First observed
get_audience_members - First observed
get_audiences - First observed
get_auto_reload - First observed
get_billing_alerts - First observed
get_call_counts_by_day - First observed
get_call_outcomes - First observed
get_call_start_distribution - First observed
get_call_volume - First observed
get_campaign - First observed
get_campaigns - First observed
get_concurrency - First observed
get_credit_balance - First observed
get_credit_ledger - First observed
get_credit_usage - First observed
get_daily_summary - First observed
get_dashboard - First observed
get_draft - First observed
get_draft_diff - First observed
get_duration_stats - First observed
get_hourly_performance - First observed
get_invoices - First observed
get_payment_methods - First observed
get_phone_number_trends - First observed
get_phone_numbers - First observed
get_pickup_rates - First observed
get_plans - First observed
get_usage_breakdown - First observed
get_usage_stats - First observed
get_version - First observed
get_voices - First observed
get_weekly_trends - First observed
invite_member - First observed
list_calls - First observed
list_drafts - First observed
list_versions - First observed
make_call - First observed
pause_campaign - First observed
publish_draft - First observed
redeem_coupon - First observed
rename_draft - First observed
search_audience_members - First observed
start_campaign - First observed
test_draft - First observed
test_version - First observed
text_to_speech - First observed
transcribe_audio - First observed
update_agent_config - First observed
update_agent_prompt - First observed
update_billing_alerts - First observed
update_version - First observed
validate_coupon
TDQS
Most tools have distinct purposes for their targeted resources and actions. However, the large number of analytics tools (e.g., get_call_counts_by_day, get_call_outcomes, get_call_volume) could cause confusion if descriptions are not carefully read. Overall, boundaries are clear.
All tools follow a consistent verb_noun pattern in snake_case (e.g., create_agent, activate_version, list_calls). There are no mixed conventions or irregular naming, making it predictable for an agent.
73 tools is high for an MCP server, reflecting a broad domain covering agent management, campaigns, analytics, billing, and more. While each tool serves a specific need, the count is at the upper edge of what is manageable, potentially overwhelming for agents.
The tool set covers most core workflows for the platform: CRUD for agents/campaigns/audiences, call management, analytics, billing, and versioning. Minor gaps exist, such as updating audience members or webhook configuration, but agents can work around these.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for BubblyPhone that lets AI assistants make real phone calls, manage AI voice agents, buy phone numbers in 30+ countries, and track billing. Supports 20 tools for full telephony control.20141MIT
- AlicenseAqualityFmaintenanceMCP server for Vapi.ai that enables AI coding assistants to manage voice assistants, make outbound calls, and access call history directly from their development environment.16212MIT
- FlicenseCqualityDmaintenanceMCP server enabling interaction with Telnyx telephony, messaging, and AI assistant APIs through natural language.46-

VoIPbin MCP Serverofficial
AlicenseBqualityCmaintenanceAn MCP server that enables AI assistants to interact with the VoIPbin CPaaS platform, exposing tools for managing calls, flows, messaging, conferencing, and more.521MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smallest-inc/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server