Skip to main content
Glama

QCall AI MCP Server

Model Context Protocol server for QCall AI. Lets Claude, ChatGPT, Cursor, VS Code and any MCP client manage AI voice assistants, place calls, run campaigns, manage contacts and knowledge bases, and read call transcripts.

Setup guide: https://qcall.ai/mcp

https://mcp.qcall.ai/mcp

Claude.ai / ChatGPT / Claude Desktop (one-click): add a custom connector with the URL above and click Connect. A QCall sign-in page opens (email + password with reCAPTCHA, optional Google). After sign-in the server creates an MCP API key named after the app (e.g. Claude via claude.ai (MCP connector · you@company.com)); the client receives an OAuth access token carrying it. Revoking that key in QCall → Integrations → AI Assistants (MCP) disconnects the app.

API-key clients: create a key in QCall → Integrations → AI Assistants (MCP) (qc_live_…, shown once) and send it as a Bearer token:

# Claude Code
claude mcp add --transport http qcall https://mcp.qcall.ai/mcp \
  --header "Authorization: Bearer YOUR_QCALL_API_KEY"
// Cursor (~/.cursor/mcp.json)
{ "mcpServers": { "qcall": { "url": "https://mcp.qcall.ai/mcp",
  "headers": { "Authorization": "Bearer YOUR_QCALL_API_KEY" } } } }

Related MCP server: Corebee MCP Server

Local (stdio)

npm install && npm run build
QCALL_API_KEY=qc_live_... node dist/index.js
// Claude Desktop (claude_desktop_config.json)
{ "mcpServers": { "qcall": { "command": "node", "args": ["/path/to/mcp/dist/index.js"],
  "env": { "QCALL_API_KEY": "qc_live_..." } } } }

Tools (38)

Group

Tools

Account

qcall_get_balance, qcall_get_active_plan, qcall_list_transactions

Assistants

qcall_list_assistants, qcall_get_assistant, qcall_create_assistant, qcall_update_assistant, qcall_list_voices

Calls & numbers

qcall_place_call*, qcall_list_calls, qcall_list_campaign_call_logs, qcall_get_call_transcript, qcall_list_phone_numbers, qcall_list_dialers

Contacts

qcall_list_contact_lists, qcall_create_contact_list, qcall_list_contacts, qcall_add_contact

Campaigns

qcall_list_campaigns, qcall_create_campaign, qcall_start_campaign, qcall_pause_campaign, qcall_resume_campaign

Knowledge & analytics

qcall_list_knowledge_bases, qcall_create_knowledge_base, qcall_get_dashboard_stats

Tags

qcall_list_tags, qcall_create_tag, qcall_tag_contacts, qcall_untag_contact

CRM

qcall_search_contacts, qcall_get_contact, qcall_get_contact_call_history, qcall_list_custom_fields

Activity & callbacks

qcall_list_activities, qcall_list_callbacks, qcall_reschedule_callback, qcall_cancel_callback*

* Spends wallet balance, rings real phones or cancels a scheduled call: requires confirm: true, which the model may only set after the user approved.

Not exposed on purpose: deleting anything, buying numbers, dialer/SIP credentials, reseller and admin features. Assistant voice, AI model and knowledge-base selection are set in the QCall app (they need provider data the app's pickers build).

Security model

  • Stateless proxy: every request is executed with the caller's own key against api.qcall.ai (x-api-key); the server stores nothing.

  • MCP keys are hashed in QCall (shown once), scoped to one workspace, and cannot mint session tokens or manage other keys.

  • OAuth 2.1 (PKCE S256, Dynamic Client Registration) with AES-256-GCM sealed, stateless client ids / codes / tokens. Rotating MCP_OAUTH_SECRET disconnects every connector.

  • Unverified redirect targets get a phishing warning on the sign-in page; strict CSP and anti-framing headers.

  • Rate limits: failed auth per IP, requests per key. Logs never contain keys, tokens or bodies.

Self-hosting / deployment

npm ci && npm run build
cp .env.example .env   # set MCP_OAUTH_SECRET (>= 32 chars), GOOGLE_CLIENT_ID, RECAPTCHA_SITE_KEY
pm2 start ecosystem.config.cjs --env production

nginx proxies https://mcp.qcall.ai → 127.0.0.1:8788. Add mcp.qcall.ai to the reCAPTCHA key's domains and to the Google OAuth client's authorized origins.

Smoke test: MCP_URL=https://mcp.qcall.ai/mcp QCALL_API_KEY=qc_live_... npm run smoke

Development

npm run dev:http     # hosted mode with reload (QCALL_API_BASE_URL=http://localhost:3000/api/v1)
npm run type-check
npm test

Available Tools

25 tools
qcall_add_contactAdd contactB

Add a contact to a contact list. custom_fields keys must match the workspace's custom contact fields.

NameRequiredDescriptionDefault
emailNo
phoneYes
list_idYesContact list id
job_titleNo
last_nameNo
first_nameYes
descriptionNoNotes the assistant can use on calls
custom_fieldsNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the mutation and safety profile is covered. The description adds one useful behavioral constraint (custom_fields keys must match the workspace's custom fields), but says nothing about duplicate handling or what happens to an existing phone number, which is notable given idempotentHint=false.

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

Conciseness5/5

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

Two tight sentences with no filler, and the core action is front-loaded before the custom_fields constraint. Nothing redundant or padded.

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

Completeness2/5

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

For an 8-parameter, nested-object mutation tool with 25% schema coverage and no output schema, the description is too thin. It omits what is returned on success, duplicate/conflict behavior, and semantics for most parameters.

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

Parameters2/5

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

Schema description coverage is only 25% (list_id and description), so the description is expected to compensate but does not. It explains only the custom_fields key constraint and leaves phone, email, first_name, last_name, and job_title semantics entirely to the schema's types and constraints.

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

Purpose4/5

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

States a specific verb and resource ('Add a contact to a contact list'), which clearly separates it from the list_contacts and create_contact_list siblings. It stops short of explicitly naming or contrasting with any sibling, but 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.

Usage Guidelines2/5

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

There is no guidance on when to use this versus qcall_create_contact_list or qcall_list_contacts, and no stated prerequisites or exclusions. The only quasi-guidance is the custom_fields key constraint, which is a data requirement rather than usage context.

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

qcall_create_assistantCreate AI assistantA

Create an AI voice assistant from a name, goal, company and call script. Voice, AI model and knowledge base are set in the QCall app (https://app.qcall.ai → Assistants). Until a voice is chosen the workspace default is used.

NameRequiredDescriptionDefault
goalYesWhat the assistant must achieve on the call
nameYesAssistant name
scriptYesCall script / instructions the assistant follows
languageNoLanguage code, e.g. 'en-US', 'hi-IN'
company_nameYesCompany the assistant represents
start_speechNoFirst sentence spoken when the call connects
transfer_numberNoNumber to transfer to when the caller asks for a human (E.164)
maximum_time_per_callNoMax call length in minutes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safety profile (write op, not read-only, not destructive, not idempotent, open world), so the bar is lower. The description adds genuine context beyond that: settings deferred to the web app and the workspace-default voice fallback behavior 'until a voice is chosen'. It still omits that repeated calls create duplicate assistants despite idempotentHint=false, and says nothing about auth requirements.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the core action before the caveat about where voice/model are set. The parenthetical URL and arrow notation are slightly heavy but still earn their place by pointing the user to the relevant app screen.

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

Completeness4/5

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

For an eight-parameter mutation tool with no output schema, the definition covers the essential inputs, the deferred-configuration workflow, and the default-voice behavior, which is enough to call it correctly. The main gap is the absence of any note on duplicate creation or required permissions, though annotations partly compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, which sets the baseline at 3. The description names the four required fields (name, goal, company, script) but adds no syntax, format or meaning beyond the schema, and is silent on the four optional parameters.

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

Purpose4/5

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

States a specific verb and resource ('Create an AI voice assistant') plus the four required inputs, which is unambiguous and clearly distinct from the list/get/update assistant siblings. It stops short of explicitly naming a sibling or scoping what this tool is not, so it is clear but not maximally differentiated.

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

Usage Guidelines3/5

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

The description usefully tells the agent that voice, AI model and knowledge base are configured in the QCall app rather than here, which is a real routing hint for the caller. However it gives no explicit when-to-use vs alternative guidance (e.g., create_knowledge_base first, or when to prefer update_assistant), leaving usage largely implied.

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

qcall_create_campaignCreate campaignA

Create an AI calling campaign that calls every contact in a list with an assistant. It is created but NOT started — use qcall_start_campaign after the user approves.

NameRequiredDescriptionDefault
timezoneNoIANA timezone, e.g. 'Asia/Kolkata'
dialer_idYesDialer id from qcall_list_dialers
retry_timeNoMinutes between retries
segment_idYesContact list id
retry_countNoRetries for unanswered calls
assistant_idYesAssistant id
campaigns_nameYesCampaign name

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral state — the campaign is created but NOT started — which prevents the agent from assuming calls begin immediately. It omits what happens on invalid dialer/segment ids and confirms no idempotency behavior beyond the annotation.

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

Conciseness5/5

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

Two sentences, zero filler, and the critical constraint (created, not started) plus the follow-up action are both front-loaded. Every clause earns its place.

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

Completeness4/5

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

For a 7-parameter mutation tool with full schema coverage, no output schema, and helpful annotations, the description covers purpose, state, and next step adequately. The only gap is that it never says a campaign identifier is returned/needed to invoke qcall_start_campaign, which the agent must infer.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains every parameter, including cross-references to qcall_list_dialers and IANA timezone format. The description adds only indirect meaning ('every contact in a list' implies segment_id is a contact list) and names no parameter explicitly. Baseline 3 applies when the schema carries the load.

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

Purpose5/5

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

States a specific verb and resource ('Create an AI calling campaign') plus the scope of what the campaign does ('calls every contact in a list with an assistant'). This clearly separates it from siblings like qcall_start_campaign, qcall_place_call, and qcall_create_contact_list without the agent needing to open any schema.

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

Usage Guidelines4/5

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

Explicitly routes the agent forward: 'use qcall_start_campaign after the user approves,' establishing both the sequence and the approval gate. It does not state when *not* to use this tool or contrast it with alternatives like qcall_place_call for one-off calls, so it stops just short of the top score.

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

qcall_create_contact_listCreate contact listC

Create a new contact list (segment).

NameRequiredDescriptionDefault
nameYes
descriptionNo
is_duplicate_allowedNoAllow the same phone number twice in this list

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond that base: it does not explain duplicate-name handling, whether re-creating an existing list fails, or any post-creation side effect, which is a meaningful gap for a non-idempotent mutation.

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

Conciseness4/5

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

A single short, front-loaded sentence with no filler. It is not bloated, but its brevity reflects under-specification rather than disciplined economy.

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

Completeness2/5

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

For a 3-parameter create tool with low schema coverage and no output schema, the description is too thin. It omits the required parameter, the duplicate-allowed option, and any return/error behavior, so an agent cannot call it confidently from the description alone.

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

Parameters2/5

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

Schema description coverage is only 33% (just is_duplicate_allowed documented), so the description must compensate, but it says nothing about any parameter. It does not note that 'name' is required or explain the description field's role.

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

Purpose4/5

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

States a specific verb and resource ('Create a new contact list') and adds the '(segment)' synonym, so an agent can distinguish it from sibling list/create tools like qcall_create_campaign or qcall_create_assistant. It is clear, though it offers no explicit sibling differentiation beyond the resource name.

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

Usage Guidelines2/5

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

The description gives no when-to-use, when-not-to-use, or alternative routing guidance. It does not say how a contact list relates to qcall_add_contact or qcall_list_contact_lists, leaving usage entirely to inference.

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

qcall_create_knowledge_baseCreate knowledge baseB

Create a knowledge base from plain text (FAQs, product details, policies) that assistants can answer from.

NameRequiredDescriptionDefault
dataYesKnowledge text
titleYes
languageNoLanguage code of the text, e.g. 'en', 'hi'en

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety and repeatability profile is covered structurally. The description adds that input is plain text rather than files and that the result feeds assistants, but it omits size limits (100k chars), duplicate-creation behavior, and any auth/permission notes, so it only modestly exceeds the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with no waste; the verb and resource lead, and the parenthetical content examples earn their place. Slightly more brevity or a second clarifying clause would be needed for a 5.

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

Completeness3/5

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

For a three-parameter creation tool with no output schema and modest annotation coverage, the description covers what goes in but not what comes back (e.g., a knowledge base ID needed for later attach/update operations) or whether duplicate titles are allowed. Adequate but leaves gaps an agent would have to discover by calling.

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

Parameters3/5

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

Schema coverage is 67%: 'data' and 'language' are documented in the schema, and 'title' is self-describing. The description's 'plain text' phrasing reinforces the format of the required 'data' parameter but adds no format, length, or language-handling detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Create a knowledge base') and clarifies the accepted content ('plain text (FAQs, product details, policies)') plus the downstream consumer ('assistants can answer from'). It does not explicitly contrast itself with the sibling qcall_list_knowledge_bases, but the create-vs-list distinction is self-evident from the verb.

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

Usage Guidelines2/5

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

The description implies the scenario (content assistants should answer from) but gives no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or follow-up tools. An agent gets context but no routing rules.

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

qcall_get_active_planGet active planB
Read-onlyIdempotent

Get the workspace's active QCall subscription plan (name, limits, renewal).

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds only the scope of returned data (name, limits, renewal) and says nothing about auth requirements, caching, or freshness of the plan data, so it adds modest value over the annotations.

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

Conciseness5/5

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

A single tight sentence with the resource named first and the payload summarized in a parenthetical. No filler, nothing to trim.

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

Completeness4/5

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

There is no output schema, so the description usefully compensates by naming the key returned fields (name, limits, renewal). For a zero-required-parameter read tool this is nearly sufficient, though it omits any note about what happens when no plan is active.

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

Parameters3/5

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

Schema description coverage is 100% and the single response_format parameter is fully documented with its enum and default in the schema. The description adds nothing about the parameter, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get the workspace's active QCall subscription plan') and enumerates the returned fields (name, limits, renewal), which makes the purpose unambiguous. It does not, however, distinguish itself from the closest sibling qcall_get_balance, which an agent could plausibly confuse with plan/limits retrieval.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no mention of alternatives such as qcall_get_balance for monetary queries. The agent must infer usage purely from the name.

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

qcall_get_assistantGet AI assistantA
Read-onlyIdempotent

Get one assistant's configuration (goal, script, greeting, voice, model, transfer number...).

NameRequiredDescriptionDefault
assistant_idYesAssistant id from qcall_list_assistants
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context about what the configuration contains, but says nothing about auth requirements, error behavior when the id is invalid, or whether fields can be null.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words; the field enumeration earns its place by previewing the payload. It is terse but not truncated.

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

Completeness4/5

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

For a read-only getter with no output schema, the description helpfully previews the returned configuration fields, compensating for the absent output schema. Missing only edge-case behavior (invalid id, null fields), which is minor for this tool class.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (assistant_id and response_format enum) are fully documented in the schema itself. The description's field list describes the return content rather than the parameters, so it adds no parameter-level meaning beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('one assistant's configuration'), and enumerates the fields returned (goal, script, greeting, voice, model, transfer number). The singular 'one' implicitly distinguishes it from qcall_list_assistants, but no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: fetching a single, already-identified assistant versus listing them. There is no explicit when-to-use, no exclusions, and no mention of alternatives like qcall_list_assistants or qcall_update_assistant.

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

qcall_get_balanceGet wallet balanceA
Read-onlyIdempotent

Get the QCall wallet balance of the connected workspace. Calls and campaigns are billed from this wallet; check it before placing calls.

Returns: amount, currency.

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value by explaining the wallet's billing role, but says nothing about auth requirements, rate limits, or whether the balance is cached/real-time.

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

Conciseness5/5

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

Two short sentences front-loaded with the core action, followed by the billing rationale and return fields. No filler or redundancy.

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

Completeness4/5

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

For a zero-required-parameter read tool with no output schema, the description is nearly sufficient: it names the returned fields (amount, currency) and explains the wallet's purpose. Auth and freshness semantics are the only untold details.

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

Parameters3/5

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

Only one optional parameter (response_format) and schema description coverage is 100%, so the schema fully documents its enum values. The description adds no parameter detail, which is the expected baseline when the schema carries the burden.

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

Purpose5/5

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

States a specific verb and resource ('Get the QCall wallet balance of the connected workspace'), and the billing note distinguishes it from other read tools like qcall_list_transactions or qcall_get_active_plan that also expose account-level financial data.

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

Usage Guidelines4/5

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

Gives a clear use condition: 'check it before placing calls,' which ties the read to a concrete workflow. It does not name alternatives or state when not to use it, but the trigger context is unambiguous.

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

qcall_get_call_transcriptGet call transcriptA
Read-onlyIdempotent

Get the transcript, recording URL and duration of a campaign call by its call SID (callsid from qcall_list_campaign_call_logs). For single calls, the transcript is already in qcall_list_calls (json).

NameRequiredDescriptionDefault
call_sidYesCall SID
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive behavior, so the safety profile is covered. The description adds behavioral value by naming the concrete return payload (transcript, recording URL, duration) in the absence of an output schema. It does not mention auth requirements or rate limits, which keeps it short of a 5.

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

Conciseness5/5

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

Two sentences, no filler, with the returned fields and the SID source front-loaded and the alternative-tool note last. Every clause earns its place.

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

Completeness4/5

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

For a two-parameter read tool with full annotation coverage and no output schema, the description covers purpose, parameter origin, return content and routing. The only minor gap is that it doesn't mention the response_format choice, though the schema documents it adequately.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by adding provenance for `call_sid` (it comes from qcall_list_campaign_call_logs), which genuinely helps an agent supply the right value.

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

Purpose5/5

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

States a specific verb (Get) plus the exact resources returned (transcript, recording URL, duration) and scopes it to a campaign call identified by call SID. It also distinguishes itself from qcall_list_calls, so an agent can separate the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly tells the agent where the required `callsid` comes from (qcall_list_campaign_call_logs) and states the exclusion rule: 'For single calls, the transcript is already in qcall_list_calls (json).' When-to-use and when-not-to-use are both present.

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

qcall_get_dashboard_statsGet dashboard statisticsB
Read-onlyIdempotent

Get workspace call statistics (totals, answered, minutes, spend) as shown on the QCall dashboard.

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only that results are workspace-scoped aggregate statistics mirroring the dashboard, which is useful framing but not rich behavioral detail (no time-window semantics, no aggregation rules).

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

Conciseness5/5

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

A single front-loaded sentence that states verb, scope, and returned metrics with zero filler. Every clause earns its place.

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

Completeness4/5

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

For a read-only, zero-required-param tool with no output schema, the description partially compensates by naming the four metric families returned. Slightly incomplete in that it gives no sense of time window or aggregation granularity, but adequate for correct invocation.

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

Parameters3/5

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

There is one optional parameter with 100% schema description coverage, including a documented enum (markdown vs json) and default, so the schema does the heavy lifting. The description adds nothing about response_format or output shaping, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb (Get) and resource (workspace call statistics) and enumerates the metrics returned (totals, answered, minutes, spend). It distinguishes itself reasonably from sibling read tools such as get_balance and get_active_plan by naming the call-statistics scope, though it never explicitly contrasts with them.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, nor any prerequisites or excluded cases. The 'as shown on the QCall dashboard' phrasing implies a summary/reporting context, but the agent must infer it.

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

qcall_list_assistantsList AI assistantsA
Read-onlyIdempotent

List the workspace's AI voice assistants. Use id as assistant_id in other tools (calls, campaigns).

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered without the description. The description contributes the cross-tool id contract but says nothing about pagination, result size, or ordering; with annotations doing the heavy lifting, a 3 is appropriate.

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

Conciseness5/5

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

Two short sentences, zero filler, and the core purpose is front-loaded before the downstream id hint. Nothing here is redundant with the schema or annotations.

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

Completeness4/5

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

For a read-only, zero-required-parameter list tool with full schema coverage and rich annotations, this covers purpose plus the key downstream contract. Minor omissions (pagination, whether all assistants or a filtered subset are returned) keep it from being fully complete, and there is no output schema to lean on.

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

Parameters3/5

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

There is a single optional parameter with 100% schema description coverage, and the enum values ('markdown' vs 'json') are already fully explained in the schema. The description adds no format-selection guidance beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List the workspace's AI voice assistants'), which cleanly separates it from the singular qcall_get_assistant and the create/update siblings. It stops short of explicitly naming those siblings or the scope boundary (e.g., all assistants vs. filtered), so it is clear but not maximally differentiated.

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

Usage Guidelines4/5

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

Adds a genuine usage cue: the returned `id` is consumed as `assistant_id` in call and campaign tools, which tells an agent when this lookup is a prerequisite. It does not say when to prefer this over qcall_get_assistant (e.g., for a single known assistant), so exclusions are absent.

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

qcall_list_callsList callsA
Read-onlyIdempotent

List single calls placed from the playground/API (newest first) with status, duration, cost and sentiment. Use response_format=json to read each call's transcript (call_transcribe) and recording_url.

NameRequiredDescriptionDefault
pageNo0-based page number
statusNoall
perpageNoItems per page (max 100)
sentimentNoall
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds real behavior beyond that: results are sorted newest-first, which fields are surfaced, and that json mode exposes the transcript and recording_url while markdown is the default summary. It does not mention pagination limits or empty-result behavior, keeping it short of a 5.

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

Conciseness4/5

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

Two tight sentences, zero filler, with the core listing behavior front-loaded before the format guidance. Nothing is redundant, though it stops just short of a maximally economical definition.

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

Completeness4/5

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

No output schema exists, so the description carries the burden of describing returns and does list the returned fields, plus the format switch that controls readability. Filtering behavior on status/sentiment is the remaining gap, but for a 5-param, 0-required read tool it is largely complete.

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

Parameters3/5

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

Schema coverage is 60%, so the schema already documents page, perpage and response_format. The description adds meaning for response_format (json exposes transcript and recording_url) but is silent on the status and sentiment filters, which are enum-constrained in the schema but unexplained in either place as meaningful query narrowing.

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

Purpose5/5

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

States a specific verb and resource ('List single calls placed from the playground/API') and adds scope details: ordering (newest first) and returned fields (status, duration, cost, sentiment). The qualifier 'single calls' distinguishes it from the sibling qcall_list_campaign_call_logs without needing to open either schema.

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

Usage Guidelines3/5

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

Implies usage by noting that response_format=json is how you read transcripts and recording URLs, which is a useful routing hint. However, it never states when to use this list tool versus qcall_get_call_transcript or qcall_list_campaign_call_logs, so selection among siblings is left to inference.

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

qcall_list_campaign_call_logsList campaign call logsB
Read-onlyIdempotent

List calls made by campaigns across the workspace. Dates are YYYY-MM-DD.

NameRequiredDescriptionDefault
pageNo0-based page number
statusNo'all' or a call status such as 'completed', 'failed', 'no-answer'all
toDateNo
perpageNoItems per page (max 100)
fromDateNo
sentimentNoall
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the workspace-wide scope and a date-format convention, but says nothing about pagination behavior or result shape, so it adds only modest value beyond structured fields.

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

Conciseness4/5

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

Two short sentences with the core scope front-loaded and zero filler. The closing date-format sentence is somewhat redundant with the schema pattern but still earns its place by clarifying the two undocumented date params.

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

Completeness4/5

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

No output schema exists, yet the description need not explain returns for a read-only list tool whose annotations cover the safety profile. It remains incomplete on pagination and why one would choose it over qcall_list_calls, keeping it out of the top band.

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

Parameters3/5

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

Schema coverage is 57%: status, perpage and response_format are documented in the schema, while fromDate/toDate carry only a regex pattern and sentiment has none. The description partially compensates by specifying the YYYY-MM-DD date format, but adds no meaning for filtering semantics like what 'all' sentiment includes.

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

Purpose4/5

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

The description states a specific verb and resource — 'List calls made by campaigns across the workspace' — which is clearer than a bare 'list calls'. However, it never names the sibling qcall_list_calls or explains how campaign-scoped logs differ from the generic call list, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as qcall_list_calls or qcall_list_campaigns. No prerequisites, no exclusions, and no routing guidance are given, leaving the agent to guess from the name alone.

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

qcall_list_campaignsList campaignsB
Read-onlyIdempotent

List AI calling campaigns with their status.

NameRequiredDescriptionDefault
pageNo0-based page number
perpageNoItems per page (max 100)
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that status is returned, without noting default page size, pagination behavior, or result ordering.

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

Conciseness4/5

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

A single short sentence with the core action front-loaded and no filler. It is efficient, though extremely terse for a tool that returns paged data.

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

Completeness3/5

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

No output schema exists, so the description must carry the return-value burden; it only vaguely says 'with their status'. For a simple read-only list tool with fully documented parameters this is minimally adequate, but an agent gets no sense of the response shape or paging behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so page, perpage, and response_format are already documented in the schema. The description contributes no additional parameter meaning beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb and resource ('List AI calling campaigns') and adds that status is included in the result. It is clear on its own, but offers no differentiation from the many sibling list_* tools such as qcall_list_calls or qcall_list_campaign_call_logs.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives, nor any prerequisites or scope conditions (e.g. whether it lists all campaigns or only active ones). Usage is only inferable from the name.

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

qcall_list_contact_listsList contact listsA
Read-onlyIdempotent

List contact lists (segments). Use id as list_id for contacts and as segment_id for campaigns.

NameRequiredDescriptionDefault
pageNo0-based page number
searchNoSearch text
perpageNoItems per page (max 100)
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds the cross-tool identifier aliasing, which is real behavioral context, but says nothing about pagination, filtering behaviour, or result volume — acceptable given the annotation coverage, but not generous.

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

Conciseness5/5

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

Two short sentences, purpose first and the cross-tool identifier mapping second. Every clause carries information and nothing is padded.

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

Completeness4/5

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

For a read-only list tool with fully documented parameters and no output schema, the description covers purpose and the important downstream identifier semantics. It omits any note on pagination limits or what a list entry contains, but the schema already handles the paging inputs, so the gap is minor.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (page, search, perpage, response_format) are already documented in the schema and the baseline of 3 applies. The description adds no parameter meaning beyond that — the `id`/`list_id`/`segment_id` note concerns output identifiers, not inputs.

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

Purpose4/5

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

States a specific verb and resource ('List contact lists') and pre-empts the vocabulary mismatch by equating them with 'segments'. It does not, however, distinguish itself from near-neighbours such as qcall_list_contacts or qcall_create_contact_list, so the agent must infer the boundary from the name alone.

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

Usage Guidelines3/5

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

The second sentence is genuine cross-tool guidance: it tells the agent that the returned `id` is consumed as `list_id` by contact tools and as `segment_id` by campaign tools, which is useful chaining information. It still gives no when-to-use/when-not guidance relative to siblings like qcall_list_contacts, so usage is implied rather than stated.

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

qcall_list_contactsList contactsC
Read-onlyIdempotent

List contacts in a contact list.

NameRequiredDescriptionDefault
pageNo0-based page number
searchNoSearch text
list_idYesContact list id
perpageNoItems per page (max 100)
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond them — no note about pagination behavior, search filtering, or the response_format default, which would be valuable for a list tool.

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

Conciseness4/5

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

A single short, front-loaded sentence with no wasted words. It is efficient, though arguably under-specified rather than optimally concise.

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

Completeness3/5

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

For a read-only list tool with fully documented schema and annotations covering the safety profile, the description is minimally adequate. It does not mention pagination or the search/filter capabilities an agent would otherwise need to infer, but the schema compensates.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents page, search, list_id, perpage, and response_format. The description adds no parameter meaning beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb (List) and resource (contacts) scoped to 'in a contact list', which distinguishes it from the sibling qcall_list_contact_lists (contact lists themselves). However, it does not name any sibling or explicitly differentiate, so it falls short of a 5.

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

Usage Guidelines2/5

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

It says what the tool does but gives no guidance on when to use it versus alternatives such as qcall_list_contact_lists or qcall_add_contact, and no prerequisites or exclusions are mentioned.

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

qcall_list_dialersList dialersA
Read-onlyIdempotent

List dialers (caller numbers / carrier connections) usable as dialer_id for calls and campaigns. Credentials are never returned.

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds a genuinely useful data-sensitivity fact beyond the annotations: 'Credentials are never returned,' which tells the agent what the response will not leak.

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

Conciseness5/5

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

Two short clauses with zero filler. The primary purpose is front-loaded and the credentials caveat follows immediately where it is relevant.

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

Completeness4/5

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

For a zero-required-parameter read-only list with full schema coverage and no output schema, the definition covers purpose, downstream use, and one behavioral caveat. It is nearly complete, missing only an explicit boundary against the phone-numbers sibling.

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

Parameters3/5

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

There is only one optional parameter (response_format) and schema coverage is 100%, so the schema fully documents it with enum values and a default. The description adds nothing about format selection, which is the correct baseline when the schema does the work.

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

Purpose4/5

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

States a clear verb (List) and resource (dialers), and even defines what a dialer is ('caller numbers / carrier connections') plus its role as a `dialer_id` input to calls and campaigns. It does not explicitly distinguish itself from the nearby sibling qcall_list_phone_numbers, which is the one plausible confusion point.

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

Usage Guidelines3/5

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

Usage is implied by 'usable as `dialer_id` for calls and campaigns' – an agent can infer this is the lookup needed before placing a call or creating a campaign. However, there is no explicit when-to-use vs. when-not, and no routing to or away from qcall_list_phone_numbers.

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

qcall_list_knowledge_basesList knowledge basesB
Read-onlyIdempotent

List knowledge bases. Attach one to an assistant via knowledge_base_Id (hash_id).

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered by structured data. The description adds genuine cross-tool context by identifying the returned hash_id as the field used when attaching to an assistant, but says nothing about the returned list contents, pagination, or auth needs.

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

Conciseness5/5

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

Two short sentences with zero waste: the purpose is front-loaded and the follow-on sentence earns its place by tying the output to a real workflow. No filler or repetition of the title.

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

Completeness4/5

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

For a trivial read-only list tool with one optional enum parameter and no output schema, the description covers purpose and the key field name an agent needs to act on the result. It could note that it returns multiple knowledge bases with ids/names, but nothing essential to calling it correctly is missing.

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

Parameters3/5

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

There is a single optional parameter with 100% schema description coverage and an enum, so the schema fully documents it. The description adds no format or default information beyond the schema, which is the expected baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description uses a specific verb+resource ('List knowledge bases') that cleanly distinguishes it from the sibling qcall_create_knowledge_base and the other qcall_list_* tools. It is clear but does not explicitly differentiate scope from any near-neighbor, so it stops short of a 5.

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

Usage Guidelines2/5

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

The second sentence describes a downstream use (attaching a result to an assistant via `knowledge_base_Id`), which hints at why an agent would call this, but it never states when to use this tool versus alternatives or any preconditions. No explicit when/when-not guidance is present.

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

qcall_list_phone_numbersList phone numbersC
Read-onlyIdempotent

List phone numbers the workspace owns in QCall.

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the 'workspace owns' scoping note and says nothing about pagination, result caps, or whether the list is filtered by anything else.

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

Conciseness4/5

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

One front-loaded sentence with no filler or repetition of the title. It is efficient, though arguably under-specified for the amount of routing information an agent needs.

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

Completeness3/5

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

For a no-required-parameter read tool with full annotation coverage and a self-documenting schema, the description is minimally sufficient to invoke it. It is thin on output expectations and pagination, but no output schema exists and the operation is a simple list, so the gap is modest.

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

Parameters3/5

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

Schema description coverage is 100% and the single response_format parameter is fully documented in the schema with its enum and default, so the description does not need to explain it. Baseline 3 applies; the description adds no parameter meaning of its own.

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

Purpose4/5

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

States a specific verb ('List') and resource ('phone numbers') with the scope qualifier 'the workspace owns', which separates it from generic call or contact listings. It does not name a sibling alternative, but the resource noun is distinct enough among the qcall_list_* family that an agent can route to it.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as qcall_list_dialers or qcall_list_contacts, which are the closest overlapping resources. An agent must infer the boundary purely from the noun.

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

qcall_list_transactionsList wallet transactionsA
Read-onlyIdempotent

List recent wallet transactions (top-ups and charges) for the workspace.

NameRequiredDescriptionDefault
response_formatNo'markdown' (readable summary, default) or 'json' (raw API response)markdown

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only the 'recent' window constraint and the transaction types returned; it says nothing about pagination, how far back 'recent' reaches, or result volume.

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

Conciseness5/5

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

A single sentence with zero filler, front-loading the resource and the scope constraint. Nothing to trim.

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

Completeness4/5

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

For a no-argument read tool with rich annotations and no output schema, the definition is nearly sufficient; the only gap is the vague 'recent' window and lack of any hint about ordering or volume of returned transactions.

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

Parameters3/5

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

Schema description coverage is 100% and the single response_format enum is fully documented in the schema, so the baseline is 3. The description adds no information about response_format or any output-shaping behavior beyond what the schema already states.

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

Purpose4/5

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

States a specific verb (List) and resource (wallet transactions) and clarifies the scope ('recent', 'for the workspace') plus what counts as a transaction (top-ups and charges). It is clearly distinct from qcall_get_balance, but it never names that sibling or any alternative, so it stops short of explicit differentiation.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is for browsing transaction history rather than reading the current balance, but the description gives no when-to-use condition, no mention of when get_balance or get_active_plan would be preferred, and no prerequisites.

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

qcall_pause_campaignPause campaignA
Idempotent

Pause a running campaign (no new calls are placed until resumed).

NameRequiredDescriptionDefault
campaign_idYesCampaign id from qcall_list_campaigns

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds useful behavioral context — no new calls are placed and the pause persists until resumed — beyond the structured hints, though it omits what happens to already-queued or in-progress calls.

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

Conciseness5/5

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

A single, front-loaded sentence states the action and its effect with no wasted words. The parenthetical is a compact clarification rather than filler.

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

Completeness4/5

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

For a one-parameter, no-output-schema mutation tool with safety annotations, the description covers purpose and immediate effect adequately. Minor gaps remain around in-flight calls and whether pausing an already-paused campaign is harmless, though idempotentHint covers the latter.

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

Parameters3/5

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

Schema description coverage is 100%, so the single campaign_id parameter is fully documented. The description adds no format, source, or constraint detail beyond what the schema already provides, making baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Pause a running campaign') and explains the immediate effect. It does not, however, differentiate itself from sibling 'resume_campaign' or 'start_campaign' by name.

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

Usage Guidelines3/5

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

The parenthetical implies the tool is used to stop new calls from being placed, but there is no explicit when-to-use condition, prerequisite, or named alternative such as resume_campaign. The description gives context but stops short of routing guidance.

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

qcall_place_callPlace an AI callA

Start an outbound call where a QCall assistant talks to the person. Rings a real phone and is billed to the wallet.

Before calling: confirm the number(s), assistant and cost with the user, then set confirm=true. Get assistant_id from qcall_list_assistants and dialer_id (optional; default dialer otherwise) from qcall_list_dialers.

NameRequiredDescriptionDefault
emailNo
confirmYesMust be true. Only set it after the user explicitly approved placing this call.
dialer_idNoDialer/number id to call from (qcall_list_dialers); omit for default
last_nameNo
first_nameNoCallee first name (used in the script)
descriptionNoContext about the callee for the assistant
assistant_idYesAssistant id
phone_numbersYesNumbers to call in E.164 format (max 5)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false), and the description adds genuinely new behavior: the call is real and billed to a wallet, and confirm=true is gated on explicit user approval. It stops short of stating reversibility, cost magnitude, or failure behavior, so not a 5.

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

Conciseness4/5

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

Front-loads the core action, then the preconditions, then the ID-sourcing hints. Three compact sentences with no filler; slightly dense but every line carries information.

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

Completeness4/5

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

For a billable, non-idempotent mutation with no output schema, the description covers the critical agent-facing concerns: real-world side effect, cost, and the confirmation gate. Minor gaps remain on the identity/context fields, but annotations plus schema largely carry those.

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

Parameters4/5

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

With 75% schema coverage the baseline is 3, but the description adds value beyond the schema by naming the source tools for assistant_id and dialer_id and clarifying that dialer_id is optional with a default. It does not touch email, first_name, last_name, or description.

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

Purpose5/5

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

States a specific verb and resource ('Start an outbound call where a QCall assistant talks to the person') and adds the material scoping facts that it rings a real phone and is billed to the wallet. No sibling places calls, so it is unambiguous among the listed tools.

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

Usage Guidelines5/5

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

Explicitly prescribes the precondition ('confirm the number(s), assistant and cost with the user, then set confirm=true') and routes the agent to qcall_list_assistants and qcall_list_dialers for required/optional IDs, including the default-dialer fallback.

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

qcall_resume_campaignResume campaignA
Idempotent

Resume a paused campaign; calls continue and are billed to the wallet. Confirm with the user first, then set confirm=true.

NameRequiredDescriptionDefault
confirmYesMust be true. Only set it after the user explicitly approved resuming this campaign.
campaign_idYesCampaign id from qcall_list_campaigns

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower, and the description still adds real value the annotations do not: calls resume and are billed to the wallet, plus a mandatory user-confirmation gate. It omits what happens on an already-running or non-existent campaign, keeping it short of a 5.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and consequence, then the safety instruction. Every clause carries information and nothing is repeated.

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

Completeness4/5

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

For a two-parameter mutation with no output schema, the description supplies purpose, the financial side effect, and the confirmation requirement — everything an agent needs to invoke it correctly. Minor gap: no statement of behavior for campaigns not currently paused.

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

Parameters3/5

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

Schema description coverage is 100%: campaign_id's provenance and confirm's const=true requirement are fully documented in the schema. The description only restates the confirm=true rule, adding no syntax or format detail beyond what structured fields already provide, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Resume a paused campaign') plus the state precondition, which implicitly separates it from qcall_start_campaign and qcall_pause_campaign. It never names those siblings explicitly, so the differentiation relies on inference from the word 'paused'.

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

Usage Guidelines4/5

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

Gives an explicit invocation precondition and ordering ('Confirm with the user first, then set confirm=true'), which is clear procedural context. It does not, however, state when to prefer resume over start_campaign for a stopped-but-not-paused campaign.

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

qcall_start_campaignStart campaignA

Start a campaign: the assistant begins calling every contact in its list, billed to the wallet. Confirm with the user first, then set confirm=true.

NameRequiredDescriptionDefault
confirmYesMust be true. Only set it after the user explicitly approved starting this campaign.
campaign_idYesCampaign id from qcall_list_campaigns

TDQS

A4/5.0
Behavior4/5

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

Annotations declare a non-read-only, non-idempotent, open-world write, and the description adds genuinely useful context beyond them: the action dials every contact in the list and incurs wallet charges. It does not discuss failure/partial-dial behavior or whether the run can be stopped, but the cost disclosure is exactly the kind of context annotations cannot carry.

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

Conciseness5/5

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

Two sentences, no padding, and the highest-stakes information (what it does, that it bills, that the user must approve) is front-loaded. The confirmation instruction lands last as the immediate next action.

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

Completeness4/5

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

For a 2-parameter mutation with no output schema, the description covers effect, cost and the approval gate, which is most of what an agent needs. Minor gaps remain around what happens if contacts fail or whether the campaign can be stopped mid-run.

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

Parameters3/5

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

Schema coverage is 100% and campaign_id already points at qcall_list_campaigns while confirm already documents the user-approval requirement, so the schema does the heavy lifting. The description reinforces the confirm gate but adds no syntax or sourcing detail beyond it — baseline 3.

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

Purpose5/5

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

States a specific verb (start) and resource (campaign), then spells out the actual effect: the assistant begins calling every contact in its list, billed to the wallet. This clearly separates it from siblings like create_campaign, pause_campaign and resume_campaign.

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

Usage Guidelines3/5

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

Gives a strong precondition — confirm with the user first, then set confirm=true — which is real usage guidance. However it never distinguishes 'start' from the adjacent resume_campaign or create_campaign siblings, so the agent must infer which lifecycle operation applies.

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

qcall_update_assistantUpdate AI assistantA
Idempotent

Change an assistant's text/basic settings. Only the fields you pass change. Voice, AI model and knowledge base are set in the QCall app (https://app.qcall.ai → Assistants).

NameRequiredDescriptionDefault
goalNoWhat the assistant must achieve on the call
nameNoAssistant name
scriptNoCall script / instructions the assistant follows
assistant_idYesAssistant id
company_nameNoCompany the assistant represents
is_recordingNoRecord calls
start_speechNoFirst sentence spoken when the call connects
transfer_numberNoNumber to transfer to when the caller asks for a human (E.164)
end_call_messageNoWhat the assistant says before hanging up
maximum_time_per_callNoMax call length in minutes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds genuinely useful context beyond them: PATCH-style partial mutation ('Only the fields you pass change') and the fact that three classes of settings cannot be changed through this tool. It does not mention auth/permission requirements, but the added update semantics are substantive.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action, then the mutation semantics, then the exclusion. No filler and every clause carries information.

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

Completeness4/5

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

For a 10-parameter partial-update tool with full schema coverage and annotations covering safety/idempotency, this is nearly complete. The only untold item is the response shape, but no output schema exists and staged partial updates rarely require it; permission requirements would be the last remaining gap.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter carries its own inline description (goal, script, start_speech, transfer_number E.164 pattern, etc.), so the schema does the heavy lifting. The description adds only the meta-point that some fields (voice, model, KB) are excluded from this operation, which is a scoping note rather than parameter-level meaning.

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

Purpose4/5

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

States a specific verb and resource ('Change an assistant's text/basic settings') and scopes it with the qualifier 'text/basic settings'. The note that voice, AI model and knowledge base are configured elsewhere clarifies the boundary of this tool versus other assistant management, though no sibling tool (e.g. qcall_create_assistant) is named.

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

Usage Guidelines4/5

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

'Only the fields you pass change' gives explicit partial-update semantics, and the voice/model/knowledge-base sentence is an explicit when-not, pointing the user to the QCall app instead. It stops short of naming alternatives for creation (qcall_create_assistant) or retrieval, so it is clear but not fully exhaustive.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 25 tool updatesv1.0.0
    • First observedqcall_add_contact
    • First observedqcall_create_assistant
    • First observedqcall_create_campaign
    • First observedqcall_create_contact_list
    • First observedqcall_create_knowledge_base
    • First observedqcall_get_active_plan
    • First observedqcall_get_assistant
    • First observedqcall_get_balance
    • First observedqcall_get_call_transcript
    • First observedqcall_get_dashboard_stats
    • First observedqcall_list_assistants
    • First observedqcall_list_calls
    • First observedqcall_list_campaign_call_logs
    • First observedqcall_list_campaigns
    • First observedqcall_list_contact_lists
    • First observedqcall_list_contacts
    • First observedqcall_list_dialers
    • First observedqcall_list_knowledge_bases
    • First observedqcall_list_phone_numbers
    • First observedqcall_list_transactions
    • First observedqcall_pause_campaign
    • First observedqcall_place_call
    • First observedqcall_resume_campaign
    • First observedqcall_start_campaign
    • First observedqcall_update_assistant

TDQS

B3.4/5.0

Scored across 25 tools

Disambiguation4/5

Most tools target distinct resources and actions with clear descriptions. Minor potential confusion exists between qcall_list_calls and qcall_list_campaign_call_logs, and between qcall_get_call_transcript and the transcript embedded in qcall_list_calls, but the descriptions explicitly clarify these differences.

Naming Consistency5/5

All tools use the same qcall_ prefix and snake_case verb_noun pattern (list_, get_, create_, update_, add_, place_, start_, pause_, resume_). Naming is highly predictable and consistent throughout.

Tool Count3/5

At 25 tools, the surface is on the heavy side for the rubric's 16-25 borderline range. The domain is broad enough to justify many tools, but several simple list operations could potentially be consolidated, and the count feels dense.

Completeness3/5

Core workflows are covered, but notable lifecycle gaps exist: contacts have create/list/add but no update or delete; assistants have create/get/update but no delete; campaigns have create/start/pause/resume but no stop or delete; knowledge bases only have list and create. These missing operations could cause agent dead ends for common maintenance tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to provision phone numbers, send SMS, place AI voice calls, and react to inbound events via the Dial communication stack, all through MCP tools.
    307 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to place phone calls for reservations, appointments, confirmations, and inquiries through a self-hosted MCP server, with language support and learning capabilities.
    31 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Gives an AI assistant its own real phone number and email address so it can place and answer calls, book reservations by phone, send and receive texts, and read written summaries, structured details, and transcripts of every conversation. Also manages contacts, persona and voice settings, webhooks, and a unified call/message history through a hosted OAuth-secured MCP endpoint requiring no local code.
    MIT