Skip to main content
Glama

Server Details

Autonomous AI sales: agents, signal-based prospecting, outreach, CRM — 149 tools.

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
1.7% over 72 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3/5.0

Scored across 396 tools

Disambiguation2/5

The set contains many overlapping families: preview vs. real actions, multiple analytics/dashboard tools, list/get aliases, legacy generators, and several tools that differ only by scope or source (e.g., campaign vs. SDR analytics, list_audiences vs. list_custom_audiences). Descriptions often clarify boundaries, but with 396 tools an agent will struggle to choose reliably, especially among preview/approval wrappers and deprecated/alias tools.

Naming Consistency3/5

Most names use snake_case and domain prefixes such as crm_, sdr_, campaign, agent, and preview_, which gives a readable pattern. However, conventions are mixed: some tools are bare verb_noun (search_audience, save_audience, send_linkedin_message), some use domain prefixes, some are legacy or alias names, and naming does not always signal whether a tool reads, writes, previews, or launches.

Tool Count1/5

396 tools is an extreme mismatch for a single MCP server surface, far beyond what an agent can reliably navigate. Even though the platform spans many domains, the count is inflated by preview/action pairs, aliases, legacy tools, and granular analytics endpoints.

Completeness4/5

The surface is extremely broad and appears to cover most lifecycle operations across agents, campaigns, CRM, SDR, audiences, channels, billing, referrals, and analytics. There are some UI-only gaps (e.g., payout requests, phone-number purchase) and deprecated/legacy overlaps, but the missing pieces are minor relative to the overall domain.

Available Tools

396 tools
activate_campaign_linkedinActivate LinkedIn on a campaignAInspect

Queue the campaign audience for LinkedIn on the given (or selected/all connected) accounts and add linkedin to the channels. On an active campaign REAL connection invites start within the next cycles. Only after the user approved preview_activate_campaign_linkedin.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
account_idsNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does disclose the key behavioral risk: on an active campaign, REAL connection invites begin within the next cycles. It also notes the side effect of adding linkedin to the channels. Missing are reversibility (e.g., pause_channel to stop) and any error/idempotency behavior.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and consequence, each carrying real information. The first sentence is somewhat run-on and could be split for clarity, but nothing is wasted.

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-param mutation tool with no annotations and no output schema, the description covers the action, the fallback for account_ids, the real-world consequence, and the approval prerequisite. Return-value explanation is unnecessary since no output schema exists.

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

Parameters4/5

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

The schema documents `id` fully, and the description compensates for the undocumented `account_ids` by stating "given (or selected/all connected) accounts", which conveys the default fallback. The word "selected" remains slightly ambiguous about where that selection originates.

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+resource: queues the campaign audience for LinkedIn and adds LinkedIn to the channels. It is clearly the LinkedIn counterpart to activate_campaign_phone by naming the channel explicitly, though it doesn't draw that distinction in prose.

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 after the user approved preview_activate_campaign_linkedin" is an explicit precondition naming the sibling preview tool, and "On an active campaign REAL connection invites start within the next cycles" frames when the effect is consequential. It stops short of naming exclusions (e.g., already-active channel) or contrasting with add_campaign_linkedin_account.

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

activate_campaign_phoneActivate AI phone calls (REAL calls, credits per minute)AInspect

Schedule REAL outbound AI calls to every audience contact with a phone number; credits are charged per call minute. Same args as preview_activate_campaign_phone; only after the user approved that preview. Pause with pause_channel channel=phone_call.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
timezoneNo
call_objectiveNo
talking_pointsNo
exclude_weekendsNo
phone_number_idsYes
max_calls_per_dayNo
working_hours_endNo
working_hours_startNo
max_call_duration_secondsNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing risk. It clearly warns that calls are REAL, that credits are charged per call minute, and that preview approval is required. It stops short of explaining permissions, irreversibility, or behavior on insufficient credits, so it is strong but not exhaustive.

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

Conciseness5/5

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

Three sentences, front-loaded with the core action and cost warning. Every sentence adds distinct value: purpose, preview prerequisite, and pause alternative.

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

Completeness3/5

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

The description covers purpose, cost, approval prerequisite, and pause routing, which is adequate for a high-risk mutation. However, with ten parameters at 10% schema coverage and no annotations or output schema, it omits parameter semantics and several safety details an agent would need.

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 10% (only id is documented), so the description should compensate for the ten parameters. Instead it defers with 'Same args as preview_activate_campaign_phone', which is a useful pointer but leaves timezone, call_objective, talking_points, phone_number_ids, max_calls_per_day, working hours, and max call duration unexplained.

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, resource, and scope: scheduling REAL outbound AI calls to every audience contact with a phone number. It distinguishes itself from preview_activate_campaign_phone via the approval condition and names pause_channel as the control alternative.

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

Usage Guidelines5/5

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

Explicitly states the key precondition: use only after the user approved preview_activate_campaign_phone. It also names pause_channel channel=phone_call as the tool to use for pausing, giving a clear alternative action.

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

add_agent_documentAttach a knowledge file to the agentAInspect

Upload a material the agent learns from (PDF, DOC, DOCX, TXT, XLS, XLSX, CSV, PPT, PPTX, KEY; ≤10 MB) from a public URL or base64. Used the next time the script is generated (generate_agent_script). Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
file_urlNoPublic https URL of the file
filenameYesFile name with extension, e.g. "price-list.pdf"
file_base64NoBase64 content (use instead of file_url)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the allowed formats, the 10 MB size cap, the two source modes (public URL or base64), the deferred effect at next script generation, and that the operation is free. It omits what the tool returns and whether there is a per-agent document limit.

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 the material/accepted-formats/size constraint front-loaded and the lifecycle note second. Nothing is redundant and nothing needs to be re-read.

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 4-parameter mutation tool with no annotations and no output schema, the description supplies formats, size limit, source modes, timing of effect, and cost — enough to call it correctly. Missing pieces are minor: response shape and any cap on attached documents.

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 the baseline is 3; the description still adds real constraints the schema does not state — the whitelist of file extensions and the 10 MB maximum — which directly govern how filename/file_url must be populated. The URL-vs-base64 exclusivity is already in the schema, so no extra credit there.

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?

Specific verb (upload) plus resource (a knowledge material the agent learns from), with the accepted file formats enumerated. It is clearly distinct from remove_agent_document, but it does not differentiate itself from the related sibling generate_knowledge_from_url, leaving some ambiguity about which ingestion path to pick.

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 phrase 'Used the next time the script is generated (generate_agent_script)' tells the agent when the effect takes hold, which is useful timing context. However, there is no explicit when-to-use/when-not guidance and no mention of the alternative knowledge-ingestion tool (generate_knowledge_from_url).

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

add_campaign_linkedin_accountAdd a LinkedIn account to a campaignAInspect

Add a connected account to a running campaign; pending contacts are rebalanced across accounts and backfilled. It starts sending invites in the next cycles. No credits.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
account_idYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses side effects — pending contacts are rebalanced and backfilled, invites start in next cycles, and no credits are consumed — but it omits permission requirements, reversibility, and behavior when the campaign or account is in an unexpected state.

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

Conciseness5/5

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

Three short sentences front-load the core action and then add operational consequences and cost. Every sentence adds useful information without repetition.

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 mutation tool with no annotations and no output schema, the description covers the main side effects well. It is still incomplete regarding prerequisites, error cases, and any return/response expectations an agent might need before invoking it.

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

Parameters3/5

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

The schema documents 'id' as coming from list_campaigns but leaves 'account_id' undocumented. The description implies 'account_id' is a connected LinkedIn account, but does not state where to obtain valid account IDs or how duplicates are handled.

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 gives a specific verb and resource: add a connected account to a running campaign. It clearly distinguishes this as a campaign-account attachment operation, though it does not explicitly name alternatives such as connect_linkedin_account or remove_campaign_linkedin_account.

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 phrase 'running campaign' implies the campaign must be active, and the description notes that invites begin in later cycles. However, it gives no explicit when-to-use guidance versus connecting an account to the workspace, nor does it state prerequisites or exclusions.

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

add_custom_audience_contactsAdd contacts to a custom audienceAInspect

Append up to 5000 contacts to a custom audience. Deduplicated inside the audience by email, LinkedIn URL or phone (duplicates and contacts with no email/LinkedIn/phone are skipped). Returns added / skipped / total_contacts. No credits.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
contactsYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it discloses deduplication keys, silent skipping of duplicates and contact-less records, the return counts, and that no credits are consumed. Missing are permission/auth requirements and whether skipped rows are reported in detail.

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

Conciseness4/5

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

Three short, front-loaded clauses with no filler; the limit, dedup rule, and return values each earn their place. Slightly compressed notation ("Returns added / skipped / total_contacts") is terse but readable.

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 summarizes the returned counts, which covers the main post-call concern. Combined with the dedup/skip rules, an agent has enough to invoke and interpret the result; only auth and error behavior are unaddressed.

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 50%, so the schema already documents the audience id (UUID) and contacts array. The description adds that email, linkedin_url and phone are the dedup identity fields and that the array is capped, but doesn't clarify how other fields (position, company_name) participate.

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 (append), resource (contacts to a custom audience), and an explicit cap of 5000. This clearly distinguishes it from delete/update contact siblings and from create_custom_audience.

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 word "append" implies adding to an existing audience, which nudges the agent away from create/upload flows, but it never names alternatives such as upload_custom_audience or update_custom_audience_contact, nor states prerequisites like the audience needing to exist.

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

archive_campaignArchive a campaignAInspect

Archive the campaign: status becomes completed, all its outreach stops and it is hidden from the default lists (history stays readable with include_archived). Not reversible. Only call after preview_archive_campaign and the user's explicit approval.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: it discloses the state transition, that outreach halts, that the record is hidden from default lists, that history remains readable via include_archived, and that the action is not reversible. Those are exactly the consequences an agent needs before triggering a mutation.

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 waste, and the irreversible/state-change consequences are front-loaded before the approval gate. Every clause carries operational meaning.

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

Completeness5/5

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

For a one-parameter mutation with no annotations and no output schema, the description covers effects, reversibility, and the required approval workflow. Nothing an agent needs to call it safely 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 parameter and schema coverage is 100%, with the schema already saying it is a UUID from list_campaigns. The description adds no additional per-parameter meaning, so the baseline 3 applies; the mention of include_archived refers to a listing flag elsewhere, not to this tool's input.

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

Purpose5/5

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

The description leads with a specific verb and resource ('Archive the campaign') and immediately states the resulting state change (status becomes completed, outreach stops, hidden from default lists). The contrast with a destructive delete is implicit but clear from 'history stays readable with include_archived', so an agent can tell this apart from delete_campaign without opening another 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?

It gives an explicit prerequisite chain: call preview_archive_campaign first and obtain the user's explicit approval. That is strong when-to-use guidance. It stops short of naming alternative siblings (pause_campaign, delete_campaign) or when-not-to-use conditions, which keeps it at 4 rather than 5.

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

buy_audience_setBuy an audience setAInspect

SPENDS CREDITS (2 per contact). Purchases the set and snapshots its contacts into the workspace. Only call after the user reviewed preview_buy_audience_set output and explicitly approved the cost.

NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does the most important part: it discloses the credit spend rate (2 per contact), flags it as a mutation that copies contacts into the workspace, and imposes an approval precondition. It does not cover auth requirements, reversibility, or failure/refund behavior, but the critical cost and mutation facts are disclosed.

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

Conciseness5/5

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

Three short sentences, front-loaded with the credit-cost warning so the highest-risk fact is read first. Every sentence earns its place; nothing is redundant with 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 one-parameter mutation with no output schema, the description covers the essentials an agent needs: cost, effect on the workspace, and the required preview/approval gate. The only meaningful gap is the undocumented 'id' parameter, but no return-value explanation is needed.

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 0% and the single 'id' parameter is entirely undocumented in both schema and description. The tool name implies it is an audience set id, but the description never names or explains the parameter, so it fails to compensate for the coverage gap.

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

Purpose5/5

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

Specific verb (purchases) plus resource (the audience set) plus concrete effect (snapshots its contacts into the workspace). It also distinguishes itself from the sibling preview_buy_audience_set by casting that tool as the required prior step, so an agent can route between them 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?

States the exact condition that gates invocation: only call after the user reviewed preview_buy_audience_set output and explicitly approved the cost. This is an explicit when-to-use rule with a named prerequisite alternative, not an implied one.

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

cancel_meetingCancel a meeting for the agentAInspect

The agent will NOT join this scheduled meeting (the calendar event itself stays). Only scheduled, not yet started meetings. No undo. Only after preview_cancel_meeting and user approval.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the calendar event stays, that the action is irreversible ('No undo'), and that user approval is required. It omits authorization details and what a successful response looks like, but the core behavioral impact is clear.

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

Conciseness5/5

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

Four short sentences, each adding distinct information. The key constraint (agent does not join, event stays) is front-loaded, followed by eligibility, irreversibility, and the required preview/approval step.

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 simple one-parameter mutation tool with no annotations and no output schema, the description covers behavior, preconditions, and irreversibility well. However, it leaves the agent without guidance on sourcing the required 'meeting_id', which is a notable gap given the empty schema description.

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?

The schema has 0% description coverage for the single parameter 'meeting_id', and the description does not explain where to obtain it, what format it takes, or how it relates to tools like 'list_meetings'. The parameter name is self-descriptive, but the description adds essentially no semantic guidance.

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 ('cancel_meeting'), and clarifies the exact effect: the agent will not join, but the calendar event remains. This distinguishes it from deleting a calendar event, though it does not explicitly compare against the nearby 'remove_agent_from_meeting' sibling.

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 clear preconditions: only scheduled meetings that have not started, and only after 'preview_cancel_meeting' and user approval. It says when not to use it (started or unscheduled meetings) but does not name alternative tools for adjacent scenarios.

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

cancel_workspace_invitationCancel a pending invitationAInspect

Cancel a pending invitation (its link stops working). Admins only. Invitation ids come from get_workspace.pendingInvitations.

NameRequiredDescriptionDefault
idYesInvitation id (UUID)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations the description carries the full burden, and it does disclose two real behavioral facts: the invite link stops working and admin permission is required. It does not say whether the invitation can be re-issued, what happens if the id refers to an accepted invitation, or what a failure looks like, so the mutation's edge behavior remains opaque.

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

Conciseness5/5

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

Three short sentences, zero filler, and the highest-value facts (what it does, the effect, the permission gate, the id source) are ordered front to back.

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 mutation with no output schema, the definition covers purpose, effect, permission gate, and argument provenance. The only real gap is error/edge behavior for non-pending or invalid ids, which is minor for a tool this narrow.

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% (id is documented as a UUID), so the baseline would be 3. The description adds value beyond the schema by stating the provenance of the id — get_workspace.pendingInvitations — which the schema does not, giving the agent a concrete path to a valid 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 and resource ('Cancel a pending invitation') and immediately clarifies the scope word 'pending', which separates it from remove_workspace_member or invite_workspace_member in the sibling list. The parenthetical effect makes the operation unambiguous.

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

Usage Guidelines4/5

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

'Admins only' gives a hard precondition, and 'Invitation ids come from get_workspace.pendingInvitations' tells the agent exactly where to obtain the required argument in a large sibling set. It stops short of naming the alternative for removing an already-accepted member, but the pending-only framing covers most of the ambiguity.

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

close_campaign_threadClose an AI email conversationBInspect

Mark the conversation closed (no more AI replies). Nothing is sent.

NameRequiredDescriptionDefault
thread_idYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden. 'Nothing is sent' usefully rules out an outbound email, but it says nothing about permissions required, whether the close is reversible, whether it is idempotent, or what happens to queued AI replies -- all important for a mutation tool.

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

Conciseness5/5

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

Two short sentences with zero filler, leading with the action and following with the key consequence. Nothing is wasted and nothing important is buried.

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 single-parameter mutation tool with no output schema, the description covers the action and one behavioral fact but omits the return value and the source of thread_id. It is adequate but leaves the agent guessing about where to get the id and what comes back.

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?

There is exactly one parameter, thread_id, and its schema description coverage is 0%. The description does not explain what a thread id is or where to obtain one (for example, from list_campaign_threads), so it adds no meaning beyond the bare schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Mark the conversation closed') and clarifies the effect on the AI ('no more AI replies'). It is clear on its own, though it never names the sibling actions it is distinct from, such as takeover_campaign_thread or reply_in_campaign_thread.

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

Usage Guidelines3/5

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

'(no more AI replies)' implies the outcome an agent chooses this tool to achieve, but there is no explicit when-to-use guidance, no prerequisites, and no mention of the alternative tools (takeover, reply) that a reader must choose between.

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

connect_client_mailboxConnect an own mailbox (SMTP/IMAP app password)AInspect

Connect the user's OWN mailbox for sending. Requires SMTP/IMAP hosts+ports and an APP PASSWORD, which passes through this conversation: prefer asking the user to connect it in the app (Settings → Email Sending) unless they explicitly give you the password. WARM-UP STARTS IMMEDIATELY: the real mailbox sends and receives warm-up mail. The password is never returned. Gmail: smtp.gmail.com:465 / imap.gmail.com:993; Outlook: smtp.office365.com:587 / outlook.office365.com:993.

NameRequiredDescriptionDefault
emailYes
passwordYesApp password (never stored by Vendo; passed to the sending operator)
providerNo
from_nameNo
imap_hostYes
imap_portYes
smtp_hostYes
smtp_portYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does most of it: it warns that the app password transits the conversation, that the password is never returned, and — most importantly — that 'WARM-UP STARTS IMMEDIATELY' so the real mailbox will send and receive warm-up mail. It omits whether an existing mailbox is replaced, how to undo (disconnect_client_mailbox exists but is unnamed), and any failure/permission behavior.

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

Conciseness4/5

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

Front-loads the highest-risk facts (own mailbox, app password through the conversation, warm-up starts immediately) before the reference data. Dense but every clause carries information; the all-caps emphasis is slightly noisy but functional rather than decorative.

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 8-param, 6-required connection tool with no annotations and no output schema, the description covers credential format, security handling, host/port reference values, and the immediate side effect. Remaining gap is lifecycle context — replacement of an existing mailbox, reversibility, and what a successful call yields.

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 only 13% (only 'password' documented), so the description must compensate and largely does: it explains the password must be an APP PASSWORD and supplies concrete smtp_host:port and imap_host:port values for Gmail and Outlook, covering four weakly documented required params. It adds little for 'email', 'from_name', or why 'provider' (the one enum) matters.

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 ('Connect') and a narrowly scoped resource ('the user's OWN mailbox for sending'), which separates it from connect_content_account, connect_google_meet and the auth-flow siblings. The 'OWN' qualifier also distinguishes it from reconnect/list/disconnect mailbox tools in the same family.

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?

'prefer asking the user to connect it in the app (Settings → Email Sending) unless they explicitly give you the password' gives an explicit preferred path, an alternative, and the exact condition that licenses this tool. That is the when-to-use-vs-alternative guidance an agent needs for a credential-handling tool.

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

connect_content_accountGet a link to connect a social publishing accountAInspect

Returns a hosted URL a HUMAN must open in a browser to authorise a LinkedIn or Instagram publishing account. Give the link to the user; nothing is connected until they finish.

NameRequiredDescriptionDefault
providerYes
redirect_pathNoApp path to return to, default /settings?tab=social

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that the return value is a URL, that a human must open it in a browser, and that no connection exists until the user completes the flow — the key side-effect semantics for this tool. It omits link expiry/reuse, whether repeat calls invalidate earlier links, and any permission prerequisites, which are meaningful gaps for an OAuth-link endpoint.

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 return value and the human-in-the-loop constraint front-loaded. Every clause carries information an agent needs.

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 correctly explains what comes back (a hosted URL). For a 2-parameter tool this is nearly complete, with only link lifetime and repeat-call behavior left unspecified.

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 50%: redirect_path is documented in the schema while provider is only constrained by an enum. The description adds the mapping that provider is LinkedIn or Instagram, but contributes nothing about redirect_path behavior or whether other providers are supported, so it is roughly at the schema baseline.

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: it returns a hosted authorization URL for a LinkedIn or Instagram publishing account. The 'publishing account' framing and the human-in-browser requirement make it distinguishable from most siblings, but it never disambiguates against the near-named connect_linkedin_account, which an agent could easily confuse it with.

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?

'Give the link to the user; nothing is connected until they finish' gives clear operational context: this is step one of a two-party flow and the agent must hand off rather than attempt the connection itself. It stops short of naming alternatives (connect_linkedin_account, reconnect_* flows) or stating when not to call it, so it is not a full 5.

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

connect_crm_integrationStart connecting Kommo / HubSpot (OAuth)AInspect

Returns an authorization URL a HUMAN must open in a browser (logged in to Kommo/HubSpot) and approve within 20 minutes; the connection completes server-side. Give the URL to the user, then poll get_crm_integration. Kommo needs save_kommo_credentials first.

NameRequiredDescriptionDefault
providerYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden and does well: it discloses that the call returns (not completes) a URL, that a HUMAN must approve in a browser while logged in, a 20-minute expiry window, and that the connection finalizes server-side. It does not cover what happens if the window lapses or what error/auth states polling can return, hence 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.

Conciseness5/5

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

One dense sentence plus a short imperative follow-up; the return value and human-approval constraint are front-loaded, and every clause (20-minute limit, server-side completion, polling target, Kommo prerequisite) carries actionable 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 small, annotation-free tool with no output schema, the description supplies the return shape, the human-in-the-loop requirement, the timeout, the next tool to call, and a prerequisite — enough to invoke and drive it correctly. Only the failure/expiry path is left unspecified.

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 0%, but there is only one parameter and it is enum-constrained, so the schema largely self-documents. The description still adds provider-specific meaning by noting Kommo's save_kommo_credentials prerequisite while HubSpot has no such step.

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-result ('Returns an authorization URL') and resource (Kommo/HubSpot CRM OAuth connection), and makes the human-in-browser requirement explicit. An agent can immediately distinguish this from get_crm_integration, disconnect_crm_integration, and save_kommo_credentials among its many siblings.

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 clear operational sequencing: hand the URL to the user, then poll get_crm_integration, and for Kommo call save_kommo_credentials first. It does not state the negative case (e.g. don't call if an integration already exists — check list_crm_integrations first), which is the only missing routing guidance.

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

connect_google_meetConnect Google Meet (invite address)AInspect

Turn on the Google Meet channel the way the app does: returns the agent's own invite address (agent-xxxxxxxx@meet.vendo-ai.com). Invite that address to any Google Calendar event with a Meet link and the agent joins automatically. No Google login needed. Also saves the meeting settings. Free to connect; meeting minutes are billed.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
languageNoMeeting language code, e.g. "en"
auto_joinNo
meeting_modeNopresentation = shares the agent's slides (needs slides)
greeting_messageNo
join_before_minutesNoJoin N minutes before start (default 1)

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses auth requirements ('No Google login needed'), side effects ('Also saves the meeting settings'), and billing ('Free to connect; meeting minutes are billed'). It omits idempotency or behavior when the channel is already enabled, but the essential behavioral traits are surfaced.

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?

Four tight sentences, front-loaded with the action and its return value, followed by operational and billing notes. Nothing feels bloated, though the 'Free to connect' clause is somewhat marketing-flavored.

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, but the description explicitly tells the agent what is returned (the invite address), and it covers auth, billing, and the settings-save side effect. For a 6-parameter setup tool the main remaining gap is the meaning of optional parameters, but overall an agent has enough to call it correctly.

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

Parameters3/5

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

Schema coverage is 67% and the description adds essentially no parameter-level meaning — it does not explain auto_join, greeting_message, meeting_mode, or join_before_minutes, and only vaguely gestures at 'meeting settings'. The schema does the work for the documented params, but the uncovered ones get no help.

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 ('Turn on the Google Meet channel') and states the concrete output (the agent's invite address). It is distinct from sibling tools like get/update_google_meet_settings or disconnect_google_meet, though it does not name any sibling explicitly, relying on the reader to infer the contrast.

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?

It explains what to do with the result ('Invite that address to any Google Calendar event with a Meet link'), which gives workflow context. But it never states when to prefer this over the related settings, analytics, or disconnect tools, nor what to do if the channel is already connected; usage is implied rather than directed.

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

connect_linkedin_accountGet a link to connect a LinkedIn accountAInspect

Returns a hosted URL that a HUMAN must open in a browser to authorise a LinkedIn account. This tool cannot complete the connection itself — give the link to the user. No account exists until they finish the flow.

NameRequiredDescriptionDefault
campaign_idNoOptionally bind the new account to a campaign

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does it well: it discloses the human-in-the-loop requirement (a person must open a browser), that the tool cannot finish the connection, and that no account exists until the flow completes. It omits link expiry or permission requirements, 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?

Three tight sentences, each earning its place, with the core behavior (returns a URL a human must open) front-loaded. No filler.

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

Completeness4/5

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

For a one-parameter, no-output-schema tool, this is essentially complete: it explains the return (a hosted URL) and the required follow-up action. It could note what happens after authorisation (e.g. where the account surfaces), but nothing needed to invoke 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?

Schema coverage is 100% and the single optional campaign_id is documented in the schema, so the baseline is 3. The description adds no further detail about that parameter, but it doesn't need to given 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?

The description states a specific verb and resource: it returns a hosted URL to authorise a LinkedIn account, and clarifies why it cannot act on its own. It distinguishes itself implicitly from reconnect-style siblings by stressing that no account exists yet, though it does not name those alternatives 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?

It gives clear workflow guidance ('give the link to the user', 'cannot complete the connection itself') but never states when to choose it over reconnect_linkedin_account, disconnect_linkedin_account, or list_linkedin_accounts. Usage is implied rather than contrasted.

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

connect_telegram_botConnect a Telegram bot to the agentBInspect

The user creates a bot with @BotFather, gets the HTTP API token, and passes it here. After that, all messages to the bot are answered by the agent.

NameRequiredDescriptionDefault
idYes
bot_tokenYesTelegram Bot API token from @BotFather

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the resulting behavior — all messages to the bot are answered by the agent — which is genuine value. But it omits permissions/auth requirements, idempotency or replacement semantics for an existing connection, and error behavior on an invalid token.

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 that front-load the setup steps and end with the effect of connecting. No filler, though it could be slightly more explicit about the id parameter without extra length.

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 two-parameter mutation with no annotations and no output schema, the description covers the workflow and the post-connection behavior but leaves the 'id' parameter and the success/error outcome semantics unaddressed. Adequate but with clear gaps.

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

Parameters2/5

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

Schema coverage is only 50%. The description's token guidance ('gets the HTTP API token, and passes it here') largely restates the schema's own 'Telegram Bot API token from @BotFather' description, and the required 'id' parameter is never explained in schema or description. Little net meaning is added.

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+resource (connect a Telegram bot) and describes the end-to-end setup flow, so the agent knows exactly what the call accomplishes. It is implicitly distinguished from siblings like disconnect_telegram_bot and get_telegram_bot_info, though it never names them.

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 gives useful prerequisite context: the user must first create a bot with @BotFather and obtain the HTTP API token before calling. However, it never states when to use this versus disconnect_telegram_bot or get_telegram_bot_info, nor what happens if a bot is already connected.

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

connect_whatsapp_accountGet a WhatsApp connect linkAInspect

Returns a hosted link; the user opens it and scans the QR code with WhatsApp (Linked devices) — that links a REAL phone number to the workspace. Poll list_whatsapp_accounts until status is "ok". Free. Only after preview_connect_whatsapp_account and the user's approval.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does well: it discloses that the operation is out-of-band (user must open a link and scan), that it links a REAL phone number, that it is asynchronous and must be polled to completion, and that it costs nothing ('Free'). That covers side effects, workflow shape and cost — the traits an agent most 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?

Three compact sentences, front-loaded with the return value and the user action, then the polling step, then the precondition. Every clause carries distinct operational information; nothing is repeated from the title or schema.

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

Completeness5/5

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

With no output schema and no parameters, the description must supply return shape, user-side steps, completion check and cost — and it does all four. An agent can execute the whole flow from this text alone without opening another definition.

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?

Zero parameters, so the baseline is 4; there is nothing the description could add. Its mention of the returned link is output information rather than parameter guidance, which is appropriate here.

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 concrete verb and artifact ('Returns a hosted link') plus the exact user action that completes it (scan QR code via WhatsApp Linked devices). It also names the real-world effect — linking an actual phone number to the workspace — which separates it from siblings like connect_telegram_bot or connect_linkedin_account.

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?

Explicit gating: 'Only after preview_connect_whatsapp_account and the user's approval' names the required predecessor tool and the consent condition. It also names the follow-up tool (list_whatsapp_accounts) and the success state to poll for ('ok'), leaving nothing to inference.

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

create_agentCreate a new agentAInspect

Create an AI agent like step 1 of the app's builder. Choose its direction: purpose "sales" (default), "support" or "info". The agent starts in DRAFT and contacts nobody. Needs at least 1 credit on the balance (checked, not charged). Fails with a plan-limit error when all agent slots are used (see get_agent_plan_limits). Next: set_agent_company → generate_agent_script → channels.

NameRequiredDescriptionDefault
nameYesAgent's display name, e.g. 'Anna from Acme'
genderNoVoice/face gender (default female)
purposeNosales = sales agent, support = customer support, info = information assistant
descriptionNo1-2 sentences about what the agent does
avatar_presetNoPreset face avatar-1 … avatar-20 (male: 1,4,6,8,10-15; female: 2,3,5,7,9,16-20). For your own photo use set_agent_avatar_from_url afterwards

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden and does so well: it discloses that the agent starts in DRAFT, contacts nobody, that the credit check is performed but not charged, and the exact plan-limit failure mode. It still omits what the response returns (e.g., the new agent ID) and any permission/role prerequisites.

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-loaded with the core action, then state, then constraints, then next steps — a sensible information order. It is dense but nearly every clause carries operational value; the 'like step 1 of the app's builder' analogy is the only slightly decorative phrase.

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 creation tool with no output schema and no annotations, this covers state, side effects, cost, failure mode, and follow-on calls. The one real gap is that it never tells the agent what object comes back, which matters since no output schema exists to compensate.

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 the schema already documents all five parameters and the baseline is 3. The description adds genuinely new information: the default for purpose is 'sales', which the enum description never states, and it signals that avatar can be set later via set_agent_avatar_from_url.

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 agent'), names the builder step it corresponds to, and enumerates the direction values with a default. An agent can distinguish this from duplicate_agent or update_agent without opening 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 sequences the tool in a workflow ('Next: set_agent_company → generate_agent_script → channels') and routes plan-limit questions to get_agent_plan_limits. It does not say when to prefer duplicate_agent over creating from scratch, but the primary usage context is clear.

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

create_agent_connectionAdd a channel to an agentAInspect

Add a channel. WEBSITE_WIDGET needs website_url; new widgets get the app defaults (Modern design) plus your widget_config — then get_widget_embed_code. WEBSITE_BUTTON: just creates the channel (style it in get_widget_embed_code). PRESENTATION_WIDGET = publish the Slide Presenter (optional website_url). GOOGLE_MEET: prefer connect_google_meet. PHONE_CALL: prefer setup_phone_agent. Telegram → connect_telegram_bot; WhatsApp → connect_whatsapp_account. A second widget for the same URL updates the existing one. Free. Interactive cards in chat need design "modern"; in voice they need set_agent_voice screen_cards=true.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
nameNo
typeYes
website_urlNoSite where the widget/presentation is installed
widget_configNoWebsite widget settings (only what you pass changes; texts/theme are merged)
phone_call_configNoVoice Call texts only; number, voice and inbound are set with setup_phone_agent
google_meet_configNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses cost ("Free"), default behavior (new widgets get app defaults / Modern design), merge semantics for widget_config, and an important non-obvious side effect (a second widget for the same URL updates the existing one instead of creating a duplicate). It does not mention permission/auth requirements or what the call returns (connection object vs id), which is the remaining gap.

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-loaded with the core action and then organized per type, with no filler sentences. The telegraphic style (arrows, semicolons, sentence fragments) is dense but every line carries a distinct rule; slightly more structure would make the type-by-type rules easier to scan.

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, nested-object tool with no annotations and no output schema, the description covers the ambiguous decisions: which type to pick, which params matter per type, what happens on duplicate URL, and the follow-up call for embedding. What it lacks is the return value and any error/permission behavior, though the rich schema absorbs most of the parameter burden.

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 57% with heavy nested objects, so the description must compensate, and it does for the highest-value parameter semantics: it says website_url is required specifically for WEBSITE_WIDGET, optional for PRESENTATION_WIDGET, and unnecessary for WEBSITE_BUTTON, and it constrains design/voice settings by scenario. It adds little on the config sub-objects beyond what the schema already documents, so it is not a 5.

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 the operation (add a channel/connection to an agent) and then spells out what each of the five enum types produces. It explicitly routes away from siblings (GOOGLE_MEET → connect_google_meet, PHONE_CALL → setup_phone_agent, Telegram → connect_telegram_bot, WhatsApp → connect_whatsapp_account), so an agent can tell this apart from every adjacent tool without opening a 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?

Gives per-type when-to-use rules and named alternatives for four channel types, plus the required follow-up step (get_widget_embed_code) and the styling split between WEBSITE_WIDGET and WEBSITE_BUTTON. It also states the interactive-card prerequisite (design "modern" in chat, screen_cards=true in voice), which is genuine decision guidance rather than description of the payload.

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

create_campaignCreate a campaign (DRAFT, not launched)AInspect

Create a classic campaign in DRAFT — nobody is contacted until launch_campaign. Needs an audience (audienceId from save_audience/list_audiences, OR customAudienceId of a READY uploaded/CRM list) and should get an agentId (a campaign cannot be launched without an agent: AGENT_REQUIRED). branchId = CRM branch for replies (crm_list_branches; null = General). Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. Ids are checked against the workspace. Free, no sending.

NameRequiredDescriptionDefault
nameYes
agentIdNoSales agent id (list_agents). Required before launch.
branchIdNoCRM branch id for replies; null = General
settingsNo
audienceIdNoCampaign audience id
descriptionNo
customAudienceIdNoInstead of audienceId: id of a READY custom audience (uploaded CSV/CRM list); an audience is created from it

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that nothing is contacted until launch_campaign, that the operation is free (no credit spend), that ids are validated against the workspace, and that managed emailSenderMode requires a paid plan. It omits permissions requirements and what the response contains (e.g. the new campaign id), 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.

Conciseness3/5

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

The critical facts (DRAFT, audience, agentId, branchId) are correctly front-loaded. However, the trailing run-on enumeration of thirty-plus setting names duplicates the schema and inflates the description without adding meaning, diluting the useful signal.

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 tool with nested objects, no output schema and moderate schema coverage, the description covers the hard prerequisites, the draft safety semantics and the cost profile. The main remaining gap is that it does not say what is returned or what to call next with the created id, though the DRAFT/launch framing implies it.

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?

At 57% schema coverage the description partially compensates, and it does clarify the audienceId vs customAudienceId choice and that settings are all optional. But its long settings enumeration largely restates field names already documented in the schema, and several parameters (speedTier, trackLinks, stopOnNegative, clientEmailProvider) are never mentioned at all.

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 plus the resulting lifecycle state ("Create a classic campaign in DRAFT") and immediately distinguishes it from launch_campaign. An agent can tell this is the creation step, not the activation step, without opening 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?

Gives explicit prerequisites: an audience via audienceId (from save_audience/list_audiences) OR customAudienceId of a READY list, an agentId, and branchId from crm_list_branches. It also names the AGENT_REQUIRED failure mode if agentId is skipped. It does not contrast with update_campaign for the modify case, but the create-then-launch flow is unambiguous.

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

create_custom_audienceCreate an empty custom audienceAInspect

Create an empty, named custom audience (status ready) — then fill it with add_custom_audience_contacts. To create one from a file use upload_custom_audience. No credits.

NameRequiredDescriptionDefault
nameYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does add real behavioral value — the audience starts empty and ready, costs no credits, and is filled via a separate call — but it omits whether the name must be unique, what identifier comes back (which the follow-up call presumably needs), and any permission prerequisites.

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

Conciseness5/5

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

A single front-loaded sentence with two trailing clauses, each of which earns its place (next step, alternative path, cost). No repetition of the title or name.

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 creation tool with no output schema, the description covers purpose, prerequisites, cost, and the follow-up call. The main gap is the return value (audience id), which the chaining instruction implies exists but never names.

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 0% for the single required `name` parameter, so the description is the only source of semantics. It conveys that the audience is 'named' but adds no constraints or rules beyond the schema's own minLength/maxLength, which an agent could read directly.

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?

A specific verb plus resource ('Create an empty, named custom audience'), with initial state disclosed ('status ready'). It also names the two siblings it is not — add_custom_audience_contacts and upload_custom_audience — so the agent can separate it from them without reading schemas.

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?

Explicit routing: use this first then fill it with add_custom_audience_contacts; use upload_custom_audience when the source is a file. The condition that selects the alternative is stated outright, leaving nothing to inference.

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

create_widget_test_pageCreate a test page for a widgetAInspect

Create (or return the existing) private, unlisted test page with this website widget installed, to try it before adding it to a real site. Only the agent's creator can do this. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses important behavioral traits: the page is private and unlisted, the operation is idempotent in that it returns the existing page instead of duplicating it, only the creator can perform it, and it is free. It does not describe the return format, expiration, or lifecycle of the test page, which keeps it from 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?

The description is three short sentences with the action front-loaded and no wasted text. The authorization and cost notes are compact and each earns its place by adding operational context.

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 creation tool with full schema coverage and no annotations, the description covers the key context: privacy, idempotency, permission constraints, cost, and intended pre-deployment use. The main gap is that it does not say what the returned test page resource looks like, since no output schema exists.

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 required parameters are already well documented in the input schema with their source tools (list_agents and list_agent_connections). The description adds no parameter-specific detail beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb and resource: create or return an existing private, unlisted test page with the website widget installed. It clearly explains the purpose (trying a widget before adding it to a real site), but does not explicitly distinguish this from sibling tools such as get_widget_embed_code.

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

Usage Guidelines4/5

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

It states clear usage context: use this to try the widget before adding it to a real site, and only the agent's creator can do it. It does not name alternatives or when-not-to-use conditions, but the intended scenario is evident.

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

crm_add_commentAdd an internal comment on a leadAInspect

Internal team note on the lead card (not visible to the lead). Mentioned users (ids from crm_list_workspace_members) get a CRM notification.

NameRequiredDescriptionDefault
idYes
bodyYes
mentionsNoUser ids to @mention

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and it does disclose the one non-obvious side effect: mentioned users receive a CRM notification. It omits whether the comment is editable or deletable afterwards, whether the acting user's identity is recorded, and any permission requirements for commenting on a lead.

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 the essential visibility constraint and the notification side effect front-loaded. Nothing is padding.

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 three-parameter comment-creation tool with no output schema and no annotations, the description covers who sees it, what side effect fires, and where mention ids come from. The main remaining gap is the return value or confirmation behavior, though with no output schema the agent can tolerate that.

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 only 33%, so the description has to compensate, and it does: it explains that mentions must be user ids obtained from crm_list_workspace_members, which is more actionable than the schema's bare "User ids to @mention". The 'id' parameter is only implied by "lead card" and 'body' semantics are only sketched by "internal note", keeping it below a 5.

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?

"Internal team note on the lead card (not visible to the lead)" states a specific verb and resource, and the visibility qualifier separates it from lead-facing siblings like crm_reply_to_lead and crm_send_email_to_lead. It stops short of naming a sibling outright, so an agent must infer the boundary rather than being told it.

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 "not visible to the lead" clause implies the internal-versus-external channel choice, and pointing at crm_list_workspace_members as the source of mention ids is genuinely useful routing. But there is no explicit when-to-use or when-not-to-use statement, and the comment-versus-reply decision 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.

crm_add_lead_to_branchAdd a lead to another pipelineAInspect

Place the lead in another pipeline too (entry stage); it stays in its current ones. Reversible via crm_move_lead_to_branch.

NameRequiredDescriptionDefault
idYesLead id (UUID)
branch_idYes"general" or a branch id from crm_list_all_branches
assignee_user_idNoOwner in that pipeline (default: current owner)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it delivers the two traits that matter most for a mutation: the operation is additive (existing pipeline memberships survive) and it is reversible via a named tool. It omits permissions/authorization needs and undefined edge behavior (lead already in that branch), which keeps it from 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, and the add-vs-move distinction is front-loaded in the first clause. Every phrase ('too', 'entry stage', 'stays in its current ones', 'Reversible via...') carries distinct 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 3-parameter mutation with no annotations and no output schema, the description covers the essential semantics an agent needs to call it safely. Remaining gaps: no return-value indication and no statement of what happens on a duplicate add — modest for such a narrow operation.

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

Parameters3/5

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

Schema description coverage is 100%: id, branch_id (with the 'general' or crm_list_all_branches guidance) and assignee_user_id (with its default) are all documented in the schema. The description's 'entry stage' adds context about where the lead lands but says nothing extra about any of the three parameters, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource (place the lead in another pipeline) plus the critical scope qualifier ('too') and the entry-stage position. It explicitly contrasts with the sibling crm_move_lead_to_branch, so an agent can distinguish the additive tool from the moving one without opening a 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?

The word 'too' plus 'it stays in its current ones' tells the agent the use-case: additive assignment rather than relocation. It also names crm_move_lead_to_branch as the reversal path, giving an alternative. It does not state a negative rule (e.g. use move instead when the lead should leave its current pipelines), so it falls short of a full 5.

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

crm_communication_cardsList communication cardsAInspect

One card per campaign and per SDR search, with outbound counters. This is the FULL outbound stream — everyone contacted, whether or not they replied (CRM leads only contains people who answered). Contact emails/phones are masked for members without the "crm-contact-details" permission. Read-only, free.

NameRequiredDescriptionDefault
limitNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a solid job: it declares the tool read-only, free (no credits), and discloses that contact emails/phones are masked unless the caller holds the 'crm-contact-details' permission. It omits pagination behavior, default ordering and whether counters are lifetime or windowed.

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?

Four short sentences, front-loaded with what a card is, followed by scope, permission masking and cost. Each sentence adds distinct information; the only mild inefficiency is the conversational parenthetical about CRM leads, which nonetheless serves a differentiating purpose.

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

Completeness4/5

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

With no output schema, the description must convey the return shape, and it does at a high level: one card per campaign/SDR search with outbound counters. For a one-parameter read tool this is nearly sufficient; only the result-field details and pagination semantics are absent.

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?

The schema has 0% description coverage on its single parameter, and the description never mentions 'limit' at all — no default, no maximum, no effect on the result. The description therefore does not compensate for the undocumented parameter.

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 the resource precisely: one card per campaign and per SDR search, carrying outbound counters. The parenthetical contrasts it with 'CRM leads', which contains only repliers, so an agent can tell the two lists apart. It lacks an explicit verb but the listing intent is unambiguous from the first sentence.

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 contrast with CRM leads ('everyone contacted, whether or not they replied') implicitly tells the agent to use this tool when it needs the complete outbound stream rather than only responding leads. However, it never states when NOT to use it, and does not route to the many other plausible siblings such as crm_communication_history, crm_communication_thread or sdr_outreach_summary.

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

crm_communication_historyOutbound history for one cardBInspect

Every outbound touch for one campaign or SDR search, filterable by channel, reply status and date. Use crm_communication_cards first to get the id. Read-only, free.

NameRequiredDescriptionDefault
idYesCampaign id or SDR search id
toNoISO date
fromNoISO date
typeYes
limitNo
offsetNo
channelNo
repliedNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses 'Read-only, free', which is real behavioral context (mutability and cost). But it omits pagination behavior and return-shape expectations for an 8-param history endpoint.

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 compact sentences, front-loaded with the core purpose and scope. Minimal waste; the id prerequisite is placed after the main statement, which is sensible.

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 an 8-parameter tool with no annotations and no output schema, the description covers purpose, filtering, and read-only/free status but omits limit/offset semantics and return format. Adequate but with clear gaps against the complexity.

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

Parameters3/5

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

Schema coverage is only 38%, so the description must compensate. It maps to channel, replied, and date (from/to) filtering, and implies type via 'campaign or SDR search', but leaves limit and offset entirely undocumented and adds no syntax/format detail.

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+resource ('Every outbound touch for one campaign or SDR search') plus its filter dimensions, which is clear and actionable. It distinguishes itself from crm_communication_cards by naming it as the id source, though it does not explicitly differentiate from crm_communication_thread or crm_get_conversation.

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

Usage Guidelines3/5

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

Gives a concrete prerequisite workflow ('Use crm_communication_cards first to get the id'), which is genuinely useful guidance. However, it offers no when-to-use vs-when-not guidance against the related thread/conversation siblings, leaving the choice to inference.

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

crm_communication_threadFull message thread for one contactBInspect

The complete message thread with one contact inside a card. key comes from a crm_communication_history row (an email address or LinkedIn chat id). Read-only, free.

NameRequiredDescriptionDefault
idYes
keyYesThread key from crm_communication_history
typeYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and discloses two valuable traits: "Read-only" (safe, no mutation) and "free" (no credit cost). Beyond that it says nothing about message ordering, pagination, thread-length limits, or what a 'complete thread' returns, which leaves meaningful behavioral gaps for a read tool.

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 compact sentences, front-loaded with the core purpose and followed by the key-sourcing prerequisite and safety/cost note. No redundant restatement of the name or title.

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?

No output schema and no annotations, so the description must do more. It covers `key` sourcing and cost/safety but leaves two required parameters (id, type) unexplained and gives no sense of the return shape or volume for a potentially large thread.

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%: only `key` is documented. The description usefully expands on `key` by naming its form (email address or LinkedIn chat id), but `id` and the required `type` enum are never mentioned in either schema or description, so the agent gets no guidance on those required 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+resource: retrieve the complete message thread with one contact. This distinguishes it from the sibling crm_communication_history (which yields rows and the `key`), though the phrase "inside a card" is vague and adds little. An agent can identify the operation without opening the schema, but sibling differentiation is only implicit.

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

Usage Guidelines3/5

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

Provides a useful prerequisite: `key` comes from a `crm_communication_history` row, implying this tool is used as a follow-up drill-down. However, there is no explicit when-to-use vs when-not guidance, and the id/type parameters are not framed as selection conditions.

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

crm_create_branchCreate a CRM pipeline (branch)AInspect

Create an isolated pipeline (team / direction / client) with its own default stages. member_user_ids = who can see it (General stays open to all). Workspace admins/owner only. No credits.

NameRequiredDescriptionDefault
nameYes
member_user_idsNoUser ids from crm_list_workspace_members

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and covers several non-obvious traits: default stages are auto-created as a side effect, the operation is restricted to workspace admins/owner, and it consumes no credits. It omits what happens on duplicate names, whether the new pipeline is returned with its id, and reversibility (though a sibling delete_crm_branch exists).

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?

Four short, telegraphic sentences with zero filler; the core action comes first, then visibility semantics, permissions, and cost. Every clause carries distinct 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 two-parameter mutation with no annotations and no output schema, the description covers the crucial gaps: permission gate, side effects, cost, and visibility model. The only thing an agent might still want (whether the created branch/id is returned) is unaddressed, but no output schema exists to imply it.

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 50%, so the description meaningfully compensates by explaining that member_user_ids controls visibility and that the General pipeline stays open to all users. The `name` parameter is left unstated, but its constraint (1-120 chars) is already in the schema and its meaning is self-evident.

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 isolated pipeline (team / direction / client)') and clarifies the branch/pipeline naming ambiguity, which is the main confusion risk in this tool family. It does not name a sibling it differs from (e.g., crm_create_stage for adding stages, crm_update_branch for changes), so it falls short of maximum 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?

'Workspace admins/owner only' gives a prerequisite, and 'General stays open to all' hints at when member_user_ids matters. However, there is no explicit guidance on when to create a new pipeline versus using an existing one, nor any pointer to sibling tools such as crm_create_stage or crm_update_branch.

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

crm_create_calendar_eventCreate a CRM calendar eventAInspect

Add a custom event to the CRM planner. Write operation, no credit cost. Does NOT send invites to anyone — it only records the event on the internal calendar.

NameRequiredDescriptionDefault
colorNo#RRGGBB
titleYes
end_atNoISO datetime, after start_at (default start + 1 h)
all_dayNo
lead_idNoLink the event to a CRM lead
start_atYesISO datetime
descriptionNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does meaningful work: it declares this is a write operation, that it costs no credits, and that it has no external side effect (no invites sent). It stops short of permissions, conflict/overlap behavior, or what is returned, so it is strong but not complete.

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

Conciseness5/5

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

Three short sentences, zero filler, and the core action is front-loaded ahead of the constraints. Every sentence contributes a distinct fact (what it does, its cost/nature, its lack of side effects).

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 an unannotated create tool with no output schema, an agent still needs to know whether the created event's identifier is returned (so it can later update or delete it) and how lead_id changes behavior — neither is addressed. The cost and no-invites notes cover the most important gaps, leaving a middling but adequate result.

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 57% (title, all_day, and description are undocumented), and the description adds nothing about any of the seven parameters — not even that lead_id is how you attach the event to a CRM record. At this coverage level the description should compensate and it does not.

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 custom event to the CRM planner") and implicitly separates itself from meeting/invite tools by noting it only records on the internal calendar. It does not name its closest siblings (crm_update_calendar_event, crm_delete_calendar_event, crm_list_calendar_events), so the differentiation is inferential rather than explicit.

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

Usage Guidelines3/5

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

The sentence "Does NOT send invites to anyone" gives one useful exclusion, steering agents away from this when they need to actually invite attendees. However, no positive trigger conditions, no prerequisites, and no named alternative (e.g. use crm_update_calendar_event to modify an existing event) are provided.

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

crm_create_leadCreate a lead manuallyAInspect

Add a lead card to the entry stage of the chosen pipeline(s). ALL fields optional — provide whatever is known (at least one of name/company/title/email/linkedin/phone). Not deduplicated (use crm_import_leads or crm_promote_contact_to_lead for dedup). Side-effect: a card appears on the customer board.

NameRequiredDescriptionDefault
emailNo
notesNo
phoneNo
titleNo
last_nameNo
avatar_urlNoFull http(s) URL
branch_idsNoPipelines to place the lead in: "general" and/or branch ids (default General)
first_nameNo
company_nameNo
facebook_urlNoFull http(s) URL
linkedin_urlNoFull http(s) URL
instagram_urlNoFull http(s) URL
assigned_user_idNoOwner — user id from crm_list_workspace_members (default: you)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose the key traits: no deduplication, and the visible side effect that a card appears on the customer board. It does not cover failure modes (validation of email/phone, permission errors) or whether creation triggers integrations, which keeps it off 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?

Three short sentences, front-loaded with the action, then the field rule, then the dedup routing, then the side effect. No filler and nothing buried.

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 13-parameter, zero-annotation, no-output-schema create tool, it covers purpose, intake minimum, dedup alternatives, and visible effect. Remaining gaps are modest (whether a lead id is returned, validation behavior) but real for a mutation tool.

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

Parameters4/5

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

Schema coverage is only 46%, so the description must compensate, and it does the most valuable part: a cross-field constraint ('ALL fields optional … at least one of name/company/title/email/linkedin/phone') that no single schema property expresses. It still leaves notes, avatar_url, and branch_ids semantics to the schema, so it does not fully close the gap.

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

Purpose5/5

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

A specific verb-plus-resource ('Add a lead card to the entry stage of the chosen pipeline(s)') that names the exact object and where it lands. It is immediately distinguishable from crm_import_leads and crm_promote_contact_to_lead, which it explicitly points to.

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?

States the alternative paths and the condition that selects them: bulk or deduplicated intake goes to crm_import_leads, converting an existing contact goes to crm_promote_contact_to_lead. It also spells out the create-time minimum (at least one of name/company/title/email/linkedin/phone), which is the practical gate on calling it.

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

crm_create_stageCreate a pipeline stageBInspect

Add a custom kanban column to a pipeline (name, optional hex color, is_terminal for Won/Lost-like end stages). Inserted before the terminal stages. branch = "general" (default) or a branch id.

NameRequiredDescriptionDefault
nameYes
colorNo#RRGGBB
branchNo"general" (default) or a branch id
is_terminalNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the new column is inserted before terminal stages and explains is_terminal for Won/Lost-like end stages, but it omits authorization requirements, duplicate-name behavior, and what happens to existing leads or stage 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?

The description is short and front-loaded, stating the operation first and then adding key semantic details. The branch clause largely repeats the schema description, which is a minor redundancy.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description covers the core operation and terminal-stage behavior but leaves several gaps: how the target pipeline is identified (only branch is mentioned), permissions, failure modes, and return value are not described.

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

Parameters4/5

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

Schema description coverage is 50%, so the description must add meaning. It explains is_terminal as "Won/Lost-like end stages" and clarifies branch values/default, while color is simply described as optional hex, consistent with the schema.

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

Purpose4/5

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

The description states a specific verb and resource: "Add a custom kanban column to a pipeline." It is clear that this creates a pipeline stage, but it does not explicitly distinguish itself from siblings such as crm_update_stage, crm_reorder_stages, or crm_delete_stage.

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 explicit guidance on when to use this tool versus alternatives like crm_update_stage or crm_reorder_stages. The description implies it is used to add a stage, but this is largely evident from the name and title, not from usage guidance in the description.

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

crm_delete_calendar_eventDelete a CRM calendar eventAInspect

Remove a custom calendar event. Unlike deleting a lead or a stage this destroys no history and needs no preview step, but it cannot be undone.

NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that this destroys no history, needs no preview step, and cannot be undone. These are exactly the behavioral traits an agent needs for a destructive call. It stops short of stating permissions or what happens if the id is not found, 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.

Conciseness5/5

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

Two short sentences, front-loaded with the core action, then the distinguishing traits. Every clause earns its place with no waste.

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 one-parameter destructive tool with no annotations and no output schema, the description covers the salient behavioral risk (irreversible, no history impact) but leaves the parameter completely undefined and omits any permission or error context. Adequate but with clear gaps.

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 0% and the single required id parameter is documented nowhere. The description says nothing about what the id identifies or its format. With one parameter at 0% coverage, the description should compensate and does not.

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

Purpose5/5

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

States a specific verb (remove) and resource (a custom calendar event), and explicitly distinguishes itself from deleting a lead or a stage. An agent can tell it apart from crm_update_calendar_event or delete_crm_lead without opening 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 Guidelines3/5

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

Implies when to use: it's a direct delete with no preview step needed, unlike lead/stage deletes. But it never names a specific prerequisite or a when-not condition, and the sibling set includes a preview_delete_crm_lead and preview_delete_crm_stage but no preview tool for this one, so the guidance 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.

crm_enrich_from_linkedinEnrich a person from a LinkedIn URLAInspect

Fetch name / title / current employer / avatar / location for a linkedin.com/in/... URL (same lookup the SDR hunters use). May also suggest an email as an UNVERIFIED pattern guess (email_confidence=pattern_guess). Costs one profile view from the workspace's shared daily LinkedIn budget — do not loop over big lists.

NameRequiredDescriptionDefault
linkedin_urlYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the budget/rate cost, warns against bulk looping, and flags that any returned email is an UNVERIFIED pattern guess keyed to email_confidence=pattern_guess. It does not cover auth requirements or failure behavior on invalid/non-profile URLs.

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

Conciseness5/5

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

Three sentences, front-loaded with the returned fields, then the email caveat, then the cost warning. Every sentence adds information an agent needs and none is redundant.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the return fields and the confidence semantics of the suggested email, plus the budget cost. What is missing is any note on invalid-URL handling or how the unverified email should be treated downstream.

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

Parameters4/5

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

Schema description coverage is 0% for the single parameter, so the description must compensate, and it does by specifying the expected URL shape (linkedin.com/in/...). It could still clarify whether only profile URLs are accepted or whether company URLs are rejected, but the format guidance is meaningful.

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?

It states a specific verb and resource ('Fetch ... for a linkedin.com/in/... URL') and enumerates exactly which fields come back (name, title, employer, avatar, location). This leaves no ambiguity about what the tool produces, though it never names a sibling it should be chosen over (e.g. sdr_get_person_detail).

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

Usage Guidelines4/5

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

It gives concrete invocation constraints that function as usage guidance: the call costs one profile view from the workspace's shared daily LinkedIn budget and should not be looped over large lists. It stops short of stating when to prefer this over the SDR person-detail siblings, so it is clear context without explicit alternatives.

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

crm_get_branchGet one CRM pipelineAInspect

One pipeline by id (id, name, is_default). Read-only.

NameRequiredDescriptionDefault
idYesBranch id (UUID)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; 'Read-only' is the single most important disclosure for this tool and it is made clearly. It does not cover failure behavior for a missing id, permission requirements, or whether the default flag has side effects, so the disclosure is thin beyond the read-only statement.

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-loaded with the access pattern, then the return fields, then the safety note; no filler. The phrasing 'One pipeline by id' is slightly elliptical but readable.

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, non-destructive read with no output schema, the description gives the lookup key, the projected fields, and the read-only nature. Only error/permission behavior is absent, which is a minor gap at this complexity level.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents the single 'id' parameter as a UUID. The description's 'by id' adds nothing beyond that, so the baseline of 3 for fully-documented parameters 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 retrieval action ('One pipeline by id') and enumerates the returned shape (id, name, is_default), which separates it from crm_list_branches and crm_list_all_branches by implying single-record lookup. It stops short of naming those siblings explicitly, and the branch/pipeline terminology swap between name and description adds minor friction.

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?

'By id' implies the precondition of already holding a pipeline id, which is sufficient context to pick this over the list tools. There is no explicit when-to-use statement, no exclusion of alternatives, and no note on what happens if the id is unknown.

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

crm_get_conversationGet lead conversation threadCInspect

The full message thread with this lead on their source channel (LinkedIn / email / widget / telegram / phone transcript). Read-only.

NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does declare 'Read-only', which is genuinely useful safety context, and mentions the channel coverage. But it says nothing about pagination, truncation, empty-thread behavior, or return shape for a tool whose whole purpose is fetching a potentially long thread.

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 tight sentence that front-loads the resource and appends the channel list and the read-only tag. No wasted words; slightly dense parenthetical but efficient.

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 simple one-parameter read tool with no output schema, the description covers the resource and channels, which is the minimum viable content. It still omits what the id refers to and how the thread is returned, so it is adequate but not complete.

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

Parameters2/5

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

Schema coverage is 0% and the description never explains the single 'id' parameter—whether it is a lead id, a conversation id, or something else. With one undocumented parameter, the description does nothing to compensate for the schema gap.

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 (full message thread with a lead) and enumerates the possible source channels. However, it fails to distinguish itself from very close siblings like crm_communication_thread, crm_communication_history, and crm_communication_cards, which leaves real ambiguity about which conversation tool to pick.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the multiple other communication-related siblings (crm_communication_thread, crm_communication_history, crm_get_lead, crm_reply_to_lead). The agent is left to infer the routing condition entirely on its own.

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

crm_get_leadGet one CRM lead (full detail)BInspect

Full lead card: identity, source ("why is this person here"), company enrichment, activities, comments, assignments. Read-only.

NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does supply the key safety trait 'Read-only'. However, it discloses nothing beyond that — no behavior on missing/invalid IDs, no auth or scope requirements, and no note on whether the record must exist — leaving most behavioral questions open for an unannotated 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 tight sentence that front-loads the payload ('Full lead card:') followed by a compact field list and a trailing 'Read-only.' No wasted text, though the parenthetical quip about source is slightly loose.

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 simple single-record get with no output schema, the field enumeration usefully substitutes for a return-value spec, which is a real contribution. But with no annotations and no output schema, the missing id semantics and error behavior leave the definition adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0% and the sole parameter (id) is never mentioned, so the description adds no meaning beyond the schema. The agent must infer that 'id' is the lead identifier from the 'Full lead card' phrasing alone.

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 clear resource ('Full lead card') and enumerates the returned content (identity, source, company enrichment, activities, comments, assignments), so the agent knows this fetches rich detail for a single lead. It does not explicitly differentiate from the sibling crm_list_leads, relying on the title's 'one' to convey the single-record scope.

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 when-to-use guidance, no prerequisites, and no named alternative such as crm_list_leads or crm_get_conversation. Usage is only weakly inferable from the field enumeration.

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

crm_get_lead_branchesPipelines a lead is inBInspect

Every pipeline a lead currently sits in, with its stage and owner per pipeline. Read-only.

NameRequiredDescriptionDefault
idYesLead id (UUID)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; it does at least self-declare 'Read-only', which is the most important safety signal. It says nothing about behavior for a lead with no pipelines, whether archived/closed pipelines are included, or what happens if the id is invalid.

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 compact sentences, zero filler, with the return content front-loaded and the read-only note trailing. Nothing is redundant with the title or schema.

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 single-parameter read tool with no output schema, describing the returned fields (stage, owner per pipeline) is close to sufficient. Minor gaps remain around empty results and pipeline scope, but nothing an agent would likely get wrong when calling it.

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 required parameter and schema description coverage is 100% ('Lead id (UUID)'), so the schema fully documents it. The description adds no extra semantics about the id beyond what the schema states, 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-resource pair: returns every pipeline (branch) a lead sits in, plus stage and owner per pipeline, which also disambiguates the 'branches' naming in the tool name. It does not name sibling alternatives such as crm_get_lead or crm_list_branches, so an agent still has to infer the boundary.

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 explicit when-to-use framing, no exclusion (e.g., use crm_get_lead for lead fields, crm_list_branches for all pipelines in the workspace), and no prerequisites. The usage is only implied by the phrase 'a lead currently sits in'.

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

crm_get_lead_documentDownload a lead documentAInspect

Returns the file as base64 with its name and mime type (files up to 5 MB; larger ones only via REST). Read-only.

NameRequiredDescriptionDefault
idYesLead id (UUID)
document_idYesDocument id (UUID)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a solid job: it declares the operation read-only, explains the return payload structure (base64 content plus name and mime type), and discloses the 5 MB size ceiling. It stops short of covering auth, not-found behavior, or response size implications, but it adds meaningful context beyond the schema.

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

Conciseness5/5

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

One sentence, front-loaded with the return format, then the size constraint, then the read-only trait. Every phrase supplies information an agent would want, with no repetition or filler.

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

Completeness4/5

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

For a two-parameter read-only getter with a fully described input schema and no output schema, the description is nearly complete: it explains the return shape, limit, and safety profile. The only meaningful omission is workflow context, such as pointing to crm_list_lead_documents for finding document IDs.

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 both parameters are fully documented as UUIDs in the schema. The description adds no further parameter meaning beyond the implied relation that document_id identifies the file. Baseline 3 is appropriate when the schema already does this 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?

The description states a specific action and result: it returns a lead document's file as base64 along with name and mime type. That clearly separates it from upload/list/delete document siblings, though it does not explicitly name any sibling or say 'download a single document by ID.'

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?

It gives one concrete usage constraint: files up to 5 MB are supported, and larger files must go through REST. However, it does not explain when to call this versus crm_list_lead_documents, nor does it mention how to obtain the required document_id. Usage guidance is implied rather than explicit.

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

crm_get_settingsGet CRM settingsAInspect

Read CRM settings, including the notify_* toggles that control which events send an email/notification. Read-only, free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose two meaningful traits: it is read-only (safe, non-mutating) and free (no credit cost). It stops short of stating any auth/permission requirements, but for a no-argument read tool this is solid coverage.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and the cost/safety note in a compact trailing clause. No filler; every phrase adds information.

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

Completeness4/5

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

For a simple, parameterless read tool with no output schema, the description gives enough to act: what it returns at a high level (the notify_* toggles) plus read-only and free. It could note permissions or the shape of the settings object, but nothing essential is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly introduces no parameter semantics, and there is nothing for the schema to document beyond an empty object.

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 (Read) and resource (CRM settings) and adds a concrete detail: the notify_* toggles controlling email/notification events. Clear on its own, though it never names the sibling crm_update_settings to explicitly draw the read-vs-write contrast.

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 infers you call this to inspect settings. There is no explicit when-to-use, no mention that crm_update_settings is the counterpart for changing them, and no prerequisites given.

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

crm_import_leadsImport leads into the CRMAInspect

Import up to 1000 parsed rows as leads into the chosen pipelines (entry stage). Dedup by email/phone: an existing lead only gets its blank fields filled (never overwritten) and is added to the pipelines. Returns created / updated / skipped (+ reasons). No credits.

NameRequiredDescriptionDefault
rowsYes
branch_idsNo"general" and/or branch ids (default General)

TDQS

A4.3/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full burden of disclosure. It successfully communicates the import limit (1000 rows), the deduplication mechanism, the update semantics, and the cost ('No credits').

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

Conciseness4/5

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

The description is highly concise, fitting complex operational logic (limit, deduplication, update behavior, cost) into three dense sentences without filler. The information is front-loaded and easy to scan.

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

Completeness4/5

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

Given the lack of annotations and the complexity of bulk lead processing, the description is extremely complete. It addresses failure modes (skipped/updated/created reasons) and limitations (1000 row limit) that the structured fields do not capture.

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

Parameters3/5

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

The schema coverage is only 50%, and the description primarily lists the field names without adding semantic context to the majority of the nine input fields. While it mentions the target 'pipelines (entry stage)', the parameter details remain largely reliant on the schema alone, meeting the baseline but not exceeding it significantly.

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

Purpose5/5

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

The purpose is clearly stated: 'Import up to 1000 parsed rows as leads into the chosen pipelines (entry stage).' This specific phrasing distinguishes it from single-lead creation tools.

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

Usage Guidelines4/5

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

The description explicitly details the deduplication strategy ('Dedup by email/phone') and the critical update logic ('blank fields filled (never overwritten)'), which serves as a vital guideline for how the agent should expect the data to behave during execution.

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

crm_list_all_branchesList every CRM pipeline (for moves)AInspect

Every pipeline of the workspace (id, name, is_default) — wider than crm_list_branches for members; use it to pick a destination for crm_add_lead_to_branch / crm_move_lead_to_branch. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does state 'Read-only', which is the key safety signal for this tool. It also discloses the returned fields. It stops short of mentioning ordering, completeness/limits, or auth requirements, which keeps it from a 5 for an unannotated tool.

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

Conciseness5/5

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

One compact sentence: the resource and scope come first, then the sibling comparison, then the intended consumers, then the safety note. Nothing is wasted and nothing important is buried.

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

Completeness5/5

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

For a zero-parameter read-only listing tool with no output schema, the description supplies everything needed to call it correctly: what it returns, why it exists versus its sibling, where to use the result, and that it is non-mutating.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is no parameter meaning the description needs to add. The mention of returned fields is redundant with the eventual response but not harmful.

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

Purpose5/5

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

The description states a concrete resource (every pipeline of the workspace) and enumerates the returned fields (id, name, is_default), and explicitly positions it against the sibling crm_list_branches as the wider variant. An agent can distinguish it from crm_list_branches and crm_get_branch without opening 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 Guidelines5/5

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

It names the exact downstream tools that consume the result (crm_add_lead_to_branch / crm_move_lead_to_branch), so the selection condition is stated rather than inferred. It also explains why this variant is preferred over crm_list_branches, effectively covering the alternative.

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

crm_list_branchesList CRM branches (pipelines)AInspect

Branches are isolated pipelines inside one workspace (teams / directions / clients). Returns id, name, is_default ("General"), member_user_ids. Read-only. Call before crm_stats / crm_list_leads when the user has more than one branch, then pass branch= (or "general").

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it declares the tool read-only and enumerates the exact return fields (id, name, is_default, member_user_ids), including the "General" default marker. It omits any note on auth/permissions or whether an empty list is possible.

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

Conciseness4/5

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

Three dense sentences ordered definition → return shape → usage, each earning its place. The parenthetical "(teams / directions / clients)" is slightly cryptic but acts as a quick synonym gloss.

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-param list tool with no annotations and no output schema, the description supplies the missing return-value information and the downstream call pattern. Only the differentiation from crm_list_all_branches is left uncovered.

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

Parameters4/5

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

The tool takes zero parameters, so the schema baseline is 4. The only parameter-like guidance (passing branch=<id> or "general" downstream) is useful context for the follow-up calls rather than this one.

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 defines the resource precisely ("isolated pipelines inside one workspace") and lists the fields it returns, which makes the operation unmistakable. It does not explicitly distinguish itself from the close sibling crm_list_all_branches, so an agent must infer that one is workspace-scoped and the other cross-workspace.

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?

"Call before crm_stats / crm_list_leads when the user has more than one branch, then pass branch=<id>" gives explicit ordering, a precondition, and the follow-up action. No exclusion is stated against crm_list_all_branches or crm_get_branch, so the sibling routing is incomplete.

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

crm_list_calendar_eventsList CRM calendar eventsAInspect

List custom calendar events (meetings, reminders) in the CRM planner for a date range. Note: SDR sending windows also appear in the UI calendar but are derived from the search schedule — read those via sdr_get_search. Read-only, free.

NameRequiredDescriptionDefault
toNoISO date, end of range
fromNoISO date, start of range

TDQS

A4/5.0
Behavior3/5

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

No annotations were provided, so the description carries the full behavioral burden. It usefully declares 'Read-only, free', but omits pagination, ordering, and what happens when the optional from/to dates are omitted (0 required params). Adequate but incomplete for a no-annotation tool.

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: the core purpose is front-loaded and the caveat about SDR windows follows. No wasted phrasing and 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 list tool with no output schema, the description covers purpose, safety profile, and the key routing caveat. Return shape and pagination are left unstated, but the essentials an agent needs to call it correctly are present.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (from/to ISO dates) are already documented. The description only references 'a date range' generically and adds no syntax or format detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb (List) and resource (custom calendar events) with scope (CRM planner, date range) and even names the event types (meetings, reminders). This lets an agent distinguish it from sibling calendar tools like crm_create_calendar_event or list_google_meet_meetings without opening a 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?

Provides a concrete routing rule: SDR sending windows shown in the UI calendar should be read via sdr_get_search instead, delimiting what this tool does not return. It stops short of stating when-not-to-use it versus the other CRM calendar tools, but the alternative is explicit for the main ambiguity.

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

crm_list_lead_documentsList documents on a leadBInspect

Files attached to a lead card (id, name, type, size, uploader, date). Read-only.

NameRequiredDescriptionDefault
idYesLead id (UUID)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the behavioral burden. It does disclose the read-only nature and enumerates the returned fields, which is genuinely useful given the absent output schema, but it says nothing about pagination, result limits, or permission requirements on the lead.

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

Conciseness5/5

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

One sentence for content plus a two-word behavioral flag, both front-loaded with zero filler. Every element 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 simple one-parameter read tool with no output schema, the description is largely sufficient: it names the return fields and states the operation is read-only. Only minor gaps (ordering, pagination, permissions) remain, which are low-stakes for this tool.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('Lead id (UUID)'), so the schema fully documents it. The description adds no meaning beyond that, which matches the baseline 3 for high-coverage schemas.

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 the resource ('Files attached to a lead card') and pre-empts the return shape by listing fields (id, name, type, size, uploader, date). The list action is only implied by the tool name rather than the description, and it doesn't explicitly name the singular sibling crm_get_lead_document, 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?

There is no when-to-use guidance, no mention of the alternative crm_get_lead_document for fetching a single file, and no prerequisites such as required lead access. The agent must infer usage entirely from the name and the phrase 'attached to a lead card'.

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

crm_list_leadsList CRM leadsAInspect

List leads in the CRM pipeline. Filters: branch ("general" or a branch id from crm_list_branches; omitted = all branches visible to the user), stage (stage id), owner (user id from crm_list_workspace_members), source, q (name/company/email search), range or from/to, limit/offset. Read-only. Great first call for "who replied to me?".

NameRequiredDescriptionDefault
qNo
toNoISO date — created to
fromNoISO date — created from
limitNo
ownerNoAssigned user id
rangeNoOmit for all time
stageNo
branchNo
offsetNo
sourceNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose two important traits: the operation is read-only, and omitting branch means 'all branches visible to the user' (permission scoping). However it says nothing about result ordering, pagination behavior, or default page size, which matter for a 10-param list tool with a 200 limit.

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?

Front-loaded with purpose, then a compact filter enumeration, then a behavioral note and usage hook. Dense with facts and free of filler; the parenthetical value sources earn their space.

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

Completeness4/5

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

With 10 params, no annotations and no output schema, the filter semantics are well covered. The remaining gap is the response shape — what a lead row contains and how pagination/order behaves — which the description leaves entirely implicit.

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 only 40%, but the description compensates well: it names the value source for branch and owner, explains the omission default for branch, and clarifies q searches name/company/email. Only limit/offset lack added meaning beyond their integer bounds, but that is a small residual gap.

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

Purpose5/5

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

States a specific verb and resource ('List leads in the CRM pipeline') and immediately scopes it with the filter set, which cleanly separates it from single-lead siblings like crm_get_lead and from crm_list_stages / list_narrator_leads. An agent can pick this tool without opening the 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?

Provides real usage context: 'Read-only' plus 'Great first call for "who replied to me?"' tells the agent this is a broad entry point. It also routes the agent to crm_list_branches and crm_list_workspace_members for valid filter values. It stops short of explicit exclusions (e.g. use crm_get_lead for a single lead), so not a 5.

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

crm_list_linkedin_accountsList connected LinkedIn accountsAInspect

List the LinkedIn accounts connected to this workspace, as shown in the CRM. Useful to see which account owns a conversation. Read-only, free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does disclose two useful traits beyond the schema: the operation is read-only and incurs no cost. It omits return shape, ordering, or pagination, but for a zero-arg read-only list the disclosure given is reasonable.

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

Conciseness5/5

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

Three short clauses, front-loaded with the core purpose and followed by usage and the read-only/free traits. Nothing is wasted.

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-arg, read-only list tool with no output schema, the description covers purpose, usage, and cost/safety profile. It could say a bit more about what fields come back since there is no output schema, but it is largely complete.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics to explain; baseline for 0 params is 4. The description correctly implies no input is required.

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+resource ('List the LinkedIn accounts connected to this workspace') so the agent knows exactly what is returned. However, the sibling 'list_linkedin_accounts' is near-identical, and the description does nothing to distinguish the two, which is the main clarity gap.

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

Usage Guidelines3/5

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

Implied usage is given ('Useful to see which account owns a conversation'), which hints at when to reach for it. But there is no explicit when/when-not guidance and no mention of how it relates to the confusingly similar 'list_linkedin_accounts' sibling.

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

crm_list_notificationsList CRM notificationsAInspect

Latest 50 CRM notifications of the caller (types: assigned, reassigned, mentioned, new_lead, stage_change) plus total and unread counts. unread_only=true returns only unread ones. For the app bell (billing, meetings, invitations) use list_app_notifications. Read-only, free.

NameRequiredDescriptionDefault
unread_onlyNo

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, and the description steps up: it declares read-only and free (cost/safety), discloses the hard 50-item window, and states that total and unread counts are returned alongside the list. It stops short of stating the ordering guarantee or what happens when more than 50 exist, which is the only remaining behavioral gap.

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

Conciseness5/5

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

Three short sentences, each doing distinct work: what it returns, how to filter, and where to go instead. The differentiating content is front-loaded with no filler.

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

Completeness5/5

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

With no output schema, the description correctly spells out the return shape (latest 50 items plus total and unread counts), and with no annotations it supplies the safety and cost profile. Nothing an agent needs to call this correctly is missing.

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 0%, so the description must carry the single boolean, and it does: unread_only=true returns only unread notifications, implying the unfiltered default otherwise. The default value itself is never stated outright, which is the only shortfall.

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 CRM notifications), names the notification types covered, and explicitly delimits itself from the sibling list_app_notifications. An agent can pick it out of a very crowded namespace without opening the 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?

Gives an explicit routing rule: app-bell notifications (billing, meetings, invitations) belong to list_app_notifications, not this tool. It also explains the one filtering option's effect (unread_only=true returns only unread), so usage and alternatives are both covered.

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

crm_list_stagesList pipeline stagesAInspect

Ordered kanban columns of ONE pipeline (id, name, color, is_terminal). Every branch has its own stages: pass branch ("general" = default, or a branch id from crm_list_branches). Read-only. Call before moving leads.

NameRequiredDescriptionDefault
branchNo"general" (default) or a branch id

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose that the tool is read-only and returns ordered stages. It also explains that stages are per-branch, which is important behavioral context. It stops short of permissions, pagination, or error behavior, but for a simple read-only list this is substantial transparency.

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

Conciseness5/5

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

The definition is front-loaded with the resource and scope, then branch semantics, then safety and workflow guidance. Every sentence contributes useful information without repeating the schema verbatim.

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 appropriately lists the returned fields and the ordering. For a single-parameter read-only list, this is nearly complete; only minor operational details such as failure modes are absent.

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 already 100%, but the description adds meaning by explaining that every branch has its own stages and that the branch value comes from crm_list_branches. It also reinforces "general" as the default, which helps an agent choose the parameter correctly.

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

Purpose5/5

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

The description states exactly what is returned: ordered kanban columns for ONE pipeline, with field names (id, name, color, is_terminal). It also distinguishes this from branch listing by making the ONE-pipeline scope explicit, so an agent can tell it apart from crm_list_branches or crm_list_all_branches.

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

Usage Guidelines4/5

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

It gives a clear use case ("Call before moving leads") and explains how to choose the branch parameter, including the default. It does not explicitly state when not to use it or name a direct alternative for stage lookup, but the workflow context is strong.

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

crm_list_workspace_agentsList agents visible in CRMAInspect

List the AI agents in this workspace that CRM leads can be attributed to. Read-only, free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and 'Read-only, free' usefully discloses that the call has no side effects and no cost — a real addition. It says nothing about pagination, result ordering, or permissions, so it is only partially transparent for a no-annotation tool.

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, with the scope constraint front-loaded before the read-only/free note. Nothing is wasted and nothing is buried.

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-parameter read tool with no output schema, the description covers what is listed, the scope of the workspace, and the cost/safety profile. Only the return shape is unaddressed, which is a minor gap given the tool's simplicity.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing to explain and the description has no parameter semantics to add. Baseline 4 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 AI agents in this workspace) and narrows scope with 'that CRM leads can be attributed to', which meaningfully separates it from the broader list_agents and list_agents_with_stats. It stops short of explicitly naming those siblings, so the agent must infer the boundary.

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 clause 'that CRM leads can be attributed to' implies the use case (attributing CRM leads to an agent) but gives no explicit when-to-use, when-not, or named alternative such as list_agents. Usage is inferable rather than stated.

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

crm_list_workspace_membersList workspace membersAInspect

List the people in this workspace who can own a CRM lead. Use before reassign_crm_lead to get valid owner ids. Read-only, free.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden — and it delivers the two most decision-relevant traits: 'Read-only' (safe, non-mutating) and 'free' (no credit cost). It does not describe the shape of each member record returned, which is the remaining gap for a listing tool.

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

Conciseness5/5

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

Three short sentences, zero filler, and the ordering is right: what it lists, then the cross-tool workflow reason, then the read-only/cost caveat.

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-param, no-output-schema tool with no annotations, the description covers purpose, safety profile, cost, and workflow placement — everything an agent needs to call it correctly. Only the return-field detail is left implicit.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The description adds useful scope context anyway (members eligible to own leads).

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 (list) and resource (workspace members), and narrows scope with 'who can own a CRM lead' — a meaningful qualifier that distinguishes it from other list_* tools like list_agents or crm_list_workspace_agents.

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 routes the agent: 'Use before `reassign_crm_lead` to get valid owner ids.' This names the dependent sibling tool and the condition that selects it, so the agent knows not just when to use it but why.

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

crm_mark_all_notifications_readMark all notifications as readAInspect

Clear the CRM notification badge by marking everything read.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the side effect (badge cleared, all items read), which is useful, but it omits reversibility, whether the operation is workspace-wide, and any auth/prerequisite context for a mutation tool.

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

Conciseness4/5

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

A single efficient sentence with no filler, front-loading the effect. Slightly indirect by leading with the badge outcome rather than the action, but appropriately sized for the operation.

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-parameter bulk mutation with no output schema and no annotations, the description conveys the action and its visible result. It could still note scope and irreversibility, but it is adequate for a tool this simple.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing to describe and the baseline of 4 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 ('marking ... read') and resource ('everything'/notifications) plus the observable effect (clearing the notification badge). The bulk scope distinguishes it from the singular sibling crm_mark_notification_read, though that sibling is never 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?

The phrase 'marking everything read' implies bulk use versus the single-item sibling, so the usage context is inferable, but there is no explicit when-to-use/when-not-to-use guidance or named alternative.

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

crm_mark_notification_readMark one notification as readBInspect

Mark a single CRM notification as read. Write operation, no credit cost.

NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description does carry the burden, and it does disclose two useful traits: this is a write operation and it costs no credits. However, it omits whether the call is idempotent, what happens if the notification is already read, and any permission 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 short sentences, front-loaded with the action and followed by the cost/side-effect note. No filler, though the brevity is close to under-specification rather than economical conciseness.

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 trivial one-parameter mutation with no output schema and no annotations, the description covers the action and the credit/cost profile, which is roughly the minimum viable. It leaves the id's origin and the already-read behavior unspecified.

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 0% and there is one required parameter, 'id', whose meaning the description never clarifies (notification identifier? which scope?). At low coverage the description is expected to compensate, and it does not.

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 (mark read) and resource (CRM notification), and the qualifier 'single' implicitly contrasts with the crm_mark_all_notifications_read sibling. It stops short of naming that sibling explicitly, so differentiation requires a small inference.

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

Usage Guidelines2/5

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

No when-to-use guidance and no routing to crm_mark_all_notifications_read or crm_list_notifications is given. The word 'single' hints at the alternative but the description never states the condition that selects this tool over the bulk variant.

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

crm_move_leadMove lead to another stageAInspect

Drag-and-drop equivalent: move a lead to a different pipeline stage by stage_id (get ids from crm_list_stages). Reversible.

NameRequiredDescriptionDefault
idYes
stage_idYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Reversible' is useful, but it does not say whether moving triggers notifications, automation side effects, required permissions, or what happens to existing stage history.

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

Conciseness5/5

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

One dense sentence pair: operation, routing key, id source, and reversibility. No filler; front-loaded.

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 2-param mutation with no annotations and no output schema, the description covers the core action and id sourcing but omits side effects, permissions, and parameter formats that an agent would need to call it confidently.

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 0% and neither param is described in the schema. The description clarifies that stage_id is a stage identifier sourced from crm_list_stages, and that id is the lead, but does not state the format (integer/UUID) or that both are required strings.

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 + resource ('move a lead to a different pipeline stage') and the routing key ('by stage_id'). Distinguishes itself cleanly from crm_update_lead (full edit) and crm_reassign_crm_lead (ownership change).

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?

Names the prerequisite helper (get ids from crm_list_stages), which is the key when-to-use context. Does not explicitly exclude crm_update_lead for the same operation, so it falls short of 5.

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

crm_move_lead_to_branchMove a lead between pipelinesBInspect

Move the lead out of one pipeline into another (entry stage, or to_stage_id of the destination). Reversible.

NameRequiredDescriptionDefault
idYesLead id (UUID)
to_stage_idNoA stage of the destination (crm_list_stages branch=<to>)
to_branch_idYes"general" or the destination branch id
from_branch_idYes"general" or the branch id it leaves
assignee_user_idNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses that the operation is reversible and that the destination stage defaults to the entry stage, which is real behavioral context. It does not cover permission requirements, whether the lead remains in the source branch, or what the response contains.

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 compact sentence with the core action and the to_stage_id override parenthetically attached. Nothing is wasted and the key behavior is front-loaded.

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 5-parameter mutation tool with no annotations and no output schema, the description covers the essential mechanics but leaves gaps: side effects on the source branch, assignee_user_id, and error/permission behavior. It is adequate but not complete.

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

Parameters4/5

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

Schema coverage is 80%, so the baseline is 3, and the description genuinely adds meaning: it explains that to_stage_id is optional and defaults to the destination's entry stage, which the schema does not state. The only undocumented parameter, assignee_user_id, is left unexplained in both places.

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 (move) and resource (lead) and scopes it to branch/pipeline transfer, which separates it from stage-only movement. It stops short of explicitly naming how it differs from close siblings like crm_add_lead_to_branch or crm_move_lead, so it is clear but not fully differentiated.

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 use case (taking a lead out of one pipeline and putting it into another) but never states when to pick this over crm_add_lead_to_branch, crm_move_lead, or reassign_crm_lead. With several near-identical siblings in the toolset, this omission forces the agent to infer the routing.

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

crm_preview_email_to_leadPreview an email to a lead (dry-run)AInspect

Dry-run of crm_send_email_to_lead: shows recipient, subject and body exactly as they would be sent. Sends nothing. ALWAYS call first and show the draft to the human.

NameRequiredDescriptionDefault
idYesLead id (UUID)
toNoRecipient (default: the lead's email)
bodyYesPlain-text message
subjectYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the most important trait: it sends nothing, it only shows recipient, subject and body as they would be sent. It does not mention whether the lead must exist, whether validation errors are raised, or any permission requirements, but the critical safety profile is stated clearly.

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

Conciseness5/5

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

Three short sentences, front-loaded with the dry-run framing and ending with the imperative workflow rule. No filler.

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

Completeness5/5

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

There is no output schema, but the description compensates by saying the preview shows recipient, subject and body exactly as they would be sent. Combined with the safety statement, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema description coverage is 75% and the schema already documents id, to (with its default) and body. The description only restates that recipient, subject and body are echoed, adding little beyond the schema and nothing about the one undescribed parameter (subject). Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (dry-run preview of an email to a lead) and explicitly frames it as the non-sending counterpart to crm_send_email_to_lead. An agent can distinguish it from the send tool and from the many other preview_* siblings without opening the 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?

Gives an explicit directive — 'ALWAYS call first and show the draft to the human' — plus the alternative it precedes (crm_send_email_to_lead). The when-to-use condition is unambiguous and even encodes the required human-in-the-loop step.

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

crm_promote_contact_to_leadPromote a contacted person to a CRM leadAInspect

Turn a person from the Communications stream (crm_communication_history row) into a CRM lead in the New stage. Deduplicated: returns { lead_id, already_existed }. Needs at least one of email / linkedin_url / phone. No credits.

NameRequiredDescriptionDefault
emailNo
phoneNo
titleNo
avatar_urlNo
company_nameNo
contact_nameNo
linkedin_urlNo
assigned_user_idNoOwner (default: you)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it delivers the key non-obvious traits: idempotent dedup behavior, the exact return shape { lead_id, already_existed }, the target stage (New), and zero credit cost. It omits permissions and whether the source communication row is mutated, but discloses the most decision-relevant behavior.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the purpose and followed by dedup result, identifier requirement, and cost. No wasted words.

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

Completeness3/5

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

Given 8 params, no annotations, and no output schema, it covers the return shape and identifier precondition well. But the majority of optional input fields go unexplained and permission/mutation side effects are unaddressed, leaving meaningful gaps for a multi-param mutation tool.

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

Parameters3/5

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

Schema coverage is only 13%, so the description should compensate, and it does partially by declaring the 'at least one of email/linkedin_url/phone' constraint that the schema itself does not encode (required is empty). The remaining five params (title, avatar_url, company_name, contact_name, assigned_user_id) are left undocumented.

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 transformation: turn a Communications-stream person (crm_communication_history row) into a CRM lead in the New stage. Naming the source explicitly separates it from the generic crm_create_lead sibling, so an agent knows it is promoting an existing contact rather than creating one cold.

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

Usage Guidelines3/5

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

Provides a real precondition ('Needs at least one of email / linkedin_url / phone') and cost context ('No credits'), which guides invocation. However, it never explicitly contrasts with crm_create_lead or states when this is preferred over that sibling, leaving the choice largely to inference.

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

crm_reorder_stagesReorder pipeline stagesAInspect

Set the full left-to-right order of one pipeline's stages (every stage id exactly once — get them from crm_list_stages with the same branch). Applies to the whole workspace. Reversible.

NameRequiredDescriptionDefault
branchNo"general" (default) or a branch id
stage_idsYesAll stage ids of the branch in the new order

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose two important traits -- the call is a full replacement of ordering, and it is reversible -- but says nothing about required permissions, what happens if a stage id is omitted or duplicated (beyond the constraint), or the failure mode.

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 front-loaded sentences; the operation and its scope come first, followed by the id-sourcing constraint and the reversibility note. No filler.

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

Completeness4/5

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

For a two-parameter tool with no output schema and no annotations, the description covers scope, replacement semantics, reversibility, and how to obtain inputs. Only permission/error behavior is missing, which is a modest gap.

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, and the description earns extra by adding semantics the schema does not: every stage id must appear exactly once, must belong to the same branch, and the ids should be sourced from crm_list_stages.

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 ("Set the full left-to-right order of one pipeline's stages") and scopes it to a single pipeline/branch, which distinguishes it from crm_update_stage, crm_create_stage, and crm_move_lead.

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?

Tells the agent where the ids come from (crm_list_stages with the same branch) and that the call applies to the whole workspace. It does not explicitly state when not to use it versus crm_update_stage, but the context needed to invoke it is clear.

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

crm_reply_to_leadSend a reply to a lead (REAL outbound message)AInspect

Sends a REAL LinkedIn message or email reply to the lead on their source channel, from the customer's own account. Also moves the lead to the "Manager Dialog" stage. ALWAYS show the drafted text to the human and get approval BEFORE calling this.

NameRequiredDescriptionDefault
idYes
textYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it flags that a real external message is sent from the customer's own account (irreversible external side effect), discloses a state change (lead moved to 'Manager Dialog' stage), and imposes a human-approval gate. These are exactly the behavioral facts an agent needs before mutating state.

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 waste, and the highest-stakes information (this sends a real outbound message) is front-loaded, with the approval warning 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 mutation tool with no annotations and no output schema, the description covers the external side effect, the internal state change, and the approval prerequisite. It omits failure/error behavior and whether repeated calls resend the message, which would fully close the loop.

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?

Two required parameters with 0% schema description coverage, so the description must compensate. It implies the 'text' parameter ('the drafted text') but says nothing about the 'id' parameter's expected format or source, leaving half the parameters undocumented. It adds marginal but incomplete meaning beyond the bare schema.

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

Purpose5/5

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

States a specific verb (sends/reply), resource (LinkedIn message or email reply to a lead), and scope (their source channel, from the customer's own account). The explicit 'REAL outbound message' framing distinguishes it from read-only or note-adding siblings like crm_add_comment and crm_get_conversation.

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 prescriptive precondition: 'ALWAYS show the drafted text to the human and get approval BEFORE calling this.' That is strong when-to-use guidance. It stops short of naming alternative tools (e.g., crm_add_comment for non-outbound notes) or when-not-to-use cases, so it is clear context without exclusions.

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

crm_send_email_to_leadSend a REAL email to a leadAInspect

Sends a REAL email from the CRM card (" via Vendo AI", replies go to your own address) and logs it on the card. Members need the crm-contact-details permission. Only call after the user approved the exact draft from crm_preview_email_to_lead.

NameRequiredDescriptionDefault
idYesLead id (UUID)
toNo
bodyYes
subjectYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the load well: it discloses the sender identity, that replies route to the user's own address, that the action is logged on the card, and the required permission — far beyond the name. It stops short of stating irreversibility/that a sent email cannot be recalled, or what happens on delivery failure, which matters for an external side-effecting action.

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 irreversible character of the action, then the operational constraints. No filler; every clause (sender, reply routing, permission, precondition) carries decision-relevant information.

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-annotation, no-output-schema mutation tool it covers the critical gating and permission context, but leaves the 'to' override behavior and post-send failure/reversibility semantics unspecified, which is the main remaining gap given only 25% schema coverage.

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

Parameters2/5

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

Schema coverage is only 25% (only 'id' is described). The description says nothing about 'subject' and 'body', and critically nothing about the optional 'to' parameter — an agent cannot tell whether supplying 'to' overrides the lead's address, which is a high-risk ambiguity for a real send.

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 + resource ('Sends a REAL email') and immediately qualifies the scope: it goes out from the CRM card with a 'via Vendo AI' sender and is logged on the card. The capitalized 'REAL' and the named prerequisite tool make it unambiguous versus the preview sibling.

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?

'Only call after the user approved the exact draft from crm_preview_email_to_lead' gives an explicit precondition and names the sibling that must precede it, so the agent knows both when to call and which tool to use first. The permission requirement (crm-contact-details) adds a further callable gate.

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

crm_statsCRM pipeline statsAInspect

Counts per stage, new today/this week, stale leads. Read-only. Optional branch ("general" or a branch id from crm_list_branches) — omitted = all branches visible to the user. If the workspace has more than one branch, call crm_list_branches first and report per branch or ask which one.

NameRequiredDescriptionDefault
branchNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the safety profile ('Read-only') plus the data-visibility scope (all branches visible to the user). It also implies the output content. It stops short of describing result shape details, error behavior, or whether stale-lead thresholds are configurable.

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

Conciseness5/5

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

Three short sentences, front-loaded with what is returned, then the safety note, then the parameter and prerequisite. Every sentence adds information an agent needs; nothing is padding.

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-optional-parameter read tool with no output schema, the definition covers purpose, the only parameter's semantics, and the multi-branch prerequisite, which is enough to call it correctly. A brief note on the response granularity (e.g. per-stage buckets vs totals) would close the last gap.

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

Parameters5/5

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

Schema coverage is 0% — the single 'branch' parameter has no schema description — and the description fully compensates: it names both accepted forms ('general' or a branch id obtained from crm_list_branches) and defines the omitted-value default. An agent could construct a valid call from the description alone.

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 enumerates exactly what the tool returns (counts per stage, new today/this week, stale leads), which makes the resource and metric set unambiguous. It does not explicitly contrast itself with siblings like crm_list_leads or crm_list_stages, so an agent must infer that this is the aggregate view rather than the record-level one.

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

Usage Guidelines4/5

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

It gives a concrete prerequisite workflow: if the workspace has multiple branches, call crm_list_branches first, then report per branch or ask the user. It also states the default when branch is omitted. What's missing is an explicit 'use this instead of crm_list_leads when you want counts, not rows' routing statement against the closest sibling.

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

crm_update_branchRename a pipeline / change its membersAInspect

Rename a pipeline and/or replace its member list. The General pipeline cannot be changed. Admins/owner only.

NameRequiredDescriptionDefault
idYesBranch id (UUID)
nameNo
member_user_idsNoReplaces the member list

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the two most important behavioral facts: a protected object (General pipeline is immutable) and an authorization requirement (admin/owner). It still omits error behavior, whether the change is reversible, and what happens to leads already in the branch when members are replaced.

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

Conciseness5/5

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

Three short sentences, front-loaded with what the tool does followed by the two hard constraints. No filler, no restatement of the title, nothing to trim.

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 mutation tool with no annotations and no output schema, the description covers the key guardrails but leaves real gaps: whether at least one of name/member_user_ids must be supplied, what is returned, and any side effects on leads already assigned to the branch. Adequate but not sufficient to call confidently.

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% — the `name` parameter has no schema description at all, and the description only implies it via 'Rename'. The 'replace its member list' phrasing reinforces member_user_ids semantics but largely repeats the schema's own 'Replaces the member list' note, so added value is modest.

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: rename a pipeline and/or replace its member list, which maps cleanly onto the two optional write fields. The only weakness is terminology drift — the tool and its siblings (crm_create_branch, crm_get_branch, delete_crm_branch) say 'branch' while the description says 'pipeline', which could momentarily confuse an agent about whether these are the same object.

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

Usage Guidelines4/5

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

'The General pipeline cannot be changed' and 'Admins/owner only' give concrete when-not and prerequisite conditions that an agent cannot infer from the schema. It stops short of naming alternatives (e.g. crm_add_lead_to_branch / crm_move_lead_to_branch for membership changes versus replacing the whole list), but the usage context is clear.

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

crm_update_calendar_eventUpdate a CRM calendar eventAInspect

Edit an existing custom calendar event (title, times, all-day, description, colour, linked lead — lead_id null unlinks). Write operation, no credit cost.

NameRequiredDescriptionDefault
idYes
colorNo#RRGGBB
titleNo
end_atNoISO datetime
all_dayNo
lead_idNoLead id, or null to unlink
start_atNoISO datetime
descriptionNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description does real work: it declares this is a write operation and that it costs no credits, and it explains the null-unlink behavior for lead_id. However, it omits key mutation semantics — that only supplied fields change (id is the sole required param, so this is a partial update), and whether externally synced/non-custom events can be edited at all, despite the word "custom" hinting at a restriction.

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 puts the verb and resource first, then the editable fields, then the behavioral notes. No filler, no repetition of the title.

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 mutation tool with zero annotations and no output schema, the definition covers safety-relevant facts (write op, no credit cost, unlink semantics) but leaves the partial-update contract unstated and says nothing about permissions or failure modes. Adequate but with clear gaps an agent would have to discover by trial.

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 50%, and the description compensates by listing every editable field (title, times, all-day, description, colour, linked lead), mapping the unlabeled schema properties (title, all_day) to meaning. Minor friction: it says "colour" while the schema parameter is "color", and "times" must be inferred as start_at/end_at.

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 (edit) and resource (existing custom calendar event) and enumerates the editable fields, which lets an agent separate it from crm_create_calendar_event and crm_delete_calendar_event without opening the schema. It doesn't name those siblings explicitly, so it stops just 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 Guidelines3/5

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

"Edit an existing" implies the precondition that the event must already exist, but the description gives no explicit when-to-use vs when-to-create guidance and never points to crm_list_calendar_events as the way to obtain the required id. Usage is inferable rather than stated.

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

crm_update_leadUpdate lead fieldsAInspect

Patch lead attributes (name, company, title, email, LinkedIn, phone, notes, tags, deal value + currency). Stage and owner have their own tools (crm_move_lead, reassign_crm_lead). Reversible.

NameRequiredDescriptionDefault
idYes
tagsNoReplaces the tag list
emailNo
notesNo
phoneNo
titleNo
currencyNoISO code, e.g. USD
last_nameNo
deal_valueNo
first_nameNo
company_nameNo
linkedin_urlNoFull http(s) URL

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Patch' usefully signals partial-update semantics and 'Reversible' discloses the safety profile, which is real added value. However it omits permission requirements, what happens to unspecified fields, and the response shape, leaving meaningful gaps for a mutation tool.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the field scope before the sibling exclusions. No wasted words.

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

Completeness3/5

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

For a 12-parameter mutation tool with no annotations and no output schema, the description covers scope, partial-update intent, and reversibility but leaves auth, unspecified-field behavior, and return values unaddressed. Adequate but with clear gaps given the complexity.

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

Parameters3/5

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

Schema coverage is only 25%, and the description compensates by mapping its field list (name, company, title, email, LinkedIn, phone, notes, tags, deal value, currency) onto the parameters. Still, it adds no format guidance for fields like currency or linkedin_url, and mapping the names is largely redundant with the schema properties themselves.

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 (patch/update) and resource (lead), enumerates exactly which attributes are covered, and explicitly names the two fields (stage, owner) handled by sibling tools crm_move_lead and reassign_crm_lead. An agent can distinguish this from reassign_crm_lead and crm_move_lead without opening 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?

Clears the main routing ambiguity by directing stage changes to crm_move_lead and owner changes to reassign_crm_lead, implicitly scoping this tool to those fields. It stops short of stating prerequisites or when-not-to-use beyond the two exclusions, so not a full 5.

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

crm_update_settingsUpdate CRM settingsAInspect

Change workspace CRM settings: which notifications fire (new lead, reassigned, mention; by email and/or in-app), the stale-lead alert, the default date range, and which agents / sources / LinkedIn accounts never create leads. Write operation, no credit cost. Turning notifications off or excluding sources means the human stops being alerted / leads stop appearing, so confirm with the user first. (Personal email preferences: update_notification_preferences.)

NameRequiredDescriptionDefault
notify_emailNoSend CRM notifications by email
notify_in_appNoShow CRM notifications in the bell
notify_mentionNo
notify_new_leadNo
excluded_sourcesNoLead sources to ignore, e.g. ["widget_form"]. Replaces the list.
stale_alert_daysNo
notify_reassignedNo
default_date_rangeNo
excluded_agent_idsNoAgents whose conversations never create leads (ids from crm_list_workspace_agents). Replaces the list.
excluded_linkedin_account_idsNoFrom crm_list_linkedin_accounts. Replaces the list.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It correctly discloses the write nature, zero credit cost, and the concrete consequences of the risky fields ('the human stops being alerted / leads stop appearing'), which is valuable. However, it never states the partial-update contract — with 10 optional parameters and nothing required, an agent cannot tell whether omitted fields are left unchanged or reset, which is the single most consequential unknown here.

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 scope, then the write/cost traits, then the risk warning, then the sibling pointer — a logical ordering with no filler. It is dense but each sentence carries information; only the parenthetical sibling note could be trimmed.

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 mutation tool with no annotations and no output schema, the description covers purpose, effects, cost, risk, list-replacement semantics, and an alternative route. The missing piece is update semantics for unspecified fields and whether changes are reversible, which is material for an all-optional write tool.

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

Parameters4/5

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

Schema coverage is only 50%, and the description compensates by naming the notification events (new lead, reassigned, mention), the email vs in-app channels, the stale-lead alert, and the three exclusion lists that correspond to otherwise-undocumented parameters. It stops short of explaining units/bounds for stale_alert_days or the meaning of the default_date_range values, both left to the schema and enum.

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 precise verb and resource ('Change workspace CRM settings') and enumerates the settings domains it governs: notification triggers/channels, stale-lead alert, default date range, and lead-creation exclusion lists. That is enough to distinguish it from crm_get_settings, update_crm_integration_settings, and update_notification_preferences without opening a 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?

Gives an explicit routing rule to the sibling for personal email preferences and an explicit behavioural rule ('confirm with the user first' when disabling alerts or excluding sources). It does not say when to prefer this over crm_get_settings for inspecting current values, so the guidance is clear but not exhaustive.

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

crm_update_stageRename / recolor a pipeline stageAInspect

Rename, recolor or toggle is_terminal of a stage. System stages (New, Manager Dialog) cannot be renamed. To change the column order use crm_reorder_stages.

NameRequiredDescriptionDefault
idYes
nameNo
colorNo#RRGGBB
is_terminalNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the system-stage guard, which is real behavioral information an agent could not infer from the schema. However it says nothing about reversibility, whether omitted fields leave values unchanged, or what errors occur when a system stage is targeted.

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

Conciseness5/5

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

Three short sentences, front-loaded with the operation, followed by the constraint and then the routing hint. No filler and every clause carries distinct information.

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 mutation tool with no annotations, no output schema and low schema coverage, the description covers the guard and the ordering alternative but omits partial-update semantics and confirmation/undo expectations. Adequate to start, not fully complete for a write operation.

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

Parameters3/5

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

Schema description coverage is only 25% (just color's '#RRGGBB'), so the description must compensate. It does map natural language to parameters (rename→name, recolor→color, toggle→is_terminal), but leaves `is_terminal` semantically unexplained and does not state that omitting name/color/is_terminal leaves those values untouched.

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 set of verbs (rename, recolor, toggle is_terminal) acting on a stage resource, matching the tool name precisely. It explicitly routes the ordering concern to crm_reorder_stages, distinguishing it from the one sibling most easily confused with it, though it doesn't contrast with delete_crm_stage or crm_create_stage.

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

Usage Guidelines4/5

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

It gives a concrete when-not condition ('System stages (New, Manager Dialog) cannot be renamed') and names the alternative tool for a related-but-different operation. It lacks an explicit positive trigger such as 'use this when you need to change a stage's label or colour', but the context is clear enough to select correctly.

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

crm_upload_lead_documentAttach a document to a leadAInspect

Attach one file to a lead card (base64 or https URL). Allowed: pdf, doc(x), xls(x), csv, txt, rtf, odt, ods, ppt(x), png, jpg, gif, webp, heic, zip. Stored privately; adds an activity entry. No credits.

NameRequiredDescriptionDefault
idYesLead id (UUID)
file_urlNoPublic https URL to fetch the file from (≤10 MB). Use this OR content_base64.
filenameNoFile name WITH extension (decides the type). Required with content_base64.
content_base64NoFile content, base64 (≤ ~7 MB). Use this OR file_url.

TDQS

A4/5.0
Behavior4/5

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

No annotations, so the description carries the behavioral burden and does add real information: storage is private, an activity entry is created as a side effect, and no credits are consumed. It still omits permission/auth requirements and how to undo (delete_crm_lead_document / preview variant), but the disclosed side effects and cost model are meaningful.

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

Conciseness5/5

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

Three tight sentences: purpose first, then a format allowlist, then behavioral notes. The long extension list is informative rather than padding, and no sentence repeats structured fields verbatim.

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 four-parameter mutation tool with no annotations and no output schema, the description covers input modes, allowed types, storage privacy, side effects, and credit cost — most of what an agent needs. Gaps remain around permissions and return/error behavior, but the core is complete.

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

Parameters3/5

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

Schema coverage is 100% and already documents id, file_url, filename, and content_base64 with size limits. The description's 'base64 or https URL' and 'one file' restate the existing either/or constraint without adding format or syntax detail, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource — 'Attach one file to a lead card' — and immediately distinguishes this from generic document tools by naming the accepted formats and the two input modes. An agent can tell this is the lead-attachment path rather than add_agent_document or upload_custom_audience.

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

Usage Guidelines3/5

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

The description implies when to use it (attaching a file to a lead) and constrains to one file, but gives no explicit routing to crm_list_lead_documents, crm_get_lead_document, or the preview/delete siblings. Use is inferable from the name but not stated as when/when-not guidance.

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

deep_scan_agentDeep-scan the company website (15 credits)AInspect

Read the company website + LinkedIn and extract description, team, employee count, contacts, social links and pricing. Costs 15 credits, takes 60-180 s. With persist=true (default) the result is SAVED like in the app: company_description replaced, team/contacts/social/pricing stored (creates company + people records, fills blank contact channels). Waits up to ~200 s; if still running it returns a job_id — then call get_agent_job. Only call after preview_deep_scan and the user's approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
persistNoSave the result onto the agent (default true)
auto_updateNoRe-scan automatically
company_nameNoDefaults to the agent's company_name
company_websiteNoDefaults to the agent's company_website

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses cost (15 credits), latency (60-180s), the ~200s wait limit and job_id fallback, and the concrete side effects of persist=true — company_description is replaced, team/contacts/social/pricing records are created, and blank contact channels are filled. That is exactly the mutation risk an agent needs before calling.

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-loaded with purpose, then cost/time, then persistence semantics, then the escape hatch — a logical order with almost no filler. The single long middle sentence about persist is dense and could be split, but nothing is redundant.

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

Completeness4/5

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

Covers the async/job pattern, cost, latency, and mutation effects, which are the hard parts for a 5-param tool with a nested auto_update object and no output schema. The auto_update scheduling object is never addressed, and there is no statement about what the response contains when it completes in-band, leaving a small gap.

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 the baseline is 3. The description goes beyond the schema by explaining the consequence of persist=true (what gets saved, what gets overwritten) rather than just its default. It does not mention auto_update, company_name, or company_website, so it is not complete.

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+resource (deep-scan the agent's company website + LinkedIn) and enumerates exactly what it extracts. It is clearly distinguishable from scan_website_quick, scan_agent_website and preview_deep_scan, which it explicitly contrasts by naming the preview as a prerequisite.

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?

Gives an explicit gating rule ("Only call after preview_deep_scan and the user's approval") plus a follow-up route: if the call times out with a job_id, use get_agent_job. Both the when-to-use and the after-use path are named with sibling tool names.

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

delete_agentDelete an agent (irreversible)AInspect

Permanently delete an agent. NOT reversible. Only call after the user has reviewed preview_delete_agent output and explicitly approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does so well: it discloses irreversibility and mandates a human-approval workflow. It stops short of stating permission/scope requirements or what happens to related data (campaigns, connections) when an agent is removed.

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

Conciseness5/5

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

Three short sentences, no filler, with the irreversible nature and the approval gate front-loaded before any elaboration. 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 destructive tool with no annotations and no output schema, the description supplies the critical operational context (permanence + approval workflow). It could be more complete by noting permission requirements or cascading side effects, but nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 0% and the single 'id' parameter is undocumented, but the tool name makes its referent (agent id) unambiguous in context. The description adds no format, type, or lookup guidance beyond that inference.

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 ('delete an agent') and front-loads the key scope constraint ('Permanently... NOT reversible'). It is clearly distinguishable from the sibling preview_delete_agent and from archive_campaign, which implies recoverable archival rather than deletion.

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 names the prerequisite sibling ('only call after the user has reviewed preview_delete_agent output') and the approval condition required to proceed. This is a complete when-to-use gate rather than implied context.

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

delete_agent_connectionRemove a channel (irreversible)AInspect

Remove a channel from the agent (the embed code stops working). No undo. Only after preview_delete_agent_connection and explicit user approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does so for the most important traits: it is destructive, irreversible ('No undo'), breaks the embed code, and requires prior preview plus user approval. It does not cover permissions/authentication or response behavior, so it is strong but not exhaustive.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and effect, then irreversibility, then the prerequisite. Every sentence adds decision-relevant information with no filler.

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

Completeness4/5

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

For a simple two-parameter destructive tool whose parameters are fully documented in the schema, the description covers the critical context: side effect, irreversibility, and approval gate. It could be more complete by noting permission requirements or post-delete behavior, but the essential invocation context is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter schema already explains both required UUIDs and their sources. The description adds no additional parameter-level meaning beyond what the schema provides, making the baseline score appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: removing a channel from an agent, with the concrete effect that the embed code stops working. This distinguishes it from siblings like delete_agent or update_agent_connection by focusing on a channel connection rather than the agent itself or a modification.

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?

It explicitly states the required sequence: only after preview_delete_agent_connection and explicit user approval. This gives the agent a clear gating condition and names the prerequisite sibling tool, leaving little inference needed before invocation.

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

delete_app_notificationDelete an app notificationCInspect

Remove one in-app notification from the caller's list.

NameRequiredDescriptionDefault
idYesNotification id (UUID)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says 'Remove one' but does not disclose whether deletion is permanent, what happens if the id is invalid or already deleted, whether permissions are required, or what the caller receives on success.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple one-parameter tool, though it could have used the same space to include one clarifying behavioral detail.

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 simple single-parameter delete tool, the schema fully documents the required id. However, with no annotations and no output schema, the description should do more to explain deletion consequences and success/error 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%, and the only parameter ('id') is documented in the schema as a UUID. The description adds no additional meaning about the id or its format beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Remove') and resource ('one in-app notification'), and scopes it to 'the caller's list.' This distinguishes it from list_app_notifications and mark_app_notification_read without naming them explicitly.

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 deletion rather than listing or marking read, but it gives no explicit guidance on when to use this tool versus siblings like mark_app_notification_read, mark_all_app_notifications_read, or list_app_notifications. No prerequisites or exclusions are stated.

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

delete_campaignDelete a campaign (irreversible)AInspect

Permanently delete a campaign. NOT reversible. Only call after the user has reviewed preview_delete_campaign output and explicitly approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the critical trait: irreversibility ('Permanently', 'NOT reversible') plus the human-approval gate. It stops short of stating auth/permission requirements or what happens to associated campaign data, so 4 rather than 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 destructive action and irreversibility, followed immediately by the precondition. No filler.

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

Completeness4/5

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

For a one-parameter destructive tool with no annotations and no output schema, the description covers the safety-critical information: permanence and the required approval workflow. The only meaningful gap is the undocumented `id` parameter.

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 0% and the description never mentions the single required `id` parameter or what it identifies. The agent must infer from the tool name that `id` is a campaign identifier; the description adds no format or meaning beyond that inference.

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 ('Permanently delete a campaign') and distinguishes itself from the nearby siblings `archive_campaign` (softer alternative) and `preview_delete_campaign` (the review step). An agent can route correctly without opening 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 Guidelines5/5

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

Explicit precondition: only call after reviewing `preview_delete_campaign` output and obtaining explicit user approval. This names both the prerequisite tool and the gating condition, leaving nothing to inference.

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

delete_crm_branchDelete a pipelineAInspect

Delete a non-default pipeline; its leads are not deleted but return to General. NOT reversible. Admins/owner only. Only call after the user approved preview_delete_crm_branch.

NameRequiredDescriptionDefault
idYesBranch id (UUID)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the load well: it discloses irreversibility, the side effect on leads (reassigned to General rather than deleted), and the permission requirement. It stops short of saying what happens on attempting a default pipeline (error vs. silent refusal), so a 4 rather than 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?

Four short clauses, each carrying distinct decision-relevant information: constraint, side effect, reversibility, authorization, and sequencing. Nothing redundant.

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 irreversible mutation with no annotations and no output schema, the description covers the critical decision facts (non-default only, lead fate, approval gate). Minor gap: no mention of failure behavior for default pipelines or what the response confirms.

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?

One parameter at 100% schema coverage, so the schema already documents the UUID branch id. The description adds no format detail, but for a single-parameter tool the baseline is 4.

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

Purpose5/5

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

Specific verb plus resource ('Delete a non-default pipeline'), with an explicit scope qualifier that separates it from crm_update_branch, delete_crm_stage, and the sibling preview_delete_crm_branch.

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?

States prerequisites explicitly: only non-default pipelines, admin/owner only, and only after the user approved preview_delete_crm_branch. That is a when-to-use gate and effectively names the required alternative path.

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

delete_crm_leadDelete a CRM lead (soft)AInspect

Soft-delete a lead — it disappears from the pipeline (restorable by support only). Only call after the user reviewed preview_delete_crm_lead output and explicitly approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the delete is soft, that the lead vanishes from the pipeline, that restoration is possible only through support (a real constraint the agent should communicate), and that explicit user approval is required. It stops short of stating return value, permission requirements, or what happens to associated notes/activities.

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. The behavioral consequence ('disappears from the pipeline') and the constraint ('restorable by support only') are front-loaded before the approval gate, so the most decision-relevant facts land first.

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 single-parameter mutation tool with no output schema and no annotations, the description covers the essentials an agent must know: soft semantics, restore path, and the approval prerequisite. Only the return value and side effects on related records are unaddressed, which are secondary here.

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 0%, so the schema only tells the agent that `id` is a required string. The description never clarifies that this is the lead ID (versus, say, an activity or stage id), nor its format. Because there is only one, highly inferable parameter in a tool whose name names the resource, the gap is minor but real.

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 ('Soft-delete a lead') and immediately clarifies the semantics of that verb — the lead disappears from the pipeline. This cleanly distinguishes it from siblings like delete_crm_stage, crm_update_lead, and archive, which would otherwise be plausible alternatives.

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 names the prerequisite tool path: only call after the user reviewed `preview_delete_crm_lead` output and explicitly approved. This is exactly the when-to-use/when-not-to-use guidance an agent needs for an irreversible-feeling operation.

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

delete_crm_lead_documentDelete a lead documentAInspect

Permanently delete a file from a lead card. NOT reversible. Only call after the user approved preview_delete_crm_lead_document.

NameRequiredDescriptionDefault
idYesLead id (UUID)
document_idYesDocument id (UUID)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it does disclose the key trait: deletion is permanent and NOT reversible. It does not cover permission requirements, whether the file is removed from storage vs. unlinked, or error behavior, which keeps it at 4 rather than 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?

Three short sentences, zero filler, with the irreversible nature front-loaded ahead of the approval prerequisite. 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 simple two-parameter destructive tool with no output schema, the description covers the risk profile and the required workflow gate. Only minor gaps remain (permissions, failure modes), which is sufficient 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?

Schema description coverage is 100% and both parameters (lead id, document id) are documented as UUIDs in the schema. The description adds no additional parameter semantics, which is acceptable at this coverage level but warrants the 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 and resource ('Permanently delete a file from a lead card'), which is precise enough to distinguish it from delete_crm_lead (whole lead) and remove_agent_document (agent knowledge base). The scope 'from a lead card' pins down the ownership context.

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?

Explicit gating condition: 'Only call after the user approved preview_delete_crm_lead_document' names the required prior tool and the human-approval precondition. This is a concrete when-to-use rule rather than implied usage.

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

delete_crm_stageDelete a pipeline stageAInspect

Delete an EMPTY, non-system pipeline stage. Only call after the user reviewed preview_delete_crm_stage and explicitly approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does so well: it declares this is destructive, guards it behind a preview-plus-explicit-approval gate, and warns that only empty, non-system stages qualify. It stops short of describing the failure mode when a stage is non-empty or what the response looks like, 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.

Conciseness5/5

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

Two short sentences, zero waste, with the eligibility constraint front-loaded ahead of the procedural precondition.

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 single-parameter destructive tool with no annotations and no output schema, the description supplies the essential guardrails (emptiness, non-system, approval flow). Only the identifier semantics and post-call behavior are unaddressed.

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?

One parameter (`id`) with 0% schema description coverage, and the description never explains that this is the stage identifier or where to obtain it (e.g., crm_list_stages). The phrase 'pipeline stage' only indirectly implies the id's referent.

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 ('Delete ... pipeline stage') and narrows scope precisely with 'EMPTY, non-system', which separates it from crm_create_stage, crm_update_stage, and the preview variant without requiring a schema read.

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 names the required prerequisite tool (`preview_delete_crm_stage`) and the condition for invoking this one ('only call after the user ... explicitly approved'). That is a clear when-to-call rule, plus an implicit when-not-to (non-empty or system stages).

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

delete_custom_audienceDelete a custom audienceAInspect

Permanently delete a custom audience with all its contacts and source file. NOT reversible. Only call after the user approved preview_delete_custom_audience.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does so well: it discloses destructiveness, the cascading scope (contacts and source file), and irreversibility. It does not mention permission/ownership requirements or what the response returns, which keeps it just below the top mark for a zero-annotation mutation tool.

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

Conciseness5/5

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

Three short sentences, each carrying a distinct and load-bearing fact: scope, irreversibility, prerequisite. The danger signal is front-loaded with 'Permanently' and 'NOT reversible' before the procedural constraint.

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

Completeness5/5

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

For a single-parameter destructive tool with no annotations and no output schema, the description supplies everything needed to call it safely: what is destroyed, that it cannot be undone, and the approval precondition.

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 there is only one parameter (`id`, documented as a UUID in the schema), so the description adds nothing about parameters. Baseline 3 applies when the schema does all the work.

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 ('Permanently delete a custom audience') and immediately scopes it against its sibling delete_custom_audience_contact by saying the whole audience plus contacts and source file go. An agent can distinguish this from the single-contact delete and from preview_delete_custom_audience without opening a 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 names the prerequisite tool (`preview_delete_custom_audience`) and the human-approval gate that must precede this call, which is exactly the when-to-use condition an agent needs for an irreversible action. No alternative path is left ambiguous.

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

delete_custom_audience_contactRemove a contact from a custom audienceAInspect

Permanently remove one contact from a custom audience (not reversible). Optional reason (UI choices: Not relevant, Wrong contact, Already a customer, Bad data, Other) is logged to improve automatic selection. Only call after the user approved preview_delete_custom_audience_contact.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
reasonNo
contact_idYesContact id (UUID)

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the whole burden and does it: it declares the operation permanent and not reversible, explains that the reason string is logged to improve automatic selection, and imposes a precondition on a specific preview tool. That is the destructive-action context an agent needs before invoking.

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

Conciseness5/5

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

Three short sentences with the irreversible warning front-loaded, followed by reason semantics and the prerequisite. Every sentence adds distinct information and none restates 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?

Covers the destructive nature, the reason field's valid values, and the required prior approval step, which is sufficient for a three-parameter mutation with no annotations. It could mention what is returned or whether the removal affects audience counts, but no output schema exists so the omission is minor.

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 67% and the optional `reason` field has no enum in the schema; the description fills that gap by listing the UI choices (Not relevant, Wrong contact, Already a customer, Bad data, Other) and explaining the field's downstream purpose. It adds little about `id` or `contact_id`, but the schema already labels both as UUIDs.

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 ('Permanently remove one contact from a custom audience') and makes the granularity explicit with 'one contact', which separates it from delete_custom_audience targeting the whole audience. An agent can identify the exact unit of work without opening the 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?

Gives an explicit gating rule: 'Only call after the user approved preview_delete_custom_audience_contact', naming the sibling that must run first. This is a concrete when-to-call workflow condition, not implied guidance.

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

delete_narrator_leadDelete a presentation lead (irreversible)AInspect

Permanently delete a presentation lead. Only after preview_delete_narrator_lead and explicit user approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
lead_idYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does disclose the two most important traits: the deletion is permanent/irreversible and it requires prior preview plus user approval. It stops short of saying what else is removed (attachments, history) or what happens on an invalid lead_id.

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 padding, and the destructive nature is front-loaded before the precondition. 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 an annotation-free destructive tool with no output schema and two required params, the description covers the critical safety workflow. The remaining gaps — where to source lead_id, cascade effects of deletion, and error behavior — are real but secondary.

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

Parameters2/5

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

Schema coverage is only 50%: `id` is documented in the schema but `lead_id` has no description anywhere. The description adds no parameter-level detail and does not compensate — it never explains that lead_id identifies the narrator lead (nor where to obtain it, e.g. list_narrator_leads).

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 ('delete') and resource ('presentation lead'), with 'Permanently' reinforcing the scope. It distinguishes itself from update_narrator_lead and preview_delete_narrator_lead by name, though the mild mismatch between 'presentation lead' and 'narrator lead' leaves slight ambiguity about which entity type is targeted.

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 names the required prerequisite (preview_delete_narrator_lead) and the human-in-the-loop condition (explicit user approval). An agent knows exactly what must happen before calling this, and the prerequisite implicitly excludes direct invocation.

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

disconnect_client_mailboxDisconnect an own mailboxAInspect

Stop using the mailbox as a sender. If none remain, client_owned campaigns cannot send or launch. Only after the user approved preview_disconnect_client_mailbox.

NameRequiredDescriptionDefault
mailbox_idYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses the downstream consequence (client_owned campaigns cannot send or launch if no sender remains), but says nothing about whether the mailbox credentials are preserved, whether the action is reversible via reconnect, or what permissions are required.

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

Conciseness5/5

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

Three short sentences: action, consequence, prerequisite. Front-loaded and every sentence carries information an agent cannot get from structured fields.

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?

Covers impact and the approval workflow well for a single-param mutation with no annotations or output schema. The remaining hole is the identifier itself, which neither the schema nor the description explains.

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?

One required parameter with 0% schema description coverage, and the description never mentions mailbox_id — no indication of whether it is the mailbox's own id, a provider address, or a workspace-scoped identifier. With zero schema help, the description had to compensate and does not.

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 action on a specific resource: 'Stop using the mailbox as a sender.' That is clearly distinct from connect_client_mailbox and reconnect_client_mailbox, though the description never literally names the mailbox object being disconnected.

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 precondition — call only after the user approved preview_disconnect_client_mailbox — which is exactly the kind of gating an agent needs for a destructive action. It stops short of naming alternatives (reconnect, list_client_mailboxes) or conditions where disconnecting is a bad idea.

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

disconnect_content_accountDisconnect a social publishing accountAInspect

Remove the publishing account; it can no longer publish posts. Only after the user approved preview_disconnect_content_account.

NameRequiredDescriptionDefault
account_idYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; it does disclose the post-condition that the account can no longer publish, which is useful behavioral context. However it does not say whether scheduled/draft posts, historical analytics, or campaign associations are lost, nor whether the disconnect is reversible via connect_content_account.

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 its effect, with the gating precondition last. Nothing is wasted and nothing relevant is missing.

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 mutation tool with no annotations and no output schema, the description covers purpose and the approval gate but leaves the agent guessing about irreversible data loss and parameter sourcing. Adequate as a minimum-viable definition, with clear gaps.

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?

There is one parameter with 0% schema description coverage, and the description never references account_id — not its format, nor how to obtain it (e.g., from list_content_accounts). The agent must infer parameter sourcing entirely from context.

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

Purpose5/5

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

Specific verb+resource ("Remove the publishing account") plus the operational consequence ("can no longer publish posts"), which distinguishes it from connect_content_account, list_content_accounts, and preview_disconnect_content_account. An agent can identify the tool and its effect without opening the 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 gates invocation on prior user approval of preview_disconnect_content_account, which is the key ordering constraint for this family of destructive tools. It stops short of naming other alternatives (e.g., list_content_accounts for discovery or reconnect paths), but the primary when-to-use condition is stated.

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

disconnect_crm_integrationDisconnect a CRM integrationAInspect

Remove the Kommo/HubSpot connection: syncing stops, tokens and settings are deleted; reconnecting needs OAuth again. Only call after the user approved preview_disconnect_crm_integration.

NameRequiredDescriptionDefault
providerYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does most of it: syncing stops, tokens and settings are deleted, and reconnecting requires OAuth again — all material consequences for a destructive action. It stops short of stating what happens to already-synced CRM data or any permission/admin requirement, which is why it is 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.

Conciseness5/5

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

Two sentences, zero waste, and the destructive consequences are front-loaded before the gating precondition. Nothing repeated or 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 one-parameter destructive tool with no annotations and no output schema, the description covers consequences and the required prior approval. A note on previously synced CRM data and who may perform the operation would close the remaining gap, but nothing needed to call 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?

The single parameter is an enum with two self-explanatory values, so the schema does most of the work despite 0% description coverage. The phrase 'Kommo/HubSpot connection' confirms that provider selects which integration is removed, but adds no format or default detail beyond the enum.

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?

A specific verb (Remove/disconnect) plus a specific resource (the Kommo/HubSpot CRM connection). Naming the two providers distinguishes it immediately from connect_crm_integration and from every other disconnect_* sibling.

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?

It gives an explicit precondition that also names the alternative: 'Only call after the user approved preview_disconnect_crm_integration.' An agent knows to route to the preview tool first and must not call this unprompted.

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

disconnect_google_meetDisconnect Google MeetAInspect

Remove the Google Meet channel from the agent and turn auto-join off. Already scheduled meetings are not cancelled (use cancel_meeting). Only after preview_disconnect_google_meet and user approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses the key non-obvious behavior: scheduled meetings are NOT cancelled, and the call must follow a preview plus user approval. It stops short of stating idempotency, whether reconnecting restores prior settings, or permission requirements, so it is strong but not exhaustive.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action, then the non-obvious non-effect, then the required sequence. Every sentence earns its place and nothing is redundant.

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 mutation with no output schema, the description covers the action, scope of destruction, and required approval workflow. It would be complete at 5 with a note on reversibility (e.g. reconnect via connect_google_meet) or whether prior auto-join settings are retained.

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 parameter ('id'), fully documented in the schema with its provenance ('from list_agents'). The description adds no additional meaning about the parameter, so the baseline of 3 for complete schema coverage applies.

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

Purpose5/5

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

States a specific verb and resource ('Remove the Google Meet channel from the agent') plus the side effect ('turn auto-join off'), which distinguishes it from connect_google_meet and get/update_google_meet_settings. It also explicitly contrasts with cancel_meeting, so an agent can route correctly without opening schemas.

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?

Gives an explicit precondition chain: run preview_disconnect_google_meet first and obtain user approval. It also names the alternative (cancel_meeting) for the adjacent need of cancelling already-scheduled meetings, covering both when-to-use and when-to-use-something-else.

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

disconnect_linkedin_accountDisconnect a LinkedIn accountAInspect

Remove a LinkedIn account from the workspace. Any campaign or SDR search sending from it stops immediately and daily capacity drops. Only call after the user reviewed preview_disconnect_linkedin_account and explicitly approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and delivers important impact details: campaigns or SDR searches sending from the account stop immediately and daily capacity drops. It does not mention reversibility, required permissions, or the return value, which keeps it from 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?

Three sentences, front-loaded with the core action and immediate consequences, followed by the approval prerequisite. Every sentence earns its place with no filler.

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

Completeness4/5

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

For a destructive, annotation-free tool with one undocumented parameter and no output schema, the description covers the most critical behavioral impact and the required approval workflow. The only notable omission is the meaning of the `id` parameter, which leaves a small but real gap.

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 0% for the single required `id` parameter, meaning the schema provides no meaning. The description never explains what `id` refers to (presumably a LinkedIn account identifier), so it fails to compensate for the coverage gap.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Remove a LinkedIn account from the workspace.' It clearly distinguishes this destructive disconnect from siblings like connect_linkedin_account and reconnect_linkedin_account by naming the exact resource operation.

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

Usage Guidelines4/5

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

It explicitly states the required prerequisite: 'Only call after the user reviewed `preview_disconnect_linkedin_account` and explicitly approved.' This gives clear when-to-use guidance, though it does not name any alternative tool or when-not condition beyond the approval gate.

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

disconnect_telegram_botDisconnect Telegram botAInspect

Detach the bot from this agent: the webhook is removed and the bot stops answering (it keeps existing in Telegram; chat history is kept; reconnect with connect_telegram_bot). Only after preview_disconnect_telegram_bot and the user's approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does well: it discloses that the Telegram-side bot survives, chat history is preserved, and the action is reversible via reconnect. It does not cover permission/auth requirements or error cases (e.g. no bot connected), which keeps it from 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?

A single front-loaded sentence: the operation first, then the consequences in a parenthetical, then the precondition. No sentence is filler, and the destructive/reversible facts are grouped where an agent will read them.

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, no-annotation mutation tool, the description supplies the essential behavioral contract (what breaks, what is kept, how to undo) plus the approval gate. Only the authorization requirements and failure behavior are unstated, which is a modest 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?

Only one parameter (agent id) at 100% schema coverage, which the schema already explains as a UUID obtainable from list_agents. The phrase 'from this agent' reinforces the scoping but adds no format or sourcing detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (detach), the exact resource (the bot bound to this agent), and what detaching means operationally (webhook removed, bot stops answering). Clearly separable from connect_telegram_bot, reconnect_telegram_bot, and the other disconnect_* siblings by naming the Telegram bot resource.

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 imposes a prerequisite sequence: only after preview_disconnect_telegram_bot and user approval. Also routes the agent to connect_telegram_bot for the reverse action, so both when-to-use and the alternative are covered.

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

disconnect_whatsapp_accountDisconnect WhatsApp (irreversible)AInspect

Disconnect and delete the WhatsApp account; auto-replies stop and reconnecting needs a new QR scan. Only after preview_disconnect_whatsapp_account and user approval.

NameRequiredDescriptionDefault
account_idYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses irreversibility (deletion), the functional consequence (auto-replies stop), and the recovery cost (a new QR scan is required). It stops short of stating permission/ownership requirements or what the response returns, which keeps it from 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, zero filler; the destructive action and its consequences come first, with the precondition second. Every clause carries actionable 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 an irreversible mutation with no annotations and no output schema, the description supplies the critical safety narrative — permanence, downstream effect, and the required preview/approval sequence. The only meaningful omission is how to obtain a valid account_id.

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 0% and the single parameter account_id is never mentioned in the description, so an agent gets no hint about where the identifier comes from (presumably list_whatsapp_accounts) or its format. 'The WhatsApp account' only loosely implies an identifier is needed, which does not compensate for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Disconnect and delete the WhatsApp account') plus the consequence, which unambiguously separates it from connect_whatsapp_account and list_whatsapp_accounts. The parenthetical 'irreversible' in the title is reinforced by 'delete' in the description body.

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 names the prerequisite sibling (preview_disconnect_whatsapp_account) and the human gate ('user approval'), telling the agent exactly what must happen before invocation. There is no ambiguity about when this tool is appropriate.

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

duplicate_agentDuplicate an agentBInspect

Create a copy of an existing agent (new id, same config). Counts toward agent capacity.

NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it usefully discloses that the copy gets a new id, inherits config, and consumes agent capacity — a real behavioral trait. It omits permissions, whether the duplicate starts active or paused, and what is returned.

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 compact sentences, zero waste, with the core copy semantics and the capacity caveat front-loaded.

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

Completeness4/5

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

For a one-parameter mutation with no output schema and no annotations, the description covers effect and quota impact well. The remaining gap is the return value (the new agent's id), which an agent might need to chain calls.

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 0%, so the single required 'id' is undocumented in structured data. The phrase 'existing agent' implies the id identifies the source, but no format, source, or example is given, leaving the parameter thinly specified.

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 (copy/create) and resource (agent) with the defining constraint 'new id, same config'. It implicitly separates itself from create_agent and update_agent, but never names a sibling to make the distinction explicit.

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

Usage Guidelines2/5

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

No guidance on when to duplicate versus creating a fresh agent or updating one. The note about capacity is a consequence, not a use condition, and there are no exclusions or prerequisites (e.g., source agent must exist).

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

duplicate_campaignDuplicate a campaignAInspect

Copy a campaign (settings + audience) into a new DRAFT named ' (Copy)'. Nothing is sent. Note: the copy re-uses company-based audiences only and has no CRM branch; check get_campaign of the copy before launching.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden and does well: it discloses that the result is a DRAFT, that 'nothing is sent', and that audience fidelity is partial (company-based only, no CRM branch). It does not mention permissions, rate limits, or whether the original is touched, but the key side-effect profile is stated.

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 and naming behavior, then the caveat and verification step. Every clause carries information an agent needs; 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 one-parameter creation tool with no annotations and no output schema, the description covers the important unknowns: draft state, absence of sending, audience limitation, and a verification step. Only secondary details like permissions or the returned identifier are unstated, which is minor.

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

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is documented in the schema as a UUID from list_campaigns. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description gives a specific verb (copy) and resource (campaign), and pins the scope: settings plus audience, into a new DRAFT with a defined naming convention. That is enough for an agent to tell it apart from create_campaign or duplicate_agent without opening the 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?

It states the post-copy condition ('check get_campaign of the copy before launching') and a key limitation ('re-uses company-based audiences only and has no CRM branch'), which shapes when this copy is usable. It stops short of naming an explicit alternative for cases where CRM branches matter, but the caveat effectively serves as a when-not signal.

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

enrich_custom_audienceEnrich a custom audience (SPENDS CREDITS)AInspect

SPENDS CREDITS: starts background enrichment (email, phone, LinkedIn, WhatsApp lookups) of the not-yet-enriched contacts — 1 credit per contact actually enriched, charged as it runs. Only call after the user approved preview_enrich_custom_audience. Then poll get_custom_audience_enrichment; stop with stop_custom_audience_enrichment.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.7/5.0
Behavior5/5

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

With zero annotations, the description carries the full burden and does so: it discloses a real cost (1 credit per contact actually enriched, charged as it runs), the asynchronous/background execution model, and the external side effects (email, phone, LinkedIn, WhatsApp lookups). This is exactly the risk information an agent needs before spending money.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the credit-spend warning ('SPENDS CREDITS' in both title and first words), then the mechanism, then the workflow. No filler or repetition.

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

Completeness5/5

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

For an async, credit-consuming mutation with no output schema, the description supplies everything needed: cost model, background nature, prerequisite approval step, polling tool, and stop tool. An agent could execute the full lifecycle correctly from this text alone.

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 parameter (`id`) with 100% schema description coverage, so the schema already documents it as a custom audience UUID. The description adds no syntax, format, or constraint details beyond that, which is the expected 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.

Purpose5/5

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

States a specific verb (starts background enrichment) on a specific resource (not-yet-enriched contacts in a custom audience) and enumerates the lookup types covered. It also implicitly distinguishes itself from its preview/poll/stop siblings via the workflow language, so an agent can tell it apart without reading schemas.

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 gates invocation: 'Only call after the user approved `preview_enrich_custom_audience`.' It then names the follow-up alternative (`get_custom_audience_enrichment` for polling) and the exit path (`stop_custom_audience_enrichment`), covering when to use, what to use next, and when to stop.

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

export_custom_audience_csvExport a custom audience as CSVAInspect

Download every contact of a custom audience as CSV text (filename, total_rows, csv). Can be large. Read-only, free.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose useful traits: it is read-only, it is free (no credit cost), and the payload can be large. It omits practical concerns such as any row/size ceiling, whether huge audiences time out or truncate, and whether the call counts against rate limits.

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

Conciseness5/5

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

One sentence plus two short fragments, front-loaded with the action and immediately followed by the return shape. Every clause earns its place: return fields, size warning, safety and cost.

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, and the description compensates by enumerating the return keys, which is exactly what an agent needs to plan parsing. For a one-parameter export tool the remaining gap is only the absence of any size or failure-mode limits.

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 parameter and schema coverage is 100%, so the schema already documents 'id' as a custom audience UUID. The description adds only the audience scoping context and nothing about format or lookup failure behavior; baseline 3 applies 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?

States a specific verb and resource: downloading every contact of a custom audience as CSV text, plus the exact return fields (filename, total_rows, csv). An agent can distinguish it from get_custom_audience_contacts or sdr_export_people_csv, though the description never names those siblings 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: 'every contact' plus 'Can be large' signals this is a bulk-export path rather than a paginated listing. No explicit when-to-use statement, no mention of alternatives like get_custom_audience_contacts, and no prerequisite conditions.

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

generate_agent_descriptionDraft the company description from the websiteAInspect

AI-write "what the agent knows" about the company from its website (no full scan). Costs 1 credit. NOT saved — pass the text to set_agent_company (company_description).

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
company_nameNoDefaults to the agent's company_name
company_websiteNoDefaults to the agent's company_website
target_languageNoWrite in this language, e.g. "Ukrainian"

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses the 1-credit cost and, crucially, that the result is NOT persisted — the single most important behavioral fact for this tool. It leaves auth/permission requirements and failure behavior (e.g. unreachable website) unstated, so not quite 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?

A single compact sentence pair with the core action and the non-persistence warning front-loaded and the follow-up routing last. No filler, 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?

With no output schema, the description correctly explains the return value's nature (draft text, unsaved) and the required next step, which is the key gap it needed to close. Minor omissions remain around output length/format guarantees and what happens when the website cannot be read.

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 id, company_name, company_website and target_language are already documented in the schema; the description adds only the general notion of sourcing from the website. It does not clarify the defaulting behavior or language semantics beyond what the schema states, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb-and-resource ('AI-write what the agent knows about the company from its website') plus a scope qualifier ('no full scan') that separates it from the heavier scanning siblings like scan_agent_website or deep_scan_agent. An agent knows exactly what this produces without opening the 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 tells the agent what to do next — pass the returned text to set_agent_company (company_description) — which pins down the workflow position. It implies the light-touch alternative to a full scan via '(no full scan)' but never names when to prefer scan_agent_website or deep_scan_agent instead, so exclusions are only inferred.

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

generate_agent_page_descriptionsDescribe website pages with AIAInspect

Write AI descriptions + keywords for website pages (output of scan_agent_website). Costs 1 credit per 5 pages. Not saved.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
pagesYes

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully discloses that the operation costs 1 credit per 5 pages, that results are 'Not saved', and that it depends on scan_agent_website output; it stops short of explaining return shape, permissions, or rate limits.

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

Conciseness5/5

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

Three short sentences front-load the action, then add the input dependency, credit cost, and persistence caveat. Every sentence carries operational value with no filler.

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

Completeness3/5

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

The tool has no output schema and only partial parameter descriptions, so the description should carry more burden. It covers cost, non-persistence, and input origin, but leaves unclear what the returned descriptions/keywords look like or how they correspond to the supplied pages.

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 50%: the 'id' parameter is already described in the schema as an Agent UUID from list_agents. The description adds useful meaning for the 'pages' parameter by identifying it as website pages from scan_agent_website, but it does not explain the page object fields (path, title) or mapping behavior.

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 action (writing AI descriptions and keywords) for a specific resource (website pages) and identifies the input source as output from scan_agent_website. It is clear but does not explicitly distinguish itself from nearby sibling tools such as generate_agent_description or save_scan_data.

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 '(output of scan_agent_website)' implies this should be used after scanning a website, and 'Not saved' hints at its ephemeral role. However, it does not explicitly say when to use this versus save_scan_data, scan_website_quick, or other description-generation tools.

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

generate_agent_scriptGenerate the agent's scriptAInspect

Generate the agent's script (stages + full text + email/LinkedIn script) in the chosen tone for its direction (sales / support / info), using the company description and uploaded files. Saves it on the agent (overwrites). Costs 1 credit, takes 60-90 s. Needs company_name and company_description (set_agent_company). If it is still running after ~200 s you get a job_id → get_agent_job.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
purposeNoDefaults to the agent's direction
script_styleYesTone

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the result overwrites the saved script, costs 1 credit, takes 60-90 s, and can degrade into an async job after ~200 s. Missing only failure/error behavior and permission requirements.

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?

Dense and front-loaded: what it produces first, then side effects and cost, then prerequisites, then the async escape hatch. Every clause adds information; nothing is padding.

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 mutation tool with no annotations and no output schema, it covers what is produced, that it overwrites, cost, latency, prerequisite state, and the job_id handoff. Only error paths and what exactly the returned job represents are left implicit.

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

Parameters3/5

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

Schema coverage is 100%, so the id, purpose enum (sales/support/info), and script_style enum are already documented in the schema. The description repeats the purpose values and 'chosen tone' without adding syntax or defaults beyond what the schema states (purpose defaults to the agent's direction).

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 plus the concrete artifacts produced (stages, full text, email/LinkedIn script). The email/LinkedIn scope partly distinguishes it from generate_phone_script and generate_support_script, though those siblings are never 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?

It gives clear preconditions (company_name and company_description must be set via set_agent_company) and a follow-up path (get_agent_job on job_id), which is real usage context. However, it never says when to prefer this over generate_phone_script, generate_support_script, or update_agent_script, leaving the alternative selection to inference.

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

generate_knowledge_from_urlTurn a web page into a knowledge blockAInspect

Read a public web page and return a knowledge text block about it. Costs 1 credit. NOT saved — append the result to company_description with set_agent_company if you want the agent to know it.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
urlYesPublic http(s) page URL

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and discloses important behavior: it costs 1 credit, only reads public pages, and does NOT save the result. It does not cover failure modes or output limits, but the key operational traits are stated.

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

Conciseness5/5

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

Three compact sentences with zero waste. The primary action is front-loaded, followed by cost and persistence guidance, all of which matter for correct use.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema and no annotations, the description covers the return value, credit cost, and critical persistence behavior. It could add error handling or output format details, but it is largely complete 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?

Schema coverage is 100%, so both parameters are already documented as id from list_agents and a public http(s) URL. The description adds little parameter-specific meaning beyond reinforcing that the URL must be public, which matches the schema baseline.

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: reads a public web page and returns a knowledge text block. It also clarifies that the result is not saved, which helps distinguish it from tools that persist knowledge, though it does not explicitly name siblings like scan_website_quick.

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 clear usage context by explaining that to make the agent know the result, you must append it to company_description with set_agent_company. This is actionable guidance, though it does not explicitly compare against alternative website-scanning or document-adding tools.

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

generate_phone_scriptDraft a phone call scriptAInspect

Draft a call script and greeting from the agent's sales script for a call objective, in the agent's language. Free. Not saved — pass it to setup_phone_agent (or let setup_phone_agent generate it).

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
voice_genderNo
call_objectiveNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does disclose two important traits: the call costs nothing ("Free") and it is non-persistent ("Not saved"), which prevents the agent from assuming a write occurred. It stops short of stating prerequisites (does the agent need an existing sales script?) or what happens on failure.

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

Conciseness5/5

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

Three short, front-loaded sentences: what it produces, then cost/state, then the routing instruction. No filler, and the most decision-relevant facts (free, not saved) are placed early.

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

Completeness4/5

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

With no output schema the description correctly names what comes back (a call script and greeting) and warns that the result is ephemeral, which is the key thing an agent needs. It omits edge cases — behavior when the agent lacks a sales script, or length/format of the returned text — but the essentials for calling it correctly are present.

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

Parameters3/5

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

Schema coverage is 33% — only `id` is documented, and the description does not explain it beyond the schema's 'from list_agents'. It does add meaning for `call_objective` (it shapes the drafted script) and 'agent's language' implies locale behavior, but `voice_gender` is never mentioned in either place, so the description only partially compensates for the coverage gap.

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 (draft) and a specific pair of artifacts (call script and greeting), plus the source material (the agent's sales script) and the dimensioning inputs (call objective, agent language). This clearly separates it from setup_phone_agent and from generate_agent_script, though it never names generate_agent_script as the tool that produces the underlying sales script.

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?

"Free. Not saved — pass it to setup_phone_agent (or let setup_phone_agent generate it)" tells the agent both what to do with the result and that skipping this tool entirely is a valid alternative. What's missing is the motivating condition — e.g. 'use this when you want to review or iterate on wording before applying it' — so the agent must infer why it would pick this over just calling setup_phone_agent.

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

generate_slide_scriptWrite the presenter script for a slideAInspect

AI-write what the presenter says on one slide, in the presentation's language. 1 credit (2 with image_url — the AI looks at the slide). NOT saved — put it into narrator_script with set_presentation_slides.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
image_urlNoPublic URL of the slide image (optional, 2 credits)
slide_numberYes
total_slidesYes
extracted_textNoText on the slide
next_slide_textNo
previous_scriptNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses credit cost (1 credit, 2 with image_url), that the AI actually looks at the slide when image_url is supplied, that output is not persisted, and the required follow-up action. It does not cover authorization or rate limits, but for a generation tool this is solid disclosure.

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

Conciseness5/5

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

The description is front-loaded and efficient: it first states what the tool does, then the cost model, then the critical persistence caveat and required next step. Every clause earns its place.

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

Completeness3/5

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

The description covers the most important workflow facts—cost, optional image handling, non-persistence, and the required follow-up tool—but with 7 parameters, 43% schema coverage, no annotations, and no output schema, it omits enough parameter-level context that an agent may still need to inspect the schema carefully.

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 43%, so the description needs to compensate for several undocumented parameters. It adds useful meaning for image_url via the credit cost and AI-vision behavior, but says nothing about slide_number, total_slides, extracted_text, next_slide_text, or previous_script, leaving most parameter semantics to an incomplete schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'AI-write what the presenter says on one slide.' It also scopes the output by the presentation's language and distinguishes this per-slide script generation from broader sibling tools such as generate_agent_script or generate_transition_phrases.

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

Usage Guidelines4/5

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

It clearly explains the workflow after generation: the result is 'NOT saved' and must be placed 'into narrator_script with set_presentation_slides.' This gives strong operational context, though it does not explicitly compare when to use this versus other script-generation siblings.

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

generate_support_scriptGenerate a support knowledge script (legacy)AInspect

Legacy support-script generator of the old text-widget creators. Prefer generate_agent_script with purpose "support". Needs company name + description. Costs 1 credit.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the 1-credit cost and legacy status, but it does not say what the generated output looks like or what permissions/side effects are involved.

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

Conciseness4/5

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

Three short sentences, front-loaded with legacy status and the preferred alternative. The middle sentence about company name and description is inaccurate, but the description is still compact and scannable.

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 single-parameter tool with a fully described schema and no output schema, the description covers the alternative and cost. But with no annotations it should disclose more about what is generated and should not contradict the schema's parameter requirements.

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?

The schema has one fully documented parameter ('id'), but the description claims the tool 'Needs company name + description', which is inconsistent with the actual schema requiring only an agent id. That misleading parameter claim reduces the value of an otherwise complete schema.

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

Purpose4/5

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

States a specific verb and resource ('support-script generator') and explicitly frames itself as legacy. The sibling alternative is named, so an agent can distinguish it, though 'old text-widget creators' is a bit vague about the artifact produced.

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 says to prefer generate_agent_script with purpose 'support', which is exactly the when-to-use-this-vs-alternative guidance needed. The legacy label reinforces that this tool should be a fallback.

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

generate_transition_phrasesGenerate slide transition phrasesAInspect

Generate the phrases the Slide Presenter uses to move between slides, in the presentation's language, and save them on the agent. Needs saved slides (set_presentation_slides).

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations the description carries the full burden; it does disclose the side effect ('save them on the agent'), the language source, and the prerequisite, which is meaningful. It does not say whether existing phrases are overwritten, whether the call consumes generation credits, or whether the phrases are returned in the response.

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 compact sentences: the core action and its output location come first, the prerequisite second. No filler or repetition, and every clause adds 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 one-parameter generation tool with no output schema and no annotations, the description covers purpose, target agent, language behavior, persistence, and the required prior step. The main remaining gap is whether the generated phrases are returned or only persisted, plus overwrite semantics.

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

Parameters3/5

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

Schema coverage is 100% and the single 'id' parameter is documented in the schema as the agent UUID from list_agents. The description only implicitly refers to the agent, adding nothing beyond the schema, 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 ('generate the phrases the Slide Presenter uses to move between slides') and clarifies the result is saved on the agent. It is clearly distinct from generate_slide_script or set_presentation_slides, though it never explicitly contrasts itself with those siblings.

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 precondition: slides must already be saved via set_presentation_slides, which routes the agent to the right prior step. It stops short of stating when this tool should be preferred over related generation tools or what to do if slides change later.

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

get_agentGet an agentCInspect

Fetch the full details of a single agent by id.

NameRequiredDescriptionDefault
idYesThe agent UUID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the name: no read-only confirmation, no auth/permission requirements, no behavior when the id is unknown or inaccessible. 'Full details' gestures at scope but doesn't define what is returned.

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 tight, front-loaded sentence with no filler. It is appropriately sized for a trivial lookup, though it is arguably too terse to earn full marks.

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 one-parameter read tool with full schema coverage this is minimally adequate, but with no output schema the description should at least sketch what 'full details' includes or note failure behavior for an unknown id.

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 id parameter is documented as 'The agent UUID'. The description's 'by id' adds no format or semantic detail beyond the schema, 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 (fetch) and resource (agent) with the scoping qualifier 'single agent by id', which contrasts implicitly with list_agents and crm_list_workspace_agents. It stops short of explicitly naming those siblings for differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this over list_agents, list_agents_with_stats, or crm_list_workspace_agents, nor on prerequisites (e.g. needing a valid id already in hand). The 'by id' phrasing implies lookup, but nothing is stated explicitly.

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

get_agent_connectionGet one channel of an agentAInspect

Full settings of one channel (website widget, button, presentation, Google Meet, phone, Telegram). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does state 'Read-only', which is the most important safety trait for this tool, but it does not discuss permissions, error behavior for invalid IDs, or whether the returned settings may include sensitive configuration.

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

Conciseness5/5

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

The description is a single compact sentence that front-loads the core purpose and adds a useful parenthetical list of channel types. There is no redundant or filler text.

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

Completeness4/5

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

For a simple two-parameter getter with full schema coverage, the description is nearly sufficient: it names the resource, scope, and read-only nature. The only minor gap is that 'Full settings' is vague about the return shape, but no output schema exists and the tool's complexity is low.

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 required parameters are fully documented in the schema, including their source list tools. The description adds no parameter-specific guidance beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states that it returns the full settings of a single channel and enumerates supported channel types. It implies a read/get operation for one connection, though it does not explicitly contrast with sibling tools like list_agent_connections or update_agent_connection.

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 'one channel' and 'Read-only', making it clear this retrieves a single existing channel. However, it provides no explicit guidance on when to choose this over list_agent_connections or update_agent_connection, nor does it mention the prerequisite of obtaining the IDs via those list tools.

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

get_agent_connection_statsChannel countersAInspect

Conversations, messages, unique visitors, last activity of one channel. For widgets prefer get_connection_analytics (fresher). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does state 'Read-only' and flags a freshness caveat versus get_connection_analytics, which are useful behavioral facts an agent cannot get elsewhere. It omits permission requirements, stale-data behavior for non-widget channels, and why this tool is less fresh, so the disclosure is partial rather than rich.

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

Conciseness4/5

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

Three short sentences with the returned metrics front-loaded, then the routing hint, then the safety note. Nothing is wasted, though the first sentence is a noun fragment rather than a full statement of the operation, which slightly weakens the lead.

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

Completeness4/5

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

With no output schema, the description correctly compensates by listing the returned metrics, which is exactly what an agent needs to know. Both parameters are fully described in the schema and there are no annotations requiring explanation. The only gap is that freshness/staleness behavior is asserted but not explained.

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%: both id and connection_id are documented, including the source tools (list_agents, list_agent_connections). The description adds nothing about parameter meaning beyond the schema, 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?

The description names the specific resource (one channel/connection) and enumerates the metrics returned: conversations, messages, unique visitors, and last activity. Combined with the tool name get_agent_connection_stats and title 'Channel counters', the intent is unambiguous. It does not restate the 'stats for an agent connection' framing explicitly, but the metric list does that work.

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

Usage Guidelines4/5

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

It explicitly routes one case away from this tool: 'For widgets prefer get_connection_analytics (fresher).' That names the alternative and the condition that selects it, which is more than most sibling tools do. It stops short of stating prerequisites (e.g., the connection must belong to the agent) but the core 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.

get_agent_jobGet a long job (deep scan / script) resultAInspect

Status and result of a deep scan or script generation job started by deep_scan_agent / generate_agent_script (kept 1 hour). Poll every 10-20 s while status is "running". Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
job_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: declares read-only, states jobs are retained for 1 hour, and prescribes a polling cadence, which is exactly the runtime context an agent needs. It does not say what happens after expiry or whether errors surface in the result, leaving a small gap.

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

Conciseness5/5

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

Three short sentences, front-loaded with purpose, then retention, then polling behavior. No filler and nothing buried.

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 two-parameter status tool with no output schema, the description covers purpose, lifecycle (1-hour retention) and polling pattern. Minor gaps remain around the returned payload shape and post-expiry behavior, but nothing an agent needs in order to call 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?

Schema coverage is 50%: only `id` is documented (agent UUID from list_agents), while `job_id` has no schema description. The description partially compensates by tying the job to deep_scan_agent / generate_agent_script, but never clarifies where job_id comes from or how it relates to `id`.

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: returns status and result for a job produced by deep_scan_agent / generate_agent_script. Naming the two producer tools disambiguates it from list_agent_jobs and from the async starters, so an agent can pick it without opening the 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?

Gives explicit operational guidance — poll every 10-20 s while status is "running" — plus the originating calls that create the job_id. It lacks an explicit exclusion (e.g. 'use list_agent_jobs to enumerate jobs'), so it falls short of 5.

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

get_agent_plan_limitsGet agent capacityAInspect

How many agents can the user create (base plan + purchased extra slots) vs how many they have. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and 'Read-only' is the one meaningful behavioral disclosure it makes. It says nothing about data freshness, whether the limit is per-workspace or per-seat, or any auth requirement.

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 the core metric and the read-only flag front-loaded and 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?

With no parameters and no output schema, the description does the important work of naming the two quantities being compared (capacity vs. current count). It stops short of describing the returned shape or units, but for a trivial zero-arg read this is nearly sufficient.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. There is nothing parameter-related the description needs to (or could) clarify.

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 the exact resource and metric: agent capacity (base plan plus purchased extra slots) versus current usage. It is easily distinguished from get_subscription_limits and get_sdr_email_capacity by scope, though it never names those siblings 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: an agent would infer this is a pre-flight quota check before calling create_agent or buying extra slots. There is no explicit when-to-use, when-not-to-use, or named alternative.

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

get_agents_dashboardLegacy agents dashboard numbersAInspect

Older overview numbers of all agents (superseded by get_analytics_agents). Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose two meaningful traits beyond the name: the tool is read-only and the data is superseded. It says nothing about the shape of the payload, whether numbers are point-in-time or range-scoped, or any staleness of the legacy data.

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 filler, and the deprecation notice is front-loaded in a parenthetical right after the purpose. Every clause carries 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 zero-parameter read tool with no output schema, the description covers routing and safety adequately, but the return content remains opaque — 'overview numbers' could be counts, rates, or per-agent rows. A brief note on what is returned would close the only real gap.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case; the schema is an empty object and the description correctly implies a no-argument, whole-account call. Nothing is left ambiguous about 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?

The description identifies the resource ('overview numbers of all agents') and its legacy status, and explicitly names get_analytics_agents as the current replacement. The verb is a generic 'get' and 'overview numbers' is never itemized, so an agent knows the category but not the specific metrics returned.

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?

'Superseded by get_analytics_agents' is an explicit routing signal telling the agent to prefer the sibling. It does not state the positive case — e.g. when reaching for legacy numbers is still legitimate (historical parity, old dashboards) — so the guidance is clear but one-sided.

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

get_analytics_agentsAgents analytics (page /analytics/agents)BInspect

All metrics of the workspace's agents for a UTC date range (default: the page default), optionally one agent: totals, rates, daily series, funnel (widget loads → opens → conversations → contacts → leads), by agent / channel, leads by source, recent leads, credits by type, languages, pages, traffic sources, hours, durations, previous-period comparison. Read-only.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD
agent_idNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it usefully declares 'Read-only' and enumerates the metric groups returned. However it leaves gaps: it does not clarify what 'the page default' date range actually resolves to, nor mention pagination, auth/permission needs, or response format beyond the metric list.

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?

Purpose is front-loaded ('All metrics of the workspace's agents for a UTC date range...') before the return enumeration. It is a long single sentence, but the dense metric list earns its place because no output schema exists to document returns.

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 tool with no annotations and no output schema, the description compensates by declaring read-only status and listing the returned metric groups, and it explains all three parameters. Remaining holes are minor: the exact default date range and any pagination/limits.

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 67%, and the description adds real meaning: from/to are UTC dates that default to the page default, and agent_id is an optional single-agent filter. The one unlabeled schema param (agent_id) is at least semantically covered by 'optionally one agent'.

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 (get) and resource (workspace's agents metrics) scoped to a UTC date range with an optional single-agent filter. It enumerates the returned metrics (funnel, by-agent/channel, leads by source, etc.), making the purpose concrete. It stops short of naming how it differs from the several sibling analytics tools (get_agents_dashboard, get_analytics_sdr, get_campaign_analytics).

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not guidance, and no alternatives are named despite many sibling analytics tools. The only selection signal is implicit ('optionally one agent'), leaving the agent to infer this is the agents-scoped analytics versus dashboard/campaign/SDR variants.

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

get_analytics_sdrSDR & outreach analytics (page /analytics/sdr)AInspect

Outreach analytics for a UTC date range across Vendo SDR and classic campaigns, or narrowed to one SDR search (search_id) or one campaign (campaign_id) — never both: totals, rates, daily series, delivery (sent/delivered/bounced/inbox placement), by product / source / type, contacts by source, enrichment, funnel, per-process rows. Read-only.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD
search_idNo
campaign_idNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden; it declares 'Read-only' and enumerates the metric families returned, which is genuinely useful. It says nothing about cost/latency, result size, pagination, or how the daily series is bounded, which matters for an analytics aggregation tool with a variable date range.

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 that opens with the scope and constraint before the metric list, with zero filler. The dense em-dash list of returned sections is efficient, though it packs a lot into one sentence.

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

Completeness3/5

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

With four optional parameters and no output schema, the description does a fair job by listing the returned sections. However, all parameters are optional and the description never states the default date window or behavior when no filters are supplied, leaving a real ambiguity for an agent deciding how to call it.

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 50% — to/from describe only the YYYY-MM-DD format, while search_id and campaign_id are bare. The description compensates by defining search_id as 'one SDR search' and campaign_id as 'one campaign' and by stating they are mutually exclusive, semantics absent from the schema. It does not explain what happens when from/to are omitted.

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 (outreach analytics over a UTC date range) and enumerates exactly what it returns: totals, rates, daily series, delivery, breakdowns, contacts, enrichment, funnel, per-process rows. This clearly separates it from single-purpose siblings, but it never names an alternative tool, so it stops short of explicit sibling differentiation.

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 usage rule: query across Vendo SDR and classic campaigns, or narrow to one search_id or one campaign_id — 'never both', which is an explicit mutual-exclusion constraint the agent would otherwise have to guess. It lacks any statement of when to prefer this over the narrower analytics siblings (e.g. campaign-level analytics tools).

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

get_app_notifications_unread_countUnread app notifications countAInspect

Number of unread in-app notifications (the bell badge). Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It explicitly says 'Read-only,' which correctly discloses the safety profile, but it does not cover permissions, rate limits, or what happens when there are no unread notifications.

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

Conciseness5/5

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

The description is two short fragments with zero waste. The key fact (unread count) is front-loaded, followed by the clarifying parenthetical and safety note.

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

Completeness4/5

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

For a simple zero-parameter count tool with no output schema, the description is almost complete: it says what is counted and that it is read-only. It leaves out scope details such as whether the count is workspace-wide or user-specific, which keeps it from a 5.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so there is no parameter semantics to add. The baseline for a parameterless tool is 4.

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-like resource (number of unread in-app notifications) and clarifies it with '(the bell badge),' making the metric unambiguous. It does not explicitly differentiate from siblings like list_app_notifications or mark_app_notification_read, which keeps it from 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 description gives no guidance on when to use this tool versus alternatives such as list_app_notifications or mark_app_notification_read. It only names the metric and notes it is read-only; any when-to-use meaning is left implicit.

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

get_audienceGet one saved audienceAInspect

Read one saved audience with its filters and contact count. Read-only, free.

NameRequiredDescriptionDefault
idYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden, and 'Read-only, free' usefully discloses the safety profile and cost. However, it says nothing about auth requirements, error behavior, or whether the id must reference an existing audience for the caller, leaving meaningful gaps.

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 purpose and capped by the read-only/free qualifier. No filler; every clause earns its place.

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

Completeness3/5

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

With no annotations and no output schema, the description partially compensates by naming the returned filters and contact count. It is adequate for a simple single-record read, but the absence of annotations and any id-format guidance leaves it short of 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 0% and the single 'id' parameter is undocumented. The description hints the id identifies a saved audience, which adds marginal meaning, but does not specify format or source of the id; with only one obvious parameter the gap is modest but real.

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 ('Read one saved audience') and even names the return payload (filters and contact count). The singular 'one saved audience' implicitly distinguishes it from list_audiences, but no sibling is explicitly named, 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 Guidelines3/5

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

Usage is only implied: 'one saved audience' suggests fetching a single record when you already have an id, contrasted with list_audiences. There is no explicit when-to-use/when-not or named alternative, so it is minimum-viable rather than directive.

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

get_audience_setGet one audience setAInspect

Details of one marketplace set by slug: size, description, freshness. Use the contact count here to work out the purchase cost (2 credits per contact). Read-only, free.

NameRequiredDescriptionDefault
slugYesHuman-readable slug, not a UUID

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the safety burden and does so: 'Read-only, free' covers both the read-only and non-destructive/non-billing traits. It also discloses the pricing model (2 credits per contact) needed to interpret the result, though it says nothing about behavior on an unknown slug.

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 compact sentences, front-loaded with what is returned, then the pricing rationale, then the safety note. No filler, though the 'marketplace set' vs 'audience set' wording is a slight terminology wobble.

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 usefully previews the return shape (size, description, freshness). For a single-parameter read tool this is nearly complete; only error behavior for a bad slug is unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and the schema itself clarifies 'Human-readable slug, not a UUID'. The description only restates 'by slug' and adds no format, casing, or lookup semantics beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Details of one marketplace set by slug') and enumerates the returned fields (size, description, freshness). The word 'one' plus the slug key distinguishes it cleanly from list_audience_sets and get_audience_set_contacts.

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 concrete use case — 'Use the contact count here to work out the purchase cost' — which implicitly situates it as the pre-purchase inspection step ahead of buy_audience_set, and 'Read-only, free' signals when it is safe to call. It never names the alternative (preview_buy_audience_set, buy_audience_set) explicitly, so it stays short of a full when/when-not statement.

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

get_audience_set_contactOne contact card of an audience setAInspect

Full card of one contact in a marketplace set: person, company, buying signal, channels. Contact details stay masked until the set is bought. Contact ids come from get_audience_set_contacts. Read-only, free.

NameRequiredDescriptionDefault
slugYesSet slug
contact_idYesContact id from get_audience_set_contacts

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that the operation is read-only and free, and that contact details stay masked until the set is bought — a significant behavioral constraint an agent would otherwise not know. It omits error behavior for invalid/unknown contact ids.

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

Conciseness5/5

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

Three short sentences, front-loaded with what the card contains, then the masking caveat, then the prerequisite. No filler.

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

Completeness4/5

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

No output schema exists, so the description usefully lists the card's fields and the masking rule. It could say more about what masked vs unmasked output looks like and failure modes, but it is sufficient to call correctly.

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

Parameters3/5

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

Schema coverage is 100%, so both `slug` and `contact_id` are already documented. The description only restates the id's provenance ('Contact ids come from `get_audience_set_contacts`'), adding no new syntax or format detail — 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?

Specific verb and resource: 'Full card of one contact in a marketplace set', and it enumerates the card's contents (person, company, buying signal, channels). This clearly distinguishes it from the sibling list tool get_audience_set_contacts.

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

Usage Guidelines4/5

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

The description states the prerequisite that contact ids come from `get_audience_set_contacts`, which tells the agent how to reach this call. It does not explicitly say when to prefer this over other single-contact tools (e.g. sdr_get_person_detail) or when not to call it.

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

get_audience_set_contactsPreview contacts in an audience setAInspect

Paginated preview of the contacts inside a marketplace set. Contact details stay masked until the set is purchased. Read-only, free.

NameRequiredDescriptionDefault
slugYes
limitNo
offsetNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations are absent, so the description carries the full load, and it delivers the two facts an agent most needs: read-only, free, and that contact details are masked until purchase. It omits rate limits, pagination defaults, and what the masked records actually contain.

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, front-loaded with the resource and scope, with the masking caveat placed where it matters most. Nothing is wasted.

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 read tool with no annotations and no output schema, the description covers the access/masking model well but leaves pagination behavior and parameter usage entirely to an undocumented schema. Adequate but with a clear gap.

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 0% for all three parameters. 'Paginated' loosely implies limit/offset, but their defaults, ranges, and formats are undocumented, and the required 'slug' parameter is never explained or tied to the set identifier.

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: a paginated preview of contacts inside a marketplace set. It is clear enough to separate from get_audience_set (set metadata) and buy_audience_set (purchase), though it never names those siblings 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?

'Preview' plus 'masked until the set is purchased' implies the when: inspect before buying. But there is no explicit statement of when to use this versus get_audience_set, preview_buy_audience_set, or list_audience_sets, and no prerequisites are given.

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

get_balanceGet credit balanceAInspect

Get the current shared credit balance of the workspace (credits belong to the workspace owner; member keys see the same number). Read-only, no side-effects, no cost.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does so well: it declares 'Read-only, no side-effects, no cost' and explains the cross-key visibility semantics of the balance. It stops short of describing the return shape (currency unit, formatting) or rate/refresh behavior.

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

Conciseness5/5

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

One compact sentence with the resource front-loaded, followed by the two facts an agent actually needs (ownership semantics, safety profile). Nothing is redundant with structured fields.

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

Completeness5/5

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

For a no-parameter, no-output-schema read tool, this is sufficient: the agent knows what value comes back, whose it is, and that calling it is free and safe. The only gap is the unmentioned get_balance_full alternative, which is a routing concern rather than a completeness one.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter claims are made or needed.

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 current shared credit balance of the workspace') and clarifies whose credits these are. It does not, however, distinguish itself from the nearby get_balance_full sibling, which an agent could easily confuse with this one.

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: the note that credits belong to the workspace owner and that member keys see the same number tells an agent what the number means, but there is no explicit guidance on when to call this versus get_balance_full, get_credit_transactions, or get_subscription.

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

get_balance_fullGet full billing balance + plan summaryAInspect

Richer than get_balance — returns balance, total subscription credits, total purchased, total spent, free-trial credits, email/workspace info.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the return fields, which is useful, but a read operation should ideally declare it is read-only and safe — nothing here confirms non-mutation. It adds context but not the full safety profile.

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 efficient sentence that front-loads the sibling contrast and then the payload contents. No waste, though it could be slightly better structured as a lead sentence plus field list.

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-parameter read tool with no output schema, the description reasonably enumerates what is returned, which is exactly what an agent needs given there's no output schema. The only gap is the absence of an explicit read-only/safety statement.

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?

Zero parameters, so per the rubric the baseline is 4. There are no parameters whose semantics need explanation, and the description appropriately focuses on the return payload instead.

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 the specific resource (billing balance + plan summary) and enumerates the returned fields, and explicitly differentiates itself from sibling `get_balance` by being 'richer'. An agent can distinguish it from `get_balance`, `get_subscription`, or `get_credit_usage_*` without opening 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?

The comparison to `get_balance` implies when to prefer this variant (when you need the fuller breakdown). It doesn't state explicit when-not conditions or prerequisites, but the sibling reference gives clear selection guidance.

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

get_campaignGet a campaignBInspect

Full campaign: status, settings (all wizard fields), sequence, channel paused flags, channelStatuses, today's sends, stats.totalContacts. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, and 'Read-only' is its only disclosure — useful but minimal. It says nothing about permission requirements, behavior for an unknown or archived id, payload size, or whether 'today's sends' is computed live versus cached, which matters for a supposedly comprehensive snapshot.

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 tight sentence that front-loads the completeness claim ('Full campaign') before enumerating contents, with zero filler. It is telegraphic to the point of being cryptic in places ('channel paused flags' immediately followed by 'channelStatuses'), but no sentence is wasted.

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?

Missing output schema makes the return-value enumeration the most valuable part of this description, and it does list the major top-level fields an agent needs to plan a follow-up call. Gaps remain in nesting and in field semantics (what a channelStatus differs from a paused flag), but for a single-parameter read tool this is close to sufficient.

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

Parameters3/5

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

There is exactly one parameter with 100% schema description coverage ('Campaign id (UUID) from list_campaigns'), so the schema does all the work and the baseline of 3 applies. The description adds nothing about the id beyond what the schema already documents.

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 enum of returned fields (status, settings, sequence, channelStatuses, today's sends, stats.totalContacts) makes clear this returns the whole campaign configuration object rather than a slice of it. However, it never names any of the near-identical siblings such as get_campaign_analytics or get_campaign_live_status, so the boundary between 'full campaign' and 'campaign metrics' must be inferred from field names alone.

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

Usage Guidelines2/5

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

No sentence says when to use this tool, what preconditions exist (an existing campaign id produced by list_campaigns), or which alternative to pick for activity/analytics/live-status data. An agent reading only the description has no routing rule; the only hint lives in the schema's 'from list_campaigns' note.

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

get_campaign_activityCampaign activity feedAInspect

Paged activity events of a campaign (discovery, outreach, engagement, system, billing). Poll it instead of a live stream. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
offsetNoRows to skip (default 0)
categoryNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description does disclose two real traits: it is read-only and it is paginated, plus the polling advice. It omits ordering/recency of events, retention window, and permission requirements — meaningful gaps for a feed tool where an agent must decide whether to poll repeatedly.

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

Conciseness5/5

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

Three short, front-loaded sentences with zero filler: what it returns, how to consume it, and its safety profile. Nothing could be cut without losing information.

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 and no annotations, so the description is the only source of behavioral detail — and it never describes event shape or ordering, which matters for a paged feed. Adequate to select the tool, thin for invoking it well over multiple pages.

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 75%, so the schema already documents id, limit, and offset. The description's category list merely echoes the enum values already present in the schema rather than explaining their semantics (e.g., what 'system' vs 'billing' events contain), so it adds little beyond structured data.

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+resource ('Paged activity events of a campaign') and enumerates the event categories, which goes beyond restating the name. It doesn't name a sibling to disambiguate against similarly-scoped tools like get_campaign_pulse or get_campaign_monitor, 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 Guidelines3/5

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

'Poll it instead of a live stream' gives an implied usage pattern (repeat calls rather than subscribing), which is genuine guidance. But it offers no when-to-use/when-not against the many campaign-reading and activity-feed siblings, and no exclusions.

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

get_campaign_analyticsCampaign analytics (all campaigns)AInspect

Sales Process KPIs for the workspace: totals (campaigns, emails sent, opens, clicks, replies, contacts, rates) and per-campaign performance, optionally for a date range. Read-only. For SDR + campaigns combined use the SDR analytics tool.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden; it does state 'Read-only', which is important for an analytics retrieval tool. However, it does not disclose permissions, rate limits, data freshness, or response structure, leaving material behavioral context unstated.

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

Conciseness5/5

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

Three short sentences with the KPI scope front-loaded, followed by the read-only note and the sibling routing. The metric list is necessary return-shape information and nothing is redundant.

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

Completeness4/5

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

The description covers scope, metrics returned, optional date range, read-only nature, and the main alternative for combined reporting, which is enough to call it without an output schema. It is not fully complete because it omits pagination/freshness and does not clarify the totals-vs-per-campaign response shape.

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%: both optional from/to parameters already have YYYY-MM-DD descriptions. The description reinforces that the date range is optional but adds no format, default, or interaction details beyond the schema.

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

Purpose4/5

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

The description states a specific read operation over campaign KPIs, enumerating workspace totals and per-campaign performance with an optional date range. It names one sibling alternative (SDR analytics for combined SDR+campaigns), but it does not explicitly route agents away from per-campaign or per-channel analytics siblings such as campaign email/LinkedIn/phone stats.

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

Usage Guidelines4/5

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

It gives a clear usage condition for the date range and explicitly redirects combined SDR+campaign reporting to the SDR analytics tool. It stops short of when-not guidance against other campaign analytics siblings, so an agent may still need to infer which tool to pick for channel-level stats.

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

get_campaign_discoveryGet AI lead discovery configAInspect

AI lead discovery settings of a campaign (null when never configured). Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden, and it does disclose two real behaviors: the operation is read-only and it returns null when discovery was never configured. It stops short of auth requirements, error behavior, or what the returned settings object contains (e.g. which fields define discovery).

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?

Effectively one sentence plus a parenthetical, with the resource named first and the null-case edge condition attached directly to it. No filler, though the parenthetical reads slightly telegraphically.

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 read tool with fully documented schema and no output schema, the description covers identity and the key edge case. The only real gap is not routing the agent to update_campaign_discovery or preview_update_campaign_discovery when it actually wants to change these settings.

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

Parameters3/5

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

Schema coverage is 100% and the single `id` parameter is already documented as a campaign UUID sourced from list_campaigns. The description adds no syntax, format, or validation detail beyond the schema, 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: retrieves the AI lead discovery settings for a single campaign, and adds a meaningful scoping fact (null when never configured). The 'get' verb implicitly separates it from update_campaign_discovery and preview_update_campaign_discovery, but it never names those siblings.

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 by the verb — an agent can infer this is the read counterpart to update_campaign_discovery. There is no explicit when-to-use, no statement about prerequisites, and no pointer to the write sibling for comparison.

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

get_campaign_emailOpen one campaign emailAInspect

One sent email by email id (from list_campaign_emails / list_campaign_replies): content, recipient, related open/click/reply events, the reply and the conversation. Read-only.

NameRequiredDescriptionDefault
email_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden; it does disclose 'Read-only' and the scope of data included, which is genuinely useful. It says nothing about permissions, error behavior for a missing id, or how far the event/conversation expansion goes, so the safety profile is only partially covered.

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 dense sentence with no filler, and the resource identity plus provenance come first. The clipped noun-phrase construction is efficient rather than padded, though it reads slightly telegraphic.

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 read tool with no output schema, enumerating the returned fields substitutes well for a response spec, and read-only is stated. Only error/not-found behavior and the depth of the event list remain unstated.

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 0% for the single email_id parameter, so the description must compensate. The parenthetical naming the source endpoints does add namespace meaning, but format and validation expectations are left to the schema's bare 'string' type.

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 resource (one sent campaign email) and enumerates the payload it returns — content, recipient, open/click/reply events, the reply and the conversation — which distinguishes it from siblings like get_campaign_email_stats or list_campaign_emails. The phrasing is a noun fragment rather than an explicit verb, but the intent 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 Guidelines4/5

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

It tells the agent where the required id comes from (list_campaign_emails / list_campaign_replies), which is real routing guidance. It stops short of naming when-not-to-use or an alternative for aggregate/stat views, so it is clear context without explicit exclusions.

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

get_campaign_email_statsCampaign email funnel incl. deliveryBInspect

Email funnel: sent, delivered, opened, clicked, replied (real / auto-reply / bounce), bounced; delivery block (delivered vs not delivered: bounced, rejected as spam, unsubscribed; sender inbox-placement test — real inbox vs spam folder is not reported by providers) and unique opened/clicked/replied. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description steps up: it explicitly declares 'Read-only' and discloses a genuine data limitation (inbox vs spam placement is not reported by providers), which is real behavioral context an agent could otherwise get wrong. It omits freshness/caching behavior, which matters given the existence of a sibling sync_campaign_stats.

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

Conciseness3/5

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

It is front-loaded with the correct framing ('Email funnel:'), but the body is one very dense sentence stitched together with semicolons and em-dashes, reading as a metric dump. The content earns its place yet the structure hinders scanning.

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

Completeness4/5

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

With no output schema and no annotations, the description must carry the return-shape burden, and it does enumerate funnel stages, delivery breakdown, and unique variant metrics thoroughly. The gaps are freshness of the numbers and whether the campaign must be active, which are not covered.

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

Parameters3/5

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

There is exactly one parameter and schema description coverage is 100% ('Campaign id (UUID) from list_campaigns'), so the schema already carries full semantics. The description never mentions the id or its format, adding nothing beyond the structured field, which is the baseline-3 case.

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 name, title, and opening 'Email funnel:' make it clear this returns email performance metrics for a campaign, and the metric taxonomy (sent/delivered/opened/clicked/replied/bounced) is specific. Sibling disambiguation is implicit via 'email' versus get_campaign_linkedin_stats/get_campaign_phone_stats, but the description never explicitly distinguishes it from get_campaign_analytics or get_campaign_email.

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

Usage Guidelines2/5

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

No sentence says when to use this versus alternatives such as get_campaign_analytics, get_campaign_email, get_campaign_live_status, or sync_campaign_stats. Usage is only implied by the tool name and the returned-metric list, which leaves the agent to infer routing.

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

get_campaign_linkedin_statsLinkedIn stats of a campaignAInspect

LinkedIn counters (total, pending, invites sent, connected, messaged, replied, failed), invites sent today, effective daily limit and active accounts; optionally for one account. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
account_idNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden itself. It usefully states that the tool is read-only and specifies the optional account scope, but it does not mention permissions, freshness, or rate-limit behavior.

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

Conciseness5/5

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

The description is a single dense sentence that front-loads the returned counters and ends with the optional account scope and read-only status. Every clause adds information without padding.

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 small two-parameter stats tool with no output schema and no annotations, the description covers the key return metrics and the optional per-account behavior. It could go slightly further on return shape or whether counters are aggregate snapshots, but it is largely sufficient.

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 only 50% because account_id has no schema-level description, but the description compensates by saying the stats are optionally for one account. The required id parameter is also documented in the schema as a campaign UUID from list_campaigns.

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 retrieval target: LinkedIn counters for a campaign, with an optional per-account scope. It clearly distinguishes the resource from the broader campaign getters by enumerating LinkedIn-specific metrics, though it does not explicitly name sibling alternatives.

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

Usage Guidelines2/5

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

It notes that stats can be requested for one account, which gives a basic usage cue for account_id. However, it gives no explicit guidance on when to use this tool versus get_campaign_analytics, get_campaign_live_status, list_campaign_linkedin_accounts, or sync_campaign_stats.

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

get_campaign_live_statusCampaign email progressBInspect

Email channel progress: audience size, processed, % complete, event counts, queue depth and provider status / sent today. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses that the operation is read-only and lists the live progress fields returned, which is meaningful context. But it does not address permissions, data freshness, rate limits, or what 'live' means operationally.

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

Conciseness4/5

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

The definition is a single front-loaded metrics sentence followed by a terse 'Read-only.' tag. There is little waste, though the slash-separated field list is slightly compressed.

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 one-parameter status tool with no output schema, the description adequately names the returned metrics and read-only nature. It is still incomplete on return structure and on how it differs from sibling analytics/monitor tools, which matters given the crowded campaign tool family.

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 parameter, and the input schema provides 100% coverage with a clear description ('Campaign id (UUID) from list_campaigns'). The tool description adds no additional parameter meaning, so the schema does the work. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names the resource (email channel progress) and enumerates the specific metrics returned: audience size, processed, percent complete, event counts, queue depth, provider status. It is clearly a read-only campaign status tool. However, it does not distinguish itself from close siblings like get_campaign_email_stats, get_campaign_monitor, or get_campaign_pulse.

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 explicit when-to-use guidance and never identifies when another campaign email/status tool should be selected instead. 'Read-only' is a safety trait, not usage guidance. With many similar siblings, an agent has no routing rule.

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

get_campaign_monitorCampaign monitorAInspect

Monitor page data: AI lead discovery config + stats, audience growth by day, the last 100 activity events, event counts and credits (balance, spent today/total, daily budget). Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the safety profile ('Read-only') plus a concrete truncation rule ('the last 100 activity events'), which prevents wrong assumptions about completeness. It does not mention auth/permission requirements or refresh/latency 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?

A single dense sentence that front-loads the payload contents and ends with the read-only qualifier. Nothing is wasted, though the comma-separated field list is slightly hard to scan.

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 must explain returns, and it does so by naming each data block and the 100-event cap. The main omission is sibling differentiation on a tool that clearly overlaps with several other campaign-getter tools.

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 parameter, and the schema already documents it fully ('Campaign id (UUID) from list_campaigns') at 100% coverage. The description adds no extra meaning about the id, 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?

The description names the resource (campaign monitor page) and enumerates exactly what is bundled: discovery config/stats, audience growth, last 100 activity events, event counts, and credits. It is specific, but it never distinguishes this composite view from nearby siblings like get_campaign_pulse, get_campaign_live_status, or get_campaign_activity.

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 call this versus the many overlapping siblings (get_campaign_analytics, get_campaign_discovery, get_balance, get_campaign_activity). The agent must infer that this is a one-shot dashboard read rather than aggregating several narrower tools.

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

get_campaign_phone_statsPhone stats of a campaignBInspect

Call counters: total, completed, active, pending, no answer, voicemail, failed, interested, meetings booked, not interested, average/total duration. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool is read-only and enumerates the counters returned, but it does not explain aggregation scope, time range, freshness, permissions, or what happens when a campaign has no 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?

The description is compact and front-loaded with 'Call counters:' followed by the relevant metric list. Given that no output schema exists, every listed counter earns its place, and there is no redundant prose.

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

Completeness4/5

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

For a simple one-parameter read tool with no output schema, listing the returned counters is valuable and makes the response shape largely clear. The main omission is campaign-scoping language and differentiation from sibling stats tools, but the core information needed to invoke it is present.

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

Parameters3/5

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

Schema coverage is 100%, and the single id parameter is already documented as a campaign UUID from list_campaigns. The description adds no parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the resource as call counters for a campaign’s phone stats by listing the exact metrics returned. It does not explicitly distinguish this from neighboring stats tools such as get_campaign_email_stats or get_phone_channel_stats, so it is clear but not fully differentiated.

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, prerequisites, or comparison to sibling tools. It only states 'Read-only,' leaving the agent to infer that this is for campaign-level phone statistics rather than channel-level or individual-call data.

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

get_campaign_pulseCampaign pulse (live status)AInspect

What the campaign is doing now (sending / idle / outside_hours / paused / queue_empty / done), today vs daily limits, 7–28-day email + LinkedIn series and the latest events. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
daysNo
limitNoRecent events to return

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; it does state 'Read-only,' which is the most important safety signal. It also discloses what is reported (state, today vs daily limits, series window, latest events), but says nothing about cost, caching, freshness guarantees, or what happens when the campaign is paused or hasn't launched.

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 dense sentence with the purpose front-loaded and the state enumeration in parentheses, capped by the 'Read-only.' tag. Slightly list-heavy, but nothing is redundant or 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?

With three parameters, no output schema, and no annotations, the description covers the essentials: what is returned, the time window, the event sampling, and the read-only nature. The missing piece is disambiguation from sibling status tools, which matters given how many campaign-inspection tools exist.

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% and the two vague parameters are partly clarified: '7–28-day ... series' explains what `days` controls and 'latest events' explains `limit`. The `days` property has no schema description at all, and the interaction between `limit` and the events list is still left to inference, so the description adds only moderate value.

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 read resource (current campaign activity) and enumerates the exact status values it reports, so an agent knows the shape of the answer. It does not, however, distinguish itself from close siblings such as get_campaign_live_status and get_campaign_monitor, which sound nearly identical.

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: 'What the campaign is doing now' suggests a live diagnostic check, but there is no explicit when-to-use, when-not-to-use, or pointer to the alternative status/monitor tools. The agent must infer the boundary itself.

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

get_campaign_threadOpen an AI email conversationCInspect

One conversation with all messages (AI, human and contact). Read-only.

NameRequiredDescriptionDefault
thread_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description does carry one genuine disclosure of its own: 'Read-only,' which tells the agent this is a safe retrieval operation. It stops there, saying nothing about access prerequisites, message ordering or volume, or whether a missing thread errors versus returns empty.

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 fragments that waste no words, with the content of the response front-loaded before the safety note. The telegraphic fragments are efficient but border on under-specification rather than polished structure.

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

Completeness2/5

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

With no output schema and no annotations, the description must carry the full load, yet it never explains what a thread object contains, where thread_id comes from, or how messages are ordered. For the only required parameter being undocumented, this leaves real gaps.

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 0% and the single parameter thread_id has no description in either the schema or the description. The description does not explain the ID's format, that it is required, or where to obtain it (e.g., from list_campaign_threads), so the agent must infer all of that.

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 resource and scope: one conversation including all messages from AI, human, and contact participants. The name plus 'One conversation with all messages' implicitly distinguishes it from the sibling list_campaign_threads, but no sibling is named explicitly and the verb is only implied by the tool 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?

There is no statement of when to use this versus list_campaign_threads (to find a thread_id), get_campaign_email (single email), or reply_in_campaign_thread (to respond). Usage is inferable only from the phrase 'One conversation'.

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

get_connection_analyticsWidget/button channel analyticsBInspect

For a website widget/button/presentation channel: widget loaded, activated, chats started, voice calls started, plus estimated credits (text messages, voice minutes) for a date range. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
date_toNoTo (YYYY-MM-DD or ISO 8601)
date_fromNoFrom (YYYY-MM-DD or ISO 8601)
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden and does state that the operation is read-only. However, it does not describe permissions, pagination, response shape, or whether results are aggregate or time-series, leaving meaningful behavioral gaps.

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

Conciseness4/5

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

The description is compact and front-loads the channel context before listing the returned metrics. It contains no obvious filler, though the single dense sentence could be slightly easier to scan.

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

Completeness3/5

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

The description lists the metrics being returned, which partially compensates for the absence of an output schema. Still, for an analytics tool with no annotations and no output schema, it does not clarify the response structure or pagination, so it is adequate but incomplete.

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 are already documented in the schema. The description only mentions date range and channel context, adding limited meaning beyond the structured parameter definitions; baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly scopes the tool to a website widget/button/presentation channel and lists the analytics it returns, including widget loaded, activated, chats, voice calls, and estimated credits. It is specific about the resource and metrics, though it does not explicitly distinguish this from closely related analytics tools such as get_agent_connection_stats or get_phone_channel_stats.

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 the channel type and date range, but there is no explicit guidance on when to use this instead of sibling analytics or connection-listing tools. The context is clear enough to infer the intended scenario, but alternatives are not mentioned.

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

get_conversation_recordingsGet voice recordings of a conversationAInspect

Recording URLs (WAV), duration and start time of the voice calls in one widget conversation (up to 10 calls). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections
conversation_idYesFrom list_connection_conversations

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden, and it does contribute: it declares read-only behavior, the result shape (URLs, duration, start time), the WAV format, and the 10-call ceiling. It omits what happens when a conversation has no voice calls (empty result vs error) and any permission or availability caveats.

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 dense sentence plus a two-word safety note — the returned fields are front-loaded and nothing is padded. The fragment style ('Recording URLs (WAV), duration and start time...') is slightly clipped but costs no comprehension.

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 three-required-parameter read tool with no output schema, the description adequately covers what comes back and the result ceiling. The remaining gap is routing guidance against sibling call/transcript tools, which is minor given the narrow, well-named scope.

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 every parameter carries a provenance hint (from list_agents, list_agent_connections, list_connection_conversations), so the schema does the heavy lifting. The description adds only the implicit hint that conversation_id selects a single widget conversation; baseline 3 applies.

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

Purpose5/5

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

The description names a specific resource (WAV recording URLs with duration and start time) scoped to a single widget conversation, with the 10-call cap stated. This is clearly separable from siblings like list_phone_calls or get_meeting_transcript, which operate over lists or meetings rather than one conversation's recordings.

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 through the scope phrase 'in one widget conversation' — the agent can infer it is the per-conversation drill-down, but no alternative tool is named and no condition for choosing it over list_phone_calls is given. No exclusions or prerequisites are stated.

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

get_credit_transactionsGet credit transaction historyAInspect

Credit deductions + grants of the workspace, newest first. Optional filters: type, date range (from/to, a date-only to is inclusive), pagination. With filters the gateway scans the newest 5000 rows; has_more/total_matched tell you if there is more. Read-only.

NameRequiredDescriptionDefault
toNoISO date, e.g. 2026-06-30
fromNoISO date, e.g. 2026-06-01
typeNoTransaction type, e.g. SUBSCRIPTION_GRANT, PURCHASE, FREE_TRIAL, BONUS, REFUND, EMAIL_OUTREACH, LINKEDIN_INVITE, LINKEDIN_MESSAGE, SDR_CONTACT, PHONE_CALL, VOICE_MINUTE, TEXT_MESSAGE, AUDIENCE_ENRICHMENT, AUDIENCE_SET_CONTACT, DISCOVERY_ENRICH, ASSISTANT_MESSAGE, SCRIPT_GENERATION, IMAGE_GENERATION
limitNo
offsetNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it declares read-only, discloses the 5000-row scan ceiling when filters are applied, and names has_more/total_matched so the agent understands truncation. It stops short of describing permissions or the row shape itself.

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?

Four short sentences, front-loaded with what the tool returns, then filters, then guardrails. No filler or restated 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?

With no output schema and no annotations, the description supplies ordering, truncation semantics and return signals, which is enough to call it correctly. Minor gaps: no mention of default page size or whether offset beyond the scan window behaves differently.

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?

Adds real meaning beyond the 60%-covered schema, notably that a date-only `to` is inclusive and that from/to/type/pagination are the filters. The pagination caveat about has_more/total_matched also contextualizes limit/offset, which have no schema descriptions.

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?

Names the resource precisely (credit deductions + grants of the workspace) and the ordering (newest first), which separates it from aggregate siblings like get_credit_usage_by_type or get_balance. It never names those siblings explicitly, so differentiation is inferred rather than stated.

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?

States that filters are optional and explains the consequence of using them (scan of newest 5000 rows), which implies this is the raw-ledger listing tool. There is no explicit guidance about when to prefer it over the usage-aggregation or balance siblings.

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

get_credit_usage_by_agentGet credit spend per agentBInspect

Total credit spend per agent in the workspace. Identifies the most expensive agents.

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state the time window covered, whether spend is aggregated or itemized, or whether results are ordered or paginated.

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 no filler and the core scope ('per agent in the workspace') front-loaded. Efficient, though the second sentence is more marketing framing than functional detail.

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?

No output schema and no annotations, so the description should describe the return shape (agent identity plus credit total), any time period, and ordering. It says only 'total credit spend per agent,' which is too thin for a reporting tool with zero structured coverage.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing for the description to clarify and the baseline is 4. The description's mention of workspace scope is adequate given no inputs exist.

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 metric (total credit spend) and dimension (per agent within the workspace). However, it does not explicitly distinguish itself from close siblings like get_credit_usage_for_agent, get_credit_usage_by_type, or get_credit_usage_monthly, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of alternatives such as get_credit_usage_for_agent or get_credit_usage_by_type. The tagline 'Identifies the most expensive agents' hints at a use case but is not explicit routing guidance.

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

get_credit_usage_by_typeGet credit spend by type / sessionAInspect

Per-session credit spend (newest first) with connectionType (email_outreach, linkedin_invite, linkedin_message, phone_call, widget, voice, sdr_contact, ...). With from/to it also returns totals_by_type for that range. Read-only.

NameRequiredDescriptionDefault
toNoISO date, end of range (date-only = inclusive)
fromNoISO date, start of range
limitNo
offsetNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description does useful work by stating 'Read-only', noting newest-first ordering, and explaining that from/to also returns totals_by_type. It does not disclose pagination behavior despite limit/offset parameters, default date range, or any permission/rate-limit constraints.

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

Conciseness5/5

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

The description is two tight sentences, front-loads the core return shape, and includes only useful detail. No sentence is wasted or redundant.

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 reporting tool with no output schema and no annotations, the description covers the high-level return fields and ordering, but omits pagination semantics, default range behavior, and a full explanation of limit/offset. It is adequate but leaves gaps an agent would need to resolve by experimentation.

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 moderate at 50%: from and to are documented in the schema, while limit and offset have no schema descriptions and are not mentioned in the description. The description adds meaningful conditional behavior for from/to (totals_by_type), but leaves the pagination parameters completely unexplained.

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 resource and granularity: per-session credit spend broken down by connectionType. It implicitly differentiates from sibling credit tools by specifying session-level and connectionType granularity, but it never explicitly names alternatives such as get_credit_usage_by_agent or get_credit_usage_monthly.

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 the phrase 'Per-session credit spend' and by the note that from/to adds totals_by_type for a range. However, there is no explicit guidance on when to choose this tool over sibling credit-reporting tools, nor any stated exclusions.

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

get_credit_usage_for_agentGet credit spend for a single agentCInspect

Total credits spent by one specific agent.

NameRequiredDescriptionDefault
agent_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full load. It does say 'total credits spent', which is a return-semantics hint in the absence of an output schema, but it never states the time window (all-time vs. monthly, especially ambiguous next to get_credit_usage_monthly), whether the agent must exist or be owned by the caller, or any permission/error behavior.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. Brevity here is genuine conciseness rather than padding, though it is short to the point of under-specification.

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 credits-reporting read tool with no annotations, no output schema, and an ambiguous sibling cluster, the description omits the time window, the return shape, and the tool-selection rationale. Too thin for the surrounding context.

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

Parameters3/5

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

One parameter at 0% schema description coverage. "One specific agent" loosely glosses agent_id as the agent identifier, but adds no format, source, or lookup guidance beyond what the name implies. Marginal value over the bare string type.

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+resource: total credits spent. The phrase "one specific agent" does marginally distinguish it from the sibling get_credit_usage_by_agent, which implies a per-agent breakdown across all agents. However it never names or contrasts that sibling explicitly, so the reader has to infer the boundary.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of alternatives despite four closely related siblings (get_credit_usage_by_agent, get_credit_usage_by_type, get_credit_usage_for_agent_connections, get_credit_usage_monthly). The agent must guess which credit tool to call.

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

get_credit_usage_for_agent_connectionsGet credit spend by connection for an agentCInspect

Per-channel credit spend (widget, telegram, phone, etc.) for one agent. Identifies the costliest channels.

NameRequiredDescriptionDefault
agent_idYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state that this is a read-only lookup, does not mention required permissions or the agent_id ownership scope, and does not hint at the shape of the result. It reads as a data description rather than a behavioral contract.

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 scope front-loaded; nothing is redundant. The second sentence earns its place as a purpose statement, though it is slightly promotional.

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 tool with no annotations, no output schema, and an undocumented parameter, the description should disclose at least read-only semantics and the grouping grain of the response. It leaves the agent guessing about return structure and access requirements.

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 0% for the single required parameter agent_id, and the description only implies 'one agent' without clarifying ID vs name format, where to obtain it, or whether it must belong to the caller's workspace. It adds marginal meaning over the bare schema.

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

Purpose4/5

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

The description states a specific verb+resource: per-channel credit spend for a single agent, with concrete examples of channels (widget, telegram, phone). This clearly distinguishes it from a generic credit-usage tool, though it never names the closely related siblings get_credit_usage_for_agent or get_credit_usage_by_agent that an agent must choose between.

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 implies a use case ('Identifies the costliest channels') but gives no explicit when-to-use or when-not-to-use guidance. With four other credit-usage siblings in the list, the absence of any routing rule is a real gap.

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

get_credit_usage_monthlyGet credit spend per monthBInspect

Calendar-month breakdown of credit spend across all categories.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the entire behavioral burden. It says nothing about whether this is scoped to a workspace, how many months are returned, whether the current month is partial, or how timezone/period boundaries are handled for a read aggregation with zero annotation coverage. Only the fact that it is a breakdown is conveyed.

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

Conciseness5/5

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

A single front-loaded sentence with no filler or repetition. The aggregation grain and scope come first, and every word earns its place.

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

Completeness2/5

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

With no annotations, no parameters, and no output schema, the description is the only source of information about this tool, yet it does not describe the shape of the result (per-category rows vs totals, time window covered, ordering). For a zero-schema reporting tool the description should do considerably more.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case; there are no arguments whose semantics need explaining. The description adds nothing here, but nothing is missing either.

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 resource (credit spend), a specific aggregation (calendar-month), and a scope (across all categories), which distinguishes it in spirit from siblings like get_credit_usage_by_agent and get_credit_usage_by_type. However, it never names those siblings, so the agent must infer the distinction from the phrase 'across all categories' rather than being told 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: 'across all categories' suggests this is the unfiltered/aggregate view versus the per-agent and per-type siblings, but the description states no when-to-use condition, no exclusions, and names no alternative. An agent gets a reasonable hint but nothing explicit to route on.

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

get_crm_integrationGet one CRM integrationAInspect

Status and settings of the Kommo or HubSpot connection ({connected:false} if none). Use it to poll after connect_crm_integration. Read-only.

NameRequiredDescriptionDefault
providerYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does explicitly declare "Read-only" plus the no-connection return value, which are the two facts an agent most needs. Remaining gaps (auth/permission requirements, error behavior for unconnected providers, rate limits) are minor for a single-resource read.

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

Conciseness5/5

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

Three short clauses: what it returns, when to call it, and its safety profile. The return shape is front-loaded and nothing is redundant.

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 must hint at the response, and it does so with "status and settings" and the {connected:false} case. For a one-parameter read tool this is largely sufficient, though richer return shape detail would remove the last inference.

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 0% but there is only one parameter with an enum, and the description maps the enum values to human labels (Kommo, HubSpot). That is enough to make the single required argument unambiguous without repeating schema mechanics.

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 resource (the Kommo or HubSpot connection) and what is returned (status and settings), plus the empty-state shape {connected:false}. It is distinguishable from connect_crm_integration and roughly from list_crm_integrations, though it never names the list tool as the multi-connection alternative.

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?

"Use it to poll after connect_crm_integration" gives a concrete triggering context for invocation. It stops short of exclusions (e.g., use list_crm_integrations to enumerate all connections, get_crm_integration_logs for diagnostics), so sibling routing is only partially resolved.

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

get_crm_integration_logsCRM integration sync logBInspect

Recent sync events (contact/lead created, errors) of the caller's own Kommo/HubSpot connection. Read-only.

NameRequiredDescriptionDefault
limitNo
providerYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and one sentence does cover the safety profile ('Read-only') plus the ownership scoping. It says nothing about ordering, time window, pagination, rate limits, or what an error event looks like, which matters for a log-inspection tool an agent may poll.

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

Conciseness5/5

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

A single front-loaded sentence with the resource, content, scope, and read-only nature, with zero filler. Everything present earns its place.

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 and no annotations mean the description must stand alone, and it covers what is returned and that the operation is safe. It leaves gaps on the limit parameter and on result ordering/windowing, which an agent needs to call it confidently.

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 0% and the description never mentions the two parameters. 'Kommo/HubSpot' loosely maps to the required provider enum, but the limit parameter (1-200 cap, unclear default) is completely undocumented in both schema and description, so meaning is not added.

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?

Names a specific verb+resource (sync log of the caller's own CRM connection) and specifies the content: contact/lead created events and errors. It also scopes to the caller's own connection, which separates it from list_crm_integrations, though it never names the nearest sibling (get_crm_integration) that returns config rather than logs.

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 you call this to inspect recent sync activity or diagnose errors. There is no explicit when-to-use/when-not guidance and no mention of the alternative tools for reading integration configuration or listing integrations.

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

get_custom_audienceGet one custom audienceAInspect

One custom audience: status, counts (with email/phone/LinkedIn), enrichment progress, column mapping and the first 20 contacts. Page through all contacts with get_custom_audience_contacts. Read-only, free.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose key traits: read-only, free (no credit cost), and a bounded result (only the first 20 contacts are returned, with a pointer to paging). It does not cover authorization requirements or behavior for a missing/invalid id, which keeps it from 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 compact sentences, front-loaded with the resource and its returned fields, then the sibling routing and cost/safety note. Every clause adds information an agent would otherwise have to discover.

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

Completeness5/5

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

No output schema exists, so the description compensates by enumerating the main return fields, stating the 20-contact cap, and pointing to the sibling for full pagination. For a one-parameter read tool that is complete enough to call correctly without surprises.

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 required `id` parameter whose schema description already says 'Custom audience id (UUID)' at 100% coverage, so the schema does the work. The description implies the id selects exactly one audience but adds no syntax, format, or lookup guidance beyond what the schema provides.

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

Purpose5/5

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

The description names the exact resource ('One custom audience') and enumerates the payload an agent will receive (status, counts broken out by email/phone/LinkedIn, enrichment progress, column mapping, first 20 contacts). It also explicitly routes full contact enumeration to `get_custom_audience_contacts`, distinguishing itself from `list_custom_audiences` and the contacts sibling.

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

Usage Guidelines5/5

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

The directive 'Page through all contacts with `get_custom_audience_contacts`' is an explicit alternative and condition, so the agent knows to use this tool for the single-audience snapshot and the sibling for full contact lists. No inference is required for the most likely ambiguity.

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

get_custom_audience_contactsPage through custom audience contactsAInspect

Paged contacts of a custom audience (max 100 per page). Contacts added by Vendo SDR carry signal_context (why they were picked: reasoning, relevance score, ICP group). Read-only, free.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
pageNo
limitNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden and does meaningful work: it declares read-only safety, zero cost, a 100-item page cap, and a data-shape quirk (signal_context with reasoning, relevance score, ICP group for Vendo SDR contacts). It stops short of stating auth/permission requirements or the full return shape, which keeps it below 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?

Three short clauses with zero waste: the resource and paging cap come first, the noteworthy data attribute second, the safety/cost profile last. Every sentence adds information an agent can act on.

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 3-parameter read tool with no annotations and no output schema, the description covers safety, cost, and pagination but leaves the returned contact fields largely unspecified (only signal_context is described) and does not clarify page numbering or permission prerequisites. It is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is only 33%: only 'id' is documented, while 'page' and 'limit' are bare. The description partially compensates by stating 'max 100 per page', which reinforces and explains the 'limit' constraint, but says nothing about how 'page' is interpreted or whether it is 1-based, leaving a real gap.

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+resource: 'Paged contacts of a custom audience.' It clearly identifies the resource and the paging behavior, but it does not distinguish itself from near-siblings such as get_audience_set_contacts, search_audience, or export_custom_audience_csv, leaving the agent to infer which retrieval tool applies.

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. 'Read-only, free' hints this is a cheap read worth preferring, and the paging note hints at iterative use, but there is no explicit when-to-use clause or named alternative for exporting or searching contacts instead.

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

get_custom_audience_enrichmentEnrichment progress of a custom audienceAInspect

Status and progress of a running (or finished) enrichment: status, enrichment_total, enrichment_done, enrichment_progress (%), done flag. Poll every 10–30 s. Read-only.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden; it usefully declares "Read-only", the polling cadence, and the shape of the payload. It does not cover error behavior for an unknown id, whether the call is expensive, or whether concurrent enrichments can be in flight, so the behavioral picture is only partial.

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?

Front-loads the core fact (status/progress of a running or finished enrichment), then lists return fields, then the polling cadence and safety note. Every clause carries signal; nothing is redundant.

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 enumerating status, enrichment_total, enrichment_done, enrichment_progress (%), and done flag genuinely compensates. A one-parameter read tool needs little more, though noting behavior on invalid/finished ids would close the last 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 coverage is 100% and the single `id` parameter is documented as a UUID in the schema, so the description adds nothing beyond it. Baseline 3 is appropriate when the schema fully documents the only parameter.

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 (status/progress of a custom audience enrichment) and enumerates the concrete fields returned, which makes its scope unambiguous versus get_custom_audience or stop_custom_audience_enrichment. It never names those siblings explicitly, so the differentiation is inferable rather than stated.

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?

"Poll every 10–30 s" and "running (or finished)" give real, actionable guidance on when to call it and how often. It stops short of routing to alternatives (e.g., enrich_custom_audience to start, stop_custom_audience_enrichment to cancel), so there is no explicit when-not guidance.

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

get_google_meet_analyticsGoogle Meet analytics of an agentBInspect

Meetings, minutes, completed, missed and credits used for a date range. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
date_toNoTo (YYYY-MM-DD or ISO 8601)
date_fromNoFrom (YYYY-MM-DD or ISO 8601)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden; it does contribute the 'Read-only' safety claim and names the metric set, which is real behavioral information. It still omits what happens when date_from/date_to are omitted (both optional), whether numbers are per-meeting or aggregated, and any auth/connection prerequisite.

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?

Eleven words, metrics front-loaded, no filler. The noun-phrase style and the tacked-on 'Read-only.' are slightly terse but nothing is wasted.

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?

Absent an output schema, the description usefully enumerates the returned metrics, which partially compensates. But for a no-annotation tool it leaves the agent guessing about aggregation granularity, default date window, and connection prerequisites — gaps that matter 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?

Schema coverage is 100%, so the schema already documents id, date_from and date_to with formats and provenance ('from list_agents'). The description adds only the notion of a date range and says nothing about id or about default range behavior, 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?

The description enumerates the specific metrics returned (meetings, minutes, completed, missed, credits used) and the scoping dimension (date range), which is enough to distinguish analytics from a raw meeting list. However, it omits the subject of the query — that figures are per agent, per the id parameter — and never differentiates itself from siblings like list_google_meet_meetings or get_google_meet_settings.

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 the surrounding google_meet tools (list_google_meet_meetings, list_google_meet_history, get_meeting), nor any precondition such as 'the agent must have Google Meet connected'. The only usage signal is the implicit 'date range' scoping, which an agent must infer.

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

get_google_meet_settingsGet Google Meet status & settingsAInspect

Whether Google Meet is connected for this agent, its invite address, settings and totals. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations present, the description's 'Read-only' tag does real work by declaring a non-mutating operation. It also enumerates the response payload, which compensates for the absent output schema. It does not say what happens when Meet is not connected (e.g., whether an error is thrown or a connected=false flag returned) or whether any permission scoping applies.

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 compact sentences, with the payload contents front-loaded before the read-only qualifier. The first sentence is a fragment ('Whether Google Meet is connected ... and totals') but is efficient and free of padding.

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 read with no output schema, enumerating the returned fields (connection status, invite address, settings, totals) gives an agent enough to know what it will get back. The only meaningful gap is the not-connected case, which is a minor omission for a simple status tool.

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

Parameters3/5

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

There is a single required parameter 'id' with 100% schema description coverage, and the schema already documents it as an agent UUID sourced from list_agents. The description adds nothing about the identifier, 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?

The description names the resource (Google Meet connection for a given agent) and enumerates the returned content: connection status, invite address, settings, and totals. It is clearly a read of the agent's Meet configuration, distinguishable from 'update_google_meet_settings' by the stated read-only nature. No sibling is named explicitly, 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 Guidelines3/5

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

'Read-only' implies this is the call for inspecting rather than changing Meet settings, which implicitly contrasts with update_google_meet_settings and connect_google_meet, but the description never states when to choose this over those siblings. No prerequisite or exclusion is given.

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

get_invoicesGet Stripe invoicesCInspect

List of Stripe invoices (paid + open). Optional year/month scope.

NameRequiredDescriptionDefault
yearNo
monthNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden and largely fails to: it says paid + open invoices are returned but never addresses result size, pagination, ordering, or whether month can be used without year. The status inclusion is a useful trait, but the rest of the mutation-free read behavior is unstated.

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, front-loaded sentences with no filler; the resource is named first and the scoping note second. Nothing could be removed without losing information.

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?

There is no output schema and no annotations, so the description is the only source of behavioral context for a 2-parameter tool, and it is too thin. It says nothing about return shape, result size, or defaults when year/month are omitted, leaving an agent under-informed before 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 0% and both parameters are undocumented in the schema, so the description does the compensating work by tying both to an optional year/month scope. It still omits format details (e.g., four-digit year) and the interaction between year and month, so the compensation is only partial.

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 (Stripe invoices) plus the included statuses (paid + open), which is more informative than a bare 'get invoices'. It does not explicitly contrast itself with billing siblings such as get_balance, get_subscription, or get_credit_transactions, so sibling differentiation is only implied.

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 phrase 'Optional year/month scope' hints that filtering is possible, but there is no explicit when-to-use guidance, no statement of when not to use it, and no pointer to an alternative tool for billing data. An agent must infer the use case on its own.

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

get_linkedin_account_settingsLinkedIn account settingsAInspect

Per-account LinkedIn settings shared by every campaign and SDR process using the account: AI auto-replies (on/off, tone, instructions, pitch, booking link, reply delays, daily limit, working hours, agent, contact info), invites (on/off, tone, pitch, instructions, CTA), follow-ups (on/off, pitch, instructions, CTA) and signature (text, first_message|every_message). The first read creates defaults (pre-filled from campaign_id's agent).

NameRequiredDescriptionDefault
account_idYes
campaign_idNoPre-fill defaults from this campaign's agent

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose the important side effect that the first read creates defaults, pre-filled from campaign_id's agent. It does not cover permissions, rate limits, or what happens on subsequent reads, which keeps it from 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?

The description is front-loaded around the resource and then enumerates the relevant settings groups efficiently. The long parenthetical list is dense but each item contributes to scope clarity, so it is appropriately sized rather than 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 two-parameter read tool with no output schema, the description gives enough context about what settings are returned and the default-creation behavior. It could be stronger by clarifying permissions or return shape, but it is largely complete for the complexity.

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

Parameters3/5

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

Schema coverage is 50%: campaign_id is documented in the schema, while account_id has no schema description. The description adds useful meaning by framing settings as account-level and explaining that campaign_id pre-fills defaults from that campaign's agent, but it does not document account_id format or 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?

The description identifies a specific resource, per-account LinkedIn settings, and enumerates the settings groups it covers. It does not explicitly state the verb 'retrieves' or name the sibling update_linkedin_account_settings as the mutation alternative, so it stops short of perfect sibling 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 implied: read the account-level settings shared across campaigns and SDR processes. However, there is no explicit guidance on when to call this versus update_linkedin_account_settings, nor are there prerequisites or exclusions.

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

get_linkedin_conversationOpen a LinkedIn conversationAInspect

All messages of one LinkedIn chat (chat_id from list_linkedin_conversations). Read-only.

NameRequiredDescriptionDefault
chat_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description has to carry the behavioral burden. It does state 'Read-only', which is the single most important trait here, but it says nothing about pagination, message volume limits, ordering, or what fields each message contains. That is a meaningful gap for a list-style retrieval tool.

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

Conciseness5/5

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

Two short clauses, no filler, and the key orientation (which chat, where the id comes from) is front-loaded. Nothing in it is redundant with the name alone.

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 one-parameter read tool this covers purpose, id provenance, and non-mutation, but there is no output schema, so the description leaves the return shape (message fields, ordering, whether all history is returned) entirely unspecified. Adequate but with clear gaps.

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

Parameters4/5

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

Schema coverage is 0% and the single parameter is a bare string, so the description must supply its meaning. It does so by explaining that chat_id identifies one chat and should come from list_linkedin_conversations, which is more than the schema offers. It still lacks format or example detail.

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 resource and scope: all messages of a single LinkedIn chat, identified by chat_id. It also names the sibling that produces the id (list_linkedin_conversations), which separates it from list-level tools. It is not a clean verb phrase, and the title ('Open a LinkedIn conversation') is slightly off from what is described, but an agent can tell what it retrieves.

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 'chat_id from list_linkedin_conversations' is a useful routing hint for how to invoke the tool. However, the description gives no explicit when-to-use or when-not-to-use guidance and names no alternative for reading a chat's contents, so usage is only implied.

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

get_meetingGet a meetingBInspect

One meeting with transcript, summary, action items, join/leave time and duration. Read-only.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully states 'Read-only' and lists the returned components, but it does not describe permissions, error behavior when the meeting is missing, or other operational constraints.

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 no wasted words. The returned contents and read-only nature are front-loaded.

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

Completeness3/5

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

With no output schema or annotations, the description appropriately lists what is returned and flags read-only behavior. However, it leaves the required meeting_id parameter unexplained and does not cover not-found or permission behavior.

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?

There is one parameter, meeting_id, and schema description coverage is 0%. The description does not mention the identifier or explain its format, so it fails to compensate for the missing schema documentation.

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

Purpose4/5

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

Description clearly states it returns a single meeting and enumerates the included data: transcript, summary, action items, join/leave time, and duration. This distinguishes it from list_meetings and get_meeting_transcript, though it does not explicitly say it retrieves by meeting_id.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as get_meeting_transcript or list_meetings. The single-meeting scope is implied, but there are no exclusions, prerequisites, or alternative-routing instructions.

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

get_meeting_transcriptGet a meeting transcriptCInspect

Transcript messages, summary and action items of a meeting (from the database or the recording service). Read-only.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

C2.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose that the operation is read-only and that data may come from either the database or the recording service, which tells the agent results may be sourced differently. It says nothing about permissions, latency, partial availability, or what happens when a transcript does not exist.

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 short sentence with no padding, and the resource is front-loaded. The fragmentary style costs a little clarity but nothing is wasted.

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 single-parameter read tool with no output schema and no annotations, the description should explain the return shape more concretely and how to get a valid meeting_id. It covers the what but leaves the input and the failure modes underspecified.

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 0%, so the single parameter meeting_id has no documented meaning anywhere. The description never clarifies the ID format or where to obtain it (e.g., from list_meetings), leaving the only input unexplained.

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

Purpose3/5

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

The description names the resource and enumerates its contents (transcript messages, summary, action items) plus the data sources, which distinguishes it from get_meeting reasonably well. However it is a noun fragment with no verb, so the agent must infer that the tool fetches/returns this data rather than, say, generating 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?

No guidance on when to call this instead of get_meeting, list_meetings, or get_conversation_recordings, all of which sit nearby in the sibling list. The parenthetical about database vs recording service describes internal fallback, not a caller-facing choice.

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

get_narrator_analyticsPresentation analyticsAInspect

Slide Presenter analytics. view "summary" (default): views, presentations started, watch time, unique viewers, average duration, completion rate, recent sessions, per channel. view "period" with date_from/date_to: widget loads, starts, watch minutes, unique viewers, credits used. Read-only. (No per-slide drop-off.)

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
viewNo
date_toNoTo (YYYY-MM-DD or ISO 8601)
date_fromNoFrom (YYYY-MM-DD or ISO 8601)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does declare 'Read-only' and discloses a scope limit ('No per-slide drop-off'), which is valuable. It says nothing about permissions, rate limits, or pagination of the 'recent sessions' list, which matters for a no-annotation analytics call.

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 dense sentences, front-loaded with purpose, then the default-mode behavior, then the alternate mode, then scope caveats. Every clause carries information; nothing is 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?

No output schema exists, so the description usefully lists the returned fields for both views, which is exactly what's needed. The remaining gap is the undocumented 'id' parameter and lack of permission/pagination context.

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

Parameters4/5

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

Schema coverage is 75% and the description adds meaning beyond it: it explains which metrics each 'view' enum value yields and that date_from/date_to apply to the period view. The required 'id' is only documented in the schema ('from list_agents'), so it is not reinforced here.

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?

'Slide Presenter analytics' names a specific resource, and the description enumerates the exact metrics returned for each view mode, so the agent knows precisely what it gets. It stops short of differentiating itself from nearby siblings like get_presentation or get_analytics_agents.

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

Usage Guidelines4/5

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

It states that 'summary' is the default and that 'period' requires date_from/date_to, which is real guidance for choosing a mode. It gives no guidance about when to prefer this tool over other presentation/analytics siblings, and no exclusions beyond the parenthetical.

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

get_notification_preferencesGet my notification preferencesAInspect

Personal email/in-app preferences: email_notifications, in_app_notifications, meeting_reminders, credit_alerts, analytics_emails_enabled. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

No annotations exist, so the description carries the burden: it explicitly declares 'Read-only' (safe, non-mutating) and names the exact settings returned, which is meaningful behavioral context. It does not cover auth scope (e.g., whether 'my' is the calling user only) but for a zero-parameter safe read that is a minor omission.

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 compact sentence with the category named first and the field list after — front-loaded and waste-free. The field enumeration is dense but earns its place by previewing the response.

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

Completeness4/5

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

With no output schema, listing the returned keys is the right compensation and makes the response shape predictable. Only secondary details (defaults, whether preferences are per-workspace) are unaddressed.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 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+resource ('Get notification preferences' + 'Personal email/in-app preferences') and enumerates the actual preference keys, so an agent knows exactly what this returns. It doesn't explicitly name the sibling update_notification_preferences, which is the only clear gap.

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?

'Read-only' implies this is the inspection counterpart to update_notification_preferences, so usage is inferable, but no explicit when-to-use or when-not-to-use guidance is given.

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

get_phone_channel_statsVoice Call channel countersBInspect

Calls attempted/completed/successful, minutes and credits of one Voice Call channel. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden; it usefully discloses 'Read-only' and enumerates the returned counters, which is meaningful behavioral context. However, it says nothing about permissions, response shape, or empty-data handling for a stats endpoint.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler: metrics first, scope second, safety 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 simple two-parameter read-only stats tool with a fully documented schema, the description covers what is measured, the scope, and the read-only nature. Its only gap is sibling differentiation, which slightly limits routing confidence.

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 id and connection_id are already documented with their source lists (list_agents, list_agent_connections). The description only implies 'one channel' conveys the scoping and adds no syntax or constraint details beyond the schema, 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 (implicitly retrieves) and enumerates the exact metrics returned (attempted/completed/successful calls, minutes, credits) scoped to one Voice Call channel. The resource is clear, but it does not distinguish itself from close siblings like get_agent_connection_stats or get_campaign_phone_stats, which also report channel/phone performance.

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 tool versus the many sibling stats tools (get_agent_connection_stats, get_campaign_phone_stats, get_connection_analytics). An agent must infer the choice 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.

get_planner_eventsPlanner: sending windows per dayAInspect

The planner layer of the calendar page: campaign and SDR sending windows per day and channel (paused flag, planned today, sent today) with campaign/search info, for an ISO date range (wide ranges are capped; range says what was materialised). CRM events: crm_list_calendar_events. Read-only.

NameRequiredDescriptionDefault
toYesISO date
fromYesISO date

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully discloses that the tool is read-only and that wide ranges are capped, with a `range` materialisation indicator, but it does not cover permissions, pagination, or broader response behavior.

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

Conciseness4/5

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

The description is front-loaded with purpose and contains no filler sentences. It is dense and uses parenthetical clauses to pack in several concepts, which slightly reduces readability but remains efficient for the amount of information conveyed.

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

Completeness4/5

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

With only two required date parameters, 100% schema coverage, no annotations, and no output schema, the description does a good job covering the key returned data categories, read-only nature, cap behavior, and CRM-events alternative. It still omits exact response shape and pagination/auth details, but is largely sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so from/to are already documented as ISO dates. The description still adds meaningful constraint context by warning that wide date ranges are capped, which affects how from/to should be chosen, even though `range` is a response-side concept rather than an input parameter.

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

Purpose5/5

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

The description specifies the resource and scope precisely: planner-layer calendar data, campaign and SDR sending windows per day/channel, with fields like paused flag and planned/sent today. It also explicitly distinguishes the CRM events sibling by naming crm_list_calendar_events, so an agent can tell what this tool returns versus the alternative.

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

Usage Guidelines4/5

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

It gives clear routing context by stating that CRM events are served by crm_list_calendar_events, implicitly directing this tool to planner/sending-window data. It lacks fuller when-to-use wording or exclusions, but the alternative is named and the scope is clear.

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

get_presentationGet the agent's Slide PresenterAInspect

The agent's presentation: PDF name, slides (text + presenter script; images with include_images), look, call-to-action, presenter voice, published channels and direct link. Read-only. (list_agent_presentations shows only the legacy creator.)

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
include_imagesNoAdd slide image URLs

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full safety burden and does state 'Read-only', which is the critical disclosure. It also explains that slide images are only returned when include_images is set, which is genuine behavioral context. It does not say what happens when no presentation exists or what errors to expect, leaving a gap.

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

Conciseness4/5

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

The return contents are front-loaded in a single dense clause, followed by the read-only note and the sibling disambiguation. It is compact with no filler sentences, though the heavy parenthetical nesting makes it slightly harder to parse at a glance.

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, and the description compensates well by enumerating the returned fields, so an agent knows what to expect. With only two fully documented parameters, the remaining gap is failure-mode behavior, which is minor for a read-only getter.

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 both parameters are documented in the schema (id as an agent UUID from list_agents, include_images as adding slide image URLs). The description reinforces include_images's effect on returned images but adds nothing about the required id beyond 'the agent's presentation'. Baseline 3 is appropriate 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 enumerates exactly what the resource contains (PDF name, slides, look, CTA, voice, published channels, direct link), so the agent knows this returns the full presentation record for an agent. It also explicitly differentiates from the sibling list_agent_presentations. The only shortfall is that the action verb is carried entirely by the tool name rather than stated in the description.

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 '(list_agent_presentations shows only the legacy creator.)' implies this is the tool for the current/non-legacy presentation, which is useful routing. However, no explicit when-to-use or when-not-to-use condition is stated, and no preconditions (e.g., the agent must already have a presentation) are given.

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

get_presentation_embed_codeGet the presentation embed code & linkAInspect

Direct link (narrator page) and the HTML snippet with the saved look. Publish it as a channel first (create_agent_connection type PRESENTATION_WIDGET). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it does add useful traits: it declares 'Read-only', describes the two return artifacts, and flags the required pre-publication step. However it omits error behavior when the presentation is not yet published as a channel, and gives nothing on auth/scoping or whether the link is stable or expiring.

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

Conciseness4/5

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

Three tight fragments front-load the return value, then the prerequisite, then the safety note — no wasted sentences. The telegraphic style ('Direct link (narrator page) and the HTML snippet with the saved look.') is dense but readable, losing only a little clarity for the compression.

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 read tool with no output schema, the description covers what comes back and the required setup step, which is the essential information to call it correctly. The main remaining gap is failure behavior if the presentation has not been published as a channel.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema (agent id UUID sourced from list_agents) at 100% coverage, so the baseline is 3. The description adds no additional meaning about the id — no note on whether it is the agent or presentation id, which is a slight ambiguity given the tool name.

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 what the tool returns — a direct narrator-page link plus an HTML snippet rendered with the saved look — which is specific enough to identify the operation. It does not explicitly distinguish itself from the close sibling get_widget_embed_code, so an agent must infer 'presentation' vs 'widget' from the name and the 'narrator page' phrase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete prerequisite and ordering rule: publish as a channel first via create_agent_connection with type PRESENTATION_WIDGET. That is real when-to-use guidance naming the exact sibling tool to call beforehand. It stops short of stating exclusions (e.g. when to pick get_widget_embed_code instead) or what happens if the prerequisite is skipped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pricingGet public pricing catalogueAInspect

List of public plans + add-ons (Extra Agent Slot, SDR sender pair, etc.) with prices. Optional currency filter (USD/GBP/EUR); omitted = every currency. Read-only.

NameRequiredDescriptionDefault
currencyNoOnly prices in this currency

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden. It declares 'Read-only' and explains the default behavior when the filter is omitted, which is genuinely useful, but it says nothing about the shape of the returned catalogue, whether plans and add-ons are separate sections, or authentication requirements.

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 compact sentences with the resource and contents front-loaded, followed immediately by the filter semantics and safety trait. 'etc.' is the only soft spot and it costs nothing in practice.

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 read tool with no output schema, the description covers what is returned (plans plus add-ons with prices), the filter, and the read-only nature. Only the structure of the returned catalogue remains unspecified, which is a minor gap given the tool's simplicity.

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% and the enum is already documented, so the baseline would be a 3. The description adds real value beyond the schema by stating that omitting the parameter returns every currency, which is the key decision an agent must make when invoking.

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: listing public plans and add-ons with prices, with concrete examples (Extra Agent Slot, SDR sender pair). The word 'public' implicitly separates it from account-scoped tools like get_subscription and get_balance, 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?

The currency-filter behavior is spelled out clearly ('omitted = every currency'), but there is no explicit guidance on when to choose this tool over get_subscription, get_balance, get_balance_full, or get_supported_currencies, all of which live nearby and could be confused with pricing lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileGet my profileAInspect

The API key owner's profile: name, email, company, position, avatar. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the single most important trait: read-only, no side effects. It also reveals the response content by listing fields. It does not state auth expectations beyond 'API key owner', nor whether the call fails or returns null fields when profile data is incomplete.

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?

Nine words, front-loaded with the resource, then the field list, then the read-only qualifier. Every element earns its place and nothing is repeated from structured fields.

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-param read with no annotations and no output schema, the description compensates well by listing the fields returned, which is effectively a lightweight return-value summary. Only the absence of any identity/session caveat keeps it from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly does not invent 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?

The description names the exact resource ('The API key owner's profile') and enumerates the returned fields (name, email, company, position, avatar), so it is clearly distinguishable from get_workspace, update_profile, or set_profile_avatar. It stops short of a verb phrase ('returns ...'), but the resource and scope are unambiguous.

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?

'Read-only' implies this is the fetch path and update_profile/set_profile_avatar are the mutation paths, but neither alternative is named explicitly. There is no statement of when-not-to-use or of the fact that it reflects the API key owner rather than an arbitrary workspace member (contrast crm_list_workspace_members).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_referral_overviewReferral program overviewAInspect

Commission %, minimum payout, totals (visits, signups, paying customers, revenue, earned, paid out, available), every referral link with its stats, and payout request statuses. Payout requests themselves can only be made in the app. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the safety burden and does so: 'Read-only' declares the operation is non-mutating, and 'Payout requests themselves can only be made in the app' proactively closes off an action an agent might otherwise attempt. Auth requirements and rate limits are still unmentioned, keeping it below 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?

One compact sentence packs the field inventory, followed by the payout limitation and the read-only flag. The comma-heavy list of totals is dense but every item carries information; the important constraint (read-only) is placed at the end rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe the return shape, and it does by naming each returned metric group plus per-link stats and payout statuses. Combined with the zero-parameter simplicity and the read-only disclosure, an agent has enough to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate beyond confirming the tool needs no input.

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 enumerates exactly what the overview contains (commission %, minimum payout, totals, referral links with stats, payout request statuses), which distinguishes it from create_referral_link / update_referral_link / get_referral_share_card by scope. The verb is implicit rather than stated ('overview'), and sibling tools are never named, 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 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 the aggregate view to call before drilling into referrals or links. There is no explicit when-to-use versus list_referred_users or get_referral_share_card, and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_referral_share_cardReferral share card dataAInspect

Everything needed to render the share card / QR for a link: url (QR payload), short url, headline and description texts. Render the QR image yourself. Read-only.

NameRequiredDescriptionDefault
idYesReferral link id (UUID)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description does real work: it declares the tool read-only (the safety profile an annotation would otherwise carry) and flags the important behavioral nuance that the QR image is not produced — the caller must render it from the url payload. It does not cover auth requirements or behavior on an invalid/unknown id, which keeps it below 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?

Front-loaded with purpose, then the returned fields, then the rendering caveat, then the read-only marker. Every clause adds information and there is no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately enumerates the return payload and warns that image rendering is the caller's job — enough to call it correctly for a one-parameter read tool. Minor gaps remain around error behavior for an unknown id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'id' parameter has full schema description coverage ('Referral link id (UUID)'), so the schema carries the semantics. The description adds only the loose phrase 'for a link', confirming the id identifies a referral link but nothing beyond that. 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 states a specific resource — everything needed to render a share card/QR for a referral link — and enumerates the fields returned (url, short url, headline, description). It is clearly distinct in spirit from get_referral_overview and list_referred_users, though it never names a sibling to draw the boundary explicitly.

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?

Usage is only implied by the scenario ('to render the share card / QR'). There is no explicit statement of when to prefer this over get_referral_overview or create_referral_link, no preconditions, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sdr_email_capacityGet Vendo SDR managed-sender capacityAInspect

How many SDR sender email addresses the account has (included + purchased extras) and the estimated daily email throughput. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does add the meaningful 'Read-only' safety signal plus a clear statement of what the returned data represents. It stops short of anything about permissions, freshness of the estimate, or limits on retrieval, which are minor for a zero-parameter read.

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 compact sentences, with the resource and its scope front-loaded and the read-only trait placed last. 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?

There is no output schema, so the description must explain the return values, and it does: a count of sender addresses and an estimated daily throughput. Combined with the read-only note, an agent has what it needs, though it could say more about how the estimate is derived.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing to disambiguate; baseline 4 applies. The description adds no parameter detail, but none is needed.

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 resource (SDR sender email addresses) and precisely what is measured (count of included + purchased extras and estimated daily throughput). It implicitly separates itself from credit/balance siblings by focusing on sender capacity rather than credits, though it never names an alternative.

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 when-to-use guidance, no conditions, and no mention of alternatives such as get_subscription_limits or get_balance. The agent must infer the use case entirely from the purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscriptionGet current subscriptionCInspect

Plan, status (ACTIVE/CANCELLED/PAST_DUE/EXPIRED/TRIALING), period dates, currency, amount, Stripe IDs.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and falls short: it does not state that this is a read-only operation, whether authentication/workspace scoping is required, or what happens when no active subscription exists. It does add one genuinely useful behavior detail — the enumerated status values (ACTIVE/CANCELLED/PAST_DUE/EXPIRED/TRIALING) — which lifts it above the minimum.

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 compact fragment with no filler, appropriately sized for a zero-parameter tool, and the most salient field (plan, status) is front-loaded. It is terse to the point of being elliptical, which slightly undercuts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is the only source of return-shape information, and it does enumerate the returned fields, which is genuinely useful. However, it omits the behavioral context a no-annotation, no-output-schema tool needs: no statement of read-only nature, no empty-state behavior, and no verb framing the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate on the input side, and it correctly adds no param noise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun list of the subscription fields returned ('Plan, status, period dates, currency, amount, Stripe IDs') rather than a verb+resource statement; the actual action is only inferable from the name/title 'Get current subscription'. It conveys the subject matter but does nothing to distinguish it from close siblings like get_subscription_limits or get_pricing.

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 when-to-use guidance, no exclusions, and no mention of the obvious alternative get_subscription_limits. An agent must guess from the name alone which subscription-related tool to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscription_limitsGet plan limits (max agents, extra slots)AInspect

Base + purchased extra agent slots. Useful to check "can I create another agent?" before calling create_agent.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It's a read-only limits lookup; 'base + purchased extra slots' hints at what's returned, but it doesn't state the shape, whether limits are per-workspace, or what happens when the limit is exceeded (does create_agent fail?). Adequate but thin for an annotation-free 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?

Three short clauses, front-loaded and skimmable. No filler. Slightly informal with the embedded question quote, but tight.

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 and no annotations, so the description must cover behavioral and return aspects. It gives the use case but not what the response contains (e.g., fields, current vs. max, unless output schema covers it). Just enough to call, not enough to depend on the result.

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?

Zero parameters, so the baseline is 4. No parameter detail is needed and none is given; nothing is misrepresented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource differently: 'base + purchased extra agent slots' clarifies that the tool returns both the plan allowance and any add-on slots. However, it never states the actual verb (it's implied 'get limits') and doesn't distinguish from the near-identical sibling get_agent_plan_limits. An agent could confuse which of the two returns which limits.

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 says when to use it — 'check "can I create another agent?" before calling create_agent' — and names the triggering sibling. That is a concrete pre-flight check use case, not vague guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_currenciesSupported billing currenciesAInspect

Currencies Vendo bills in (code, symbol, name) and the account's own billing currency. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; it does disclose the key trait ('Read-only') and sketches the payload fields. It says nothing about authentication requirements, caching/rate limits, or whether the currency list is global versus workspace-specific — gaps that matter for a zero-parameter lookup.

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 compact sentence, front-loaded with the primary payload and ending with the safety qualifier. Every clause earns its place, though the parenthetical field list could be integrated slightly more smoothly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description must convey the return value, and it does: a currency list with code/symbol/name plus the account's billing currency. It stops short of stating the response shape (array vs object) or whether the account currency is a code or a full object, which is a minor residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing the description could add about inputs and it does not waste words pretending otherwise.

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 resource (billing currencies Vendo supports) and adds the useful detail that the response includes code, symbol and name plus the account's own billing currency. It is distinguishable from billing-adjacent siblings like get_pricing, get_balance or get_subscription, though it never names them 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 — an agent can infer it should call this when it needs currency codes or the workspace's billing currency. There is no statement of when to prefer get_pricing or get_balance instead, and no preconditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_telegram_analyticsTelegram analyticsAInspect

Chats, messages, voice calls, text messages, unique users and credits (text/voice) of the agent's Telegram bot for a date range. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
date_toNoTo (YYYY-MM-DD or ISO 8601)
date_fromNoFrom (YYYY-MM-DD or ISO 8601)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It does disclose 'Read-only', which is the key safety signal, but adds nothing about auth requirements, whether the date range is optional, or any limits on the aggregation. Adequate but thin for an unannotated 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 dense sentence that front-loads the returned metrics and ends with the scoping and safety notes. The metric enumeration is long but each item is meaningful given there is no output schema. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, enumerating the returned metrics (chats, messages, voice calls, unique users, credits) is genuinely useful and covers the return-value gap. The scope (single agent, date range) and safety (read-only) are stated. Missing only edge behavior such as default date range or empty-result handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters (id, date_from, date_to) are already documented in the schema. The description's 'of the agent's Telegram bot for a date range' loosely ties the id and date params together but adds no format or boundary 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?

The description names the specific resource (the agent's Telegram bot) and enumerates the metrics returned (chats, messages, voice calls, unique users, credits), which is more concrete than a bare 'get analytics'. It doesn't explicitly contrast with nearby siblings like get_telegram_bot_info, get_telegram_chat or get_connection_analytics, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'for a date range' implies the calling context (scoped to a date window on one agent's bot), but there is no explicit when-to-use/when-not statement and no alternative tool is named. The agent has to infer that this is the stats endpoint rather than the chat/listing endpoints from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_telegram_bot_infoGet current Telegram bot infoCInspect

See the connected bot username + settings.

NameRequiredDescriptionDefault
idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It implies a read operation and mentions the returned data, but doesn't disclose whether it requires a connected bot, any permission constraints, or error behavior. This is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is short and front-loaded, with no waste. It could be slightly more informative without becoming verbose, but it is adequately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, no output schema, and an undocumented required parameter, the description is incomplete. It should clarify the 'id' parameter and mention prerequisites (e.g., a connected bot) to be sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'id' with no description (0% coverage). The description doesn't explain what 'id' refers to—bot ID, connection ID, agent ID? Without this, the agent cannot correctly populate the parameter.

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?

Clear verb 'See' and resource 'connected bot username + settings', and the name/title reinforce it. It doesn't explicitly differentiate from siblings like get_telegram_analytics or connect_telegram_bot, but the scope (bot info, not analytics or connection) is sufficiently distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_telegram_analytics or list_agent_connections. The description simply states what it returns without any context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_telegram_chatRead a Telegram chatBInspect

All messages of one Telegram chat, incl. voice-call turns with recording URL and duration. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
chat_idYeschats[].id from list_telegram_chats

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does state 'Read-only', which is a genuine safety disclosure, and hints at return contents (recordings URL, duration). It says nothing about pagination, message ordering, or result size limits — meaningful gaps for a message-history tool that can return large volumes.

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 compact sentences, front-loaded with the scope and followed by the behavioral note. No filler and nothing redundant.

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?

There is no output schema, and the description partially compensates by mentioning message content and call metadata. However, pagination, ordering, and volume/rate behavior — the practical concerns for a chat-history read — are omitted, leaving the agent unable to anticipate result shape beyond a hint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both required parameters (agent id, chat id) are already documented with sources in the schema. The description adds no additional meaning about the parameters, 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 the resource precisely ('all messages of one Telegram chat') and adds a distinguishing trait (voice-call turns with recording URL and duration) that separates it from list_telegram_chats or get_telegram_analytics. It lacks an explicit verb, but 'read' comes from the title and the operation 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?

The description gives no when-to-use or when-not guidance and never names an alternative such as list_telegram_chats (for enumerating chats) versus this tool (for reading one chat's history). The only routing hint lives in the schema param descriptions, not the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_widget_embed_codeGet the embed code of a channelAInspect

HTML to paste on a site for a channel: website widget (settings load from the server), website button (style it here: text, colours, radius, size — not stored server-side) or Slide Presenter (also the direct link). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
sizeNoButton only
textNoButton only: label (default "Talk to Assistant")
text_colorNoButton only
border_radiusNoButton only (px)
connection_idYesChannel (connection) id (UUID) — from list_agent_connections
background_colorNoButton only
modal_primary_colorNoButton only: colour of the chat window it opens

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it delivers meaningful traits: it declares the operation read-only and — importantly — that website widget settings load from the server while button styling is not stored server-side (so the returned HTML is static for buttons). It omits return shape and permission needs, keeping it from 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?

One front-loaded sentence led by the core output (HTML to paste on a site for a channel), with the variants following. Dense and mostly waste-free, though the telegraphic style and parentheticals make it slightly harder to parse than a cleaner sentence would.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no annotations, and no output schema, the description does cover the three variants and the read-only nature, but it never says what the return value looks like (raw HTML string, object, per-variant fields) or auth requirements. Adequate for a get tool, but with clear gaps left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all eight parameters, establishing the baseline of 3. The description only echoes the grouping (text, colours, radius, size belong to the button; Slide Presenter adds a direct link) without adding format or default detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource precisely: returns HTML embed code to paste on a site for a channel, and enumerates the three variants (website widget, website button, Slide Presenter). An agent can tell what it produces. It stops short of explicitly distinguishing itself from the sibling get_presentation_embed_code, so it isn't 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use is implied — you call it when you need embed HTML for a channel — but there is no explicit when-to-use/when-not or naming of alternatives such as get_presentation_embed_code or create_widget_test_page. The variant breakdown hints at selection but doesn't route the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workspaceGet workspace, members and invitationsBInspect

Workspace name/owner, members (user_id, email, name, role, feature permissions), pending invitations, and whether the caller is admin/owner. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It usefully states 'Read-only' and enumerates sensitive returned fields, but does not mention required permissions, whether admin rights are needed to view members/invitations, or any rate/pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: one sentence listing return contents followed by 'Read-only.' It is front-loaded with the resource and avoids unnecessary prose. The field list is dense but each item adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, output-schema-less read tool, the description gives a solid inventory of what is returned, including member fields, invitations, and caller admin status. It is incomplete on permissions/usage guidance, but structurally it covers the core return contract an agent needs before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema coverage is trivially 100% and no parameter semantics are needed. The description correctly avoids discussing inputs and instead focuses on returned data, which is appropriate for a zero-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool retrieves workspace details: name/owner, members with roles and permissions, pending invitations, and the caller's admin/owner status. It is a specific read operation, though it does not explicitly distinguish itself from siblings like crm_list_workspace_members or get_profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. 'Read-only' describes behavior but not usage context, leaving the agent to infer when to call get_workspace instead of member-listing or profile tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invite_workspace_memberInvite a teammate (sends an email)AInspect

Sends a REAL invitation email (link valid 7 days). Admins only. Only call after the user approved preview_invite_workspace_member.

NameRequiredDescriptionDefault
emailYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses a real side effect (sends an email), the invitation link validity (7 days), admin-only access, and the required preview approval. It does not cover whether the invitation can be revoked or how failures are reported, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loaded with the action and side effect. Every sentence adds useful operational context without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema or annotations, the description is nearly complete: it covers the side effect, permissions, prerequisite preview, and link validity. The remaining gap is the email parameter semantics, which is not described.

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?

There is one required parameter, email, and schema description coverage is 0%. The description implies an email recipient but does not explain the parameter, format expectations, or constraints, so it does not compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: sends a real invitation email to a workspace member. It explicitly distinguishes this tool from the preview sibling by emphasizing REAL and requiring approval of preview_invite_workspace_member first.

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?

Usage conditions are explicit: Admins only, and only call after the user approved preview_invite_workspace_member. This tells the agent both the permission constraint and the required prerequisite workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_audience_setTurn an audience set into a campaign audienceAInspect

Creates a campaign-ready audience from a marketplace set and returns its audienceId. Signals sets SPEND CREDITS (a fresh snapshot is bought, price per contact; it also appears in My Audiences); people sets are free. Does NOT contact anyone. Next: create_campaign with the audienceId, then preview_launch_campaign. Only call after the user approved preview_launch_audience_set.

NameRequiredDescriptionDefault
idYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden and does most of it: discloses that signals sets spend credits (fresh snapshot bought, price per contact), that people sets are free, that the result appears in My Audiences, and that it does NOT contact anyone. It stops short of stating reversibility or whether a repeat call buys another snapshot.

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?

Front-loaded with the action and return value, then cost semantics, then the negative side-effect, then the call chain. Dense but every clause carries decision-relevant information; the telegraphic phrasing ('Signals sets SPEND CREDITS') aids scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and no annotations, the description covers cost, side effects, prerequisite, and the returned audienceId plus what to do with it. Nothing an agent needs in order to call 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?

One parameter (`id`) at 0% schema coverage. 'from a marketplace set' implies the id is an audience-set id rather than an audience id, but that is inference — the description never explicitly says which object the id identifies, and sibling tools like get_audience vs get_audience_set make that ambiguity real.

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?

Specific verb + resource: 'Creates a campaign-ready audience from a marketplace set and returns its audienceId.' It also distinguishes itself from near-siblings (buy_audience_set, save_audience, prepare_campaign_audience_from_custom) by naming the source object and the output handle.

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?

Explicit sequencing: only after the user approved `preview_launch_audience_set`, then `create_campaign` with the audienceId, then `preview_launch_campaign`. That is a full when-to-call plus the downstream chain, leaving no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_campaignLaunch / resume a campaign (sends real outreach)AInspect

Start (or resume a paused) campaign exactly like the app: starts email sending and queues LinkedIn on the selected (or all connected) accounts. Contacts receive REAL outreach in the working hours; credits are spent as messages go out. Only call AFTER the user reviewed preview_launch_campaign and approved it. Returns the campaign plus linkedin_activation.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
linkedin_account_idsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it warns that contacts receive REAL outreach, that credits are consumed as messages go out, and that LinkedIn work is queued rather than executed immediately. It omits permission/auth requirements and whether a launch can be undone beyond pause_campaign, which keeps it from 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?

Four short sentences, side effects and the approval gate front-loaded. 'Exactly like the app' is the only slightly soft phrase, but it conveys behavior parity with the UI, so waste is minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-consequence mutation with no annotations and no output schema, the description covers consequences (real sends, credit spend), sequencing (preview/approval first), target selection semantics, and even names the return payload (campaign plus linkedin_activation). Nothing essential to calling it safely is missing.

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 50% (id documented, linkedin_account_ids bare), and the description compensates by explaining that LinkedIn runs on the 'selected (or all connected) accounts' — i.e. omitting the list means all connected accounts. The id parameter's origin is also pointed at via list_campaigns in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource with scope: starts or resumes a campaign, kicks off email sending and queues LinkedIn on selected or all connected accounts. It also names the required precursor (preview_launch_campaign). It does not, however, distinguish itself from close siblings such as send_campaign_emails_now or activate_campaign_linkedin, which sound like overlapping actions.

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 precondition: only call after the user reviewed preview_launch_campaign and approved it. It also frames the operational window (working hours) but does not state when-not to call it versus the channel-activation or send-now siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agent_connectionsList an agent's connections (channels)BInspect

See every channel attached to this agent: widgets, telegram, phone, presentations, etc.

NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'See' implies a read-only, non-mutating operation, and the enumeration of channel types suggests a complete listing, but it omits explicit read-only confirmation, auth requirements, pagination, and response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It efficiently communicates scope and examples without redundancy.

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 simple list tool, the description is incomplete: it does not document the required id parameter despite 0% schema coverage, provides no return format or pagination details, and has no annotations to compensate. The one-line description is inadequate for an agent to call it with full confidence.

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 0% for the single required 'id' parameter. The description only implies 'this agent' without naming or explaining the id parameter, leaving the agent to infer its meaning and format from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('See'), resource ('every channel attached to this agent'), and enumerates channel types including widgets, telegram, phone, and presentations. This distinguishes it from siblings like list_agent_presentations and get_agent by explicitly covering all connections rather than a single category.

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 alternatives, and no prerequisites. It only implies that one would use it to view channels, which is essentially a restatement of the purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agent_jobsList recent long jobs of an agentAInspect

Deep scans and script generations of this agent in the last hour (status only) — use when a job_id was lost. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still discloses key behavior: it is read-only, limited to the last hour, and returns status only rather than full job details. These details are useful and not contradicted by structured metadata, though return format and pagination are not discussed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single front-loaded sentence that states scope, return limitation, usage condition, and safety profile with no wasted words. Every element 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 simple one-parameter read-only listing tool with full schema coverage, the description is largely complete: it explains scope, purpose, usage trigger, and that only status is returned. Since no output schema exists, a brief note on the exact return fields would make it fully complete, but the current information is sufficient to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter (agent id) and the schema description coverage is 100%, with the schema already explaining that it is an Agent UUID from list_agents. The tool description adds no further parameter semantics beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resources (deep scans and script generations), the scope (last hour), and the return type (status only), which clearly identifies what the tool lists. It does not explicitly name the sibling get_agent_job, so sibling differentiation is implied rather than stated outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage condition: 'use when a job_id was lost.' This effectively points the agent to this listing tool rather than direct job retrieval, though it does not explicitly mention the alternative get_agent_job or any when-not-to-use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agent_presentationsGet the agent's presentation (alias)AInspect

Alias of get_presentation kept for older clients: returns the agent's current Slide Presenter deck (PDF name, slides with text and presenter script, look, call-to-action, voice, published channels, direct link) — slides_count 0 when no deck is uploaded. Prefer get_presentation. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
include_imagesNoAdd slide image URLs

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the burden and does well: it declares the operation read-only, describes the returned fields, and discloses the important edge case that slides_count is 0 when no deck is uploaded. It does not cover auth/permission requirements or error behavior, which keeps it below 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?

A single front-loaded sentence that leads with alias identity, then payload contents, then the edge case, then the routing preference, then the safety note. Every clause carries information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description supplies return-field inventory, the empty-deck case, read-only status, and the alternative tool. Nothing an agent needs to select or call 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?

Schema coverage is 100%, so the id and include_images parameters are already fully documented in the schema. The description mentions no parameter behavior or defaults, providing no added semantic value beyond the structured fields — the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the exact resource and verb ('returns the agent's current Slide Presenter deck') and immediately states it is an alias of get_presentation. Enumerates the payload fields (PDF name, slides, look, CTA, voice, channels, link), so an agent can distinguish it from get_presentation and every set_presentation_* mutator.

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 says 'Prefer get_presentation' and explains the only legitimate use case ('kept for older clients'), which is a clear when-to-use/when-not-to-use rule. The read-only note further confirms it is a safe lookup rather than a modification path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsList agentsBInspect

List all AI agents in the account. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does supply the key safety fact ('Read-only'). It says nothing about scope of the account listing, pagination, or result size, which matters for an unbounded list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and scope. No waste, though the second sentence is a bare qualifier rather than added substance.

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 simple parameterless list tool with no output schema, the description is minimally viable. It omits pagination/return-shape expectations and any tie-break against near-identical sibling listing tools, which an agent selecting a tool would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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 all AI agents in the account'), which is unambiguous. However, it does not distinguish itself from the many close siblings — crm_list_workspace_agents and list_agents_with_stats both plausibly return agent lists, and the description gives no basis for choosing among 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?

No when-to-use guidance and no routing to alternatives. With list_agents_with_stats and crm_list_workspace_agents in the sibling set, the agent is left to guess which listing tool matches its intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agents_with_statsList agents with usage statsAInspect

Same as list_agents but includes per-agent stats (connections, credits spent, status).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses what extra data comes back versus the sibling, but says nothing about read-only nature, permissions, pagination, or result size for a list endpoint. Adequate but incomplete for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the differentiator (per-agent stats) and free of 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?

There is no output schema, so the description must hint at return content, and it names the three stat categories. For a zero-param list tool this is nearly sufficient, though it could say more about result shape or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a 0-param tool is 4; no parameter details are missing that the schema would otherwise need to supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb (list) and resource (agents), and explicitly anchors itself against its closest sibling by naming `list_agents` and stating the delta. An agent can distinguish this from `list_agents` without opening either schema, and the three extra stat fields (connections, credits spent, status) make the added scope concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Same as X but includes Y' framing implicitly routes the agent: pick this when you need stats, otherwise use `list_agents`. That is real selection guidance, but it stops short of stating prerequisites or exclusions explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_app_notificationsList app notifications (bell)AInspect

The caller's in-app notifications, newest first (type, subject, preview, isRead, createdAt), with unreadCount and paging. Types include MEETING_TRANSCRIPT, MEETING_NOTIFICATION, SUBSCRIPTION_*, PAYMENT_RECEIPT, LOW_CREDITS, CREDITS_ADDED, INVITATION, CUSTOM. CRM lead notifications are separate (crm_list_notifications). Read-only.

NameRequiredDescriptionDefault
pageNo
limitNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it declares 'Read-only', discloses sort order, the shape of results (array plus unreadCount), and that paging applies. It omits auth requirements, default/maximum page size, and total-count behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what is returned and how it is ordered, then the type enumeration, then the sibling exclusion. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list tool with no output schema, the description covers return shape, ordering, and scope well enough to call it. The missing piece is concrete paging semantics, which matters when there are no annotations or schema descriptions to fall back on.

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 0%, so the description must explain page and limit. It only alludes to 'paging' without stating defaults, the maximum of 100, or what page numbering means, leaving both parameters effectively undocumented.

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+resource (list the caller's in-app notifications), the ordering (newest first), and the returned fields (type, subject, preview, isRead, createdAt). It also names the enumerated notification types and explicitly distinguishes itself from the CRM notification sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'CRM lead notifications are separate (crm_list_notifications)' explicitly routes the agent away from this tool for CRM leads, which is real exclusion guidance. However, it never mentions when to prefer the sibling get_app_notifications_unread_count over this tool for a simple badge count.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_audiencesList saved audiencesAInspect

List the CAMPAIGN audiences (filter-based, attachable to campaigns) of this workspace. Uploaded / purchased / CRM-built lists ("My Audiences") are listed by list_custom_audiences. Read-only, free.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It usefully states that the operation is read-only and free, but does not disclose return format, pagination, ordering, or authentication requirements, leaving meaningful gaps for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences front-load the core purpose and audience distinction. Every phrase adds useful routing or behavioral information, with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description sufficiently explains what is listed, how it differs from `list_custom_audiences`, and that the call is read-only and free. It could still be richer about returned fields, but the essential selection information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to explain. The schema is empty and the description appropriately avoids inventing or describing nonexistent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (List) and resource (CAMPAIGN audiences), adds scoping detail (filter-based, attachable to campaigns), and explicitly distinguishes this from the custom-audience listing tool. An agent can identify this tool without opening its 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?

It clearly routes the agent to `list_custom_audiences` for uploaded, purchased, or CRM-built lists, which defines the primary alternative. However, it does not state any other conditions for choosing this tool or mention edge cases where neither audience type applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_audience_setsBrowse the Audience Sets marketplaceAInspect

Browse pre-built, ready-to-use audiences available for purchase, plus their categories. Browsing is free; buying costs credits. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose two valuable behavioral facts: the call is read-only and free, while downstream purchasing consumes credits. It does not cover pagination, result size, or return shape, but the cost/safety profile — the most consequential trait here — is clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, front-loaded with the resource and its scope, then cost model, then safety. No filler and nothing redundant with 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 zero-parameter, no-output-schema listing tool, the description covers what is returned (audiences and categories) and the cost/read-only behavior. It lacks guidance on result volume or how to drill into a specific set, which is a minor gap given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate beyond confirming the call takes no required input.

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 (browse/list) and resource (pre-built audiences in the marketplace), and explicitly includes the scope 'plus their categories.' It is distinguishable at a glance from get_audience_set (single set), list_audiences, and buy_audience_set (purchase action).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies context with 'Browsing is free; buying costs credits,' which signals this is the discovery step before a purchase, but it never names buy_audience_set or any alternative, nor states when to prefer get_audience_set or search_audience. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_discovered_leadsLeads found by AI discoveryBInspect

Leads found by AI lead discovery for a campaign, filterable by status (discovered, enriching, enriched, added_to_audience, rejected, duplicate, enrichment_failed). Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
offsetNoRows to skip (default 0)
statusNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full disclosure burden; it does usefully declare 'Read-only', which is the most important trait for an agent deciding whether this mutates state. Beyond that it says nothing about ordering, what an empty result means, behavior for an invalid campaign id, or whether discovery must be enabled on the campaign.

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 that leads with what is returned and ends with the safety trait. The inline status list is somewhat redundant against the enum but is short enough not to hurt readability.

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 four-parameter read tool with no annotations and no output schema, the description covers the essentials of what is returned but leaves the response shape (fields per lead), pagination semantics, and the relationship to the campaign's discovery configuration entirely undocumented.

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 75%: id, limit and offset are already documented in the schema, including defaults and bounds. The description's only parameter contribution is enumerating status values, which restates the schema enum rather than explaining what each status means (e.g. 'enriching' is in-flight and will change on re-query).

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 ('Leads found by AI lead discovery for a campaign') with the added scope qualifier 'filterable by status'. It implicitly separates this from list_campaign_email_leads and crm_list_leads, but never names a sibling or explicitly contrasts with get_campaign_discovery, which sits in the same feature area.

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 use case is inferable from the name and the enumerated status filter, but there is no explicit when-to-use guidance, no mention of when to prefer get_campaign_discovery or list_campaign_email_leads, and no stated prerequisite beyond the schema note that id comes from list_campaigns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_email_leadsEngaged email leadsAInspect

Recipients with their open/click/reply counts, read live from the sending provider (throttled: once per 15 s per campaign). Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
filterNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does a good job: it discloses read-only safety, that data is read live from the sending provider, and that reads are throttled to once per 15 seconds per campaign. It stops short of describing failure modes or permission requirements, which keeps it from 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?

A single compact sentence that front-loads the returned data and then adds the operational constraints. Every clause earns its place, with no filler.

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 2-parameter, no-output-schema read tool, it covers the important operational context (read-only, live source, throttle) but omits what the filter parameter actually does and gives no guidance about when to choose this over sibling list/stat tools. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (the filter enum is undocumented), so the description should compensate but largely does not. It implicitly maps to the filter values by listing open/click/reply counts, but it never explains what filter does, what the default is, or how 'all' differs.

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 the exact resource (recipients) and the data returned (open/click/reply counts), so the agent knows this is an engagement-level lead list. It does not explicitly differentiate itself from nearby siblings such as get_campaign_email_stats or list_campaign_emails, but the 'recipients with counts' framing is reasonably distinct.

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 or when-not-to-use guidance and names no alternatives. An agent must infer from the name and sibling list whether this is the right tool for per-lead engagement versus aggregate stats or plain email listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_emailsList sent / queued / prepared emailsAInspect

state=sent: emails already sent (filter by status, search by address); state=queued: scheduled/queued emails waiting to go out; state=prepared: pre-generated emails pipeline with status counts and preparation progress. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
stateYes
offsetNoRows to skip (default 0)
searchNoSearch by email address (sent/queued)
statusNosent: sent|delivered|opened|clicked|replied|bounced; prepared: pipeline status e.g. ready_to_send, scheduled

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden; it does step up by stating 'Read-only', which is the most important behavioral fact for a listing tool. It still omits pagination semantics, the 200-row cap, default page size, and whether the prepared state is expensive or asynchronous — gaps that matter for an unannotated 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?

Three parallel state clauses plus a trailing 'Read-only' safety note — front-loaded, no filler, and scannable. Minor inefficiency: semicolons chain three separate definitions into a single dense sentence, which slightly reduces readability over a bulleted structure.

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 6-parameter listing tool with no output schema and no annotations, the description covers the core decision (which state, which filters) plus read-only safety, which is enough to call it correctly. It could be stronger by noting that prepared returns aggregate counts/progress rather than email rows, but overall nothing blocking is missing.

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 83% and already documents id, limit, offset, and status well. The description adds meaning the schema does not: which optional params are meaningful per state (status filtering and address search apply to sent/queued, status maps to pipeline values for prepared). That state-to-parameter mapping is genuine added value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource (list campaign emails) and disambiguates the three modes via state=sent/queued/prepared with a one-line gloss each. It does not explicitly distinguish itself from near-neighbour siblings like get_campaign_email, list_campaign_email_leads, or preview_campaign_email, which leaves some ambiguity in a crowded email-related tool family.

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?

By defining what each state returns, the description implicitly tells the agent which state to pick for a given question. However, it never says when to prefer a sibling (e.g. get_campaign_email for a single email, list_campaign_email_leads for lead-level data), so the agent must infer routing from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_linkedin_accountsLinkedIn accounts working a campaignBInspect

Accounts working this campaign with per-account counters (pending, invites sent, connected, messaged, replied). Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry behavioral disclosure. It usefully declares 'Read-only' and lists the counter fields returned, but says nothing about pagination, ordering, or whether inactive/disconnected accounts are included.

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 no waste, and the payoff (per-account counters) is front-loaded. Minor loss because the parenthetical list is dense but still readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description covers purpose, return contents (counters), and safety (read-only). Only query behavior such as pagination or scope exclusions is unstated.

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 id parameter is documented in the schema as a campaign UUID from list_campaigns. The description adds no syntax or format detail beyond that, 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 ('Accounts working this campaign') and even enumerates the per-account counters returned, so the agent knows exactly what it gets. It does not explicitly distinguish itself from sibling list_linkedin_accounts or get_campaign_linkedin_stats, which keeps it from 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?

There is no when-to-use, when-not-to-use, or named alternative. With many sibling tools (list_linkedin_accounts, get_campaign_linkedin_stats, list_campaign_linkedin_outreach), the description leaves selection to inference 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.

list_campaign_linkedin_outreachLinkedIn outreach of a campaignAInspect

Contacts in the campaign's LinkedIn queue with their status (pending, invite_sent, connected, message_sent, replied, failed, skipped), optionally for one account. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
offsetNoRows to skip (default 0)
statusNo
account_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add the key trait: "Read-only" plus the full set of possible lifecycle statuses, so the agent knows the rows are stateful queue entries. It omits pagination/ordering behavior and any notes on how failed or skipped rows are handled, leaving real gaps for a zero-annotation 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?

Two short sentences with the resource and its status set front-loaded, followed by the optional filter and safety note. No filler, though the status list is long and largely duplicates the schema enum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Usage context is otherwise plain: five flat parameters, no output schema, no annotations. Given that structure, the description covers what the rows are, the possible states, the one meaningful filter, and the read-only nature, which is everything an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%: id and limit/offset are documented in the schema, but status and account_id are bare. The description compensates partially by enumerating the status values and explaining that account_id narrows to a single account, though it does not say that status acts as a server-side filter.

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 the specific resource (contacts in the campaign's LinkedIn queue) and what is returned (each contact with its status), which clearly distinguishes it from list_campaign_linkedin_accounts and get_campaign_linkedin_stats. The verb is implied by the leading noun phrase rather than stated, and no sibling is named as a contrast, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Read-only" tells the agent this is a safe inspection call, and "optionally for one account" conveys the account_id filter case. However, there is no explicit statement of when to prefer this over list_campaign_replies or get_campaign_linkedin_stats, and no prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_phone_callsCalls of a campaignCInspect

Calls with contact, status, outcome, duration, sentiment, summary and recording URL. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
offsetNoRows to skip (default 0)
statusNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden; it does disclose 'Read-only' (a useful safety signal) and enumerates the returned fields (contact, status, outcome, duration, sentiment, summary, recording URL), which compensates somewhat for the absence of an output schema. However it omits pagination behavior, defaults, and any permission/scope caveats.

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 essentially no waste, each contributing useful content (return fields, read-only). It could front-load the action better, but size is appropriate for the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The field enumeration is helpful given there is no output schema, but with 4 params, no annotations, and a close sibling, the definition leaves gaps: no differentiation from list_phone_calls and no usage context. Adequate but incomplete.

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 75%: id, limit, and offset are already documented in the schema, and status is an enum. The description does not clarify the status filter or add syntax/format meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun fragment ('Calls with contact, status...') rather than a verb+resource statement; it never says it *lists* phone calls scoped to a campaign. The name/title carry the actual purpose, and the description does not distinguish it from the sibling list_phone_calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusion criteria, and no mention of the obvious alternative list_phone_calls (general vs campaign-scoped) or how this relates to get_campaign_phone_stats. The agent must infer scope 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.

list_campaign_repliesCampaign replies inboxAInspect

Email replies received by a campaign with body and classification: real (a person answered), auto_reply (out of office), bounce. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
typeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the operation is read-only and explains the reply classifications, but it does not mention pagination, permissions, or any limits on the result set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tightly written sentence, front-loading the resource and including only classification clarifications that earn their place.

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?

It covers the core purpose, read-only nature, and classification semantics, which is adequate for a simple two-parameter list tool. It still omits pagination behavior, result limits, and explicit sibling routing, leaving some gaps for an agent to 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 coverage is 50%: the id parameter is described in the schema, while the type enum lacks a schema description. The description compensates by defining real, auto_reply, and bounce, which helps interpret the classification values, but it does not clarify whether type is used as a filter or how id relates to list_campaigns.

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 resource (email replies received by a campaign) and indicates the returned content (body and classification). It is clear what the tool lists, though it does not explicitly contrast with nearby siblings like list_campaign_emails or get_campaign_email.

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 purpose implies when to use it — inspecting replies received by a campaign — and 'Read-only' signals safe usage. However, there is no explicit guidance on when to choose this over alternatives such as list_campaign_emails or get_campaign_thread.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsList campaignsAInspect

List classic Sales Process campaigns with status and live stats. Archived campaigns are hidden unless include_archived=true. Read-only.

NameRequiredDescriptionDefault
include_archivedNoAlso return archived campaigns

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the read-only nature and the default archive-exclusion behavior. It does not mention pagination, ordering, result size limits, or authentication needs, which a list tool with zero annotation coverage should ideally address.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler; the resource scope, filter default, and safety profile are all front-loaded. Every sentence carries distinct 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 one-parameter, zero-required list tool with no output schema, the description covers scope, default filtering, and read-only status, and hints at returned fields ('status and live stats'). Pagination/ordering details are the only meaningful gap.

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 the baseline would be 3; the description adds real value by stating the default behavior (archived excluded) that the schema-only text ('Also return archived campaigns') doesn't spell out. Only one parameter, fully explained.

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 ... campaigns') plus a scoping qualifier ('classic Sales Process') and what the output includes (status and live stats). It implicitly separates itself from single-campaign siblings like get_campaign, but never names an alternative 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?

It clarifies the default filter behavior (archived hidden unless include_archived=true), which is useful context for invocation. However there is no explicit guidance on when to pick this over get_campaign, get_campaign_analytics, or other campaign-listing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaign_threadsAI email conversations of a campaignAInspect

Conversations the AI is handling for a campaign (filter by status ai_handling|human_takeover|closed and sentiment positive|objection|referral|unsubscribe|neutral), plus counters by status and sentiment. Only threads of the API key's user. Read-only.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoPage size (default 50)
offsetNoRows to skip (default 0)
statusNo
sentimentNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose key traits: 'Read-only' declares the safety profile, 'Only threads of the API key's user' declares the auth/scope boundary, and 'plus counters by status and sentiment' hints at the return shape. It stops short of pagination behavior or return-format details, keeping it from 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 dense sentences with the resource and filters front-loaded and the scope/read-only constraints appended. Efficient with little waste, though slightly packed with enum lists.

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 5-param filtered-list tool with no output schema and no annotations, the description covers purpose, filters, counters, scope, and read-only status well. Pagination semantics are the only notable gap, handled by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%. The description reiterates the status and sentiment filter values (which the schema already enumerates) but does not mention limit/offset or add syntax beyond the enums, so it adds only marginal value over the schema. Baseline 3 fits.

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 resource (conversations/threads the AI is handling for a campaign) and includes scope and counters. It is clearly distinguishable from get_campaign_thread (singular single-thread fetch), though it doesn't explicitly name sibling alternatives.

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 through the filter options (status/sentiment) and scope ('Only threads of the API key's user'), but never states when to use this versus get_campaign_thread or list_campaign_replies, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_client_mailboxesOwn sending mailboxesAInspect

The workspace's own connected mailboxes (status connecting|warming|ready|error|disconnected, warm-up reputation, last error). Capacity ≈ 50 emails/day per READY box. Used when settings.emailSenderMode=client_owned (classic campaigns and SDR). Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden and does reasonably well: it declares the operation is read-only, enumerates the status states, and discloses the operational constraint of ~50 emails/day per READY box plus last-error and warm-up reputation visibility. Missing auth/permission notes and whether results are paginated or scoped to a sub-account.

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-loaded with what is returned, then capacity constraint, then usage condition — each clause adds information with no padding. Dense parenthetical style is slightly terse but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must convey return content, which it does by naming the status enum, warm-up reputation, and last error. A note on ordering, pagination, or empty-state behavior would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries nothing to explain; baseline is 4. The description correctly implies a workspace-scoped, unfiltered listing rather than misrepresenting any 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 resource (the workspace's own connected mailboxes) and enriches it with the status values and per-box fields the agent will see, so it is more than a restatement of the name. It does not explicitly contrast with the close sibling list_sender_emails, leaving a small ambiguity about which mailbox listing to call.

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 concrete activation context: used when settings.emailSenderMode=client_owned for classic campaigns and SDR, which tells the agent when this listing is relevant. It stops short of naming alternatives (list_sender_emails, connect_client_mailbox) or stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connection_conversationsList conversations of a channelBInspect

Conversations of a widget/presentation channel with messages, mode (chat/voice), visitor name/email/phone and page. Paged (limit ≤500). Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
pageNo
limitNo
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the operation is read-only and that results are paged with limit ≤500. It does not mention default page size, ordering, authentication requirements, or what 'messages' includes beyond the field list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no wasted words, and the core purpose is front-loaded. The only minor issue is that 'page' is used in two potentially different senses, which slightly muddies an otherwise efficient structure.

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 no output schema and no annotations, the description covers the key return fields, read-only status, and pagination cap. It omits ordering, default page size, and explicit differentiation from similar conversation-listing tools, so it is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, so the description needs to compensate. It mentions 'Paged (limit ≤500)', which clarifies the limit parameter's cap, and 'widget/presentation channel' loosely contextualizes connection_id. However, the page parameter is not explained beyond 'Paged,' and 'page' in the field list appears to mean a visitor page rather than the pagination parameter, leaving ambiguity.

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 ('Conversations of...') and resource scope (widget/presentation channel) and lists the returned fields, making the tool's purpose clear. It does not explicitly distinguish itself from sibling list tools such as list_linkedin_conversations or list_phone_calls, 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?

There is no explicit when-to-use, when-not-to-use, or alternative guidance. 'Read-only' is a behavioral property, not a usage instruction. An agent must infer usage from the tool name and channel scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_content_accountsSocial publishing accountsAInspect

LinkedIn / Instagram accounts connected for publishing posts (Settings → Social), with status. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden; it does disclose the read-only nature and that each account comes with status, which is genuinely useful. It says nothing about what statuses exist, whether disconnected accounts appear, empty-state behavior, or auth/permission requirements for reading publishing accounts.

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 compact sentence that front-loads what is returned (LinkedIn/Instagram accounts) and closes with the safety trait. Nothing is wasted and nothing needs reordering.

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-parameter, read-only list tool with no output schema, the description covers the essentials: what the collection is, which platforms, that status is included, and that it is safe. The remaining gap is enumerating what the status values mean and whether unconnected accounts are included.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is no argument semantics that need explaining. The description correctly implies an unfiltered list of all connected publishing accounts.

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?

Names a specific verb (list) plus resource and disambiguates the otherwise opaque term 'content accounts' as LinkedIn/Instagram accounts connected for publishing, with the Settings → Social location. It does not, however, explicitly differentiate itself from nearby siblings like list_linkedin_accounts or list_whatsapp_accounts, leaving the agent to infer the boundary.

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 read-only tag implies this is the safe inspection call before connect_content_account/disconnect_content_account, but that is left implicit. There is no statement about when to prefer this over list_linkedin_accounts, crm_list_linkedin_accounts, or list_whatsapp_accounts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_crm_integrationsList CRM integrationsAInspect

External CRM connections of the workspace (Kommo, HubSpot): status, account, sync settings and counters. Tokens are never returned. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the safety profile — and it does, stating 'Read-only' explicitly and adding the valuable disclosure that 'Tokens are never returned', which prevents agents from expecting secrets. It stops short of saying whether the list is workspace-scoped to the caller's permissions or what happens when no integrations exist.

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 dense sentence plus two short clauses; the resource and returned fields are front-loaded and nothing is redundant. Every phrase (including the token exclusion) contributes 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?

With no output schema, the description usefully sketches the return shape (status, account, sync settings, counters), which is what an agent needs to decide to call it. Minor gap: no mention of provider coverage limits beyond the two named examples, so it's unclear whether other CRMs could appear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 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?

Names the resource precisely ('External CRM connections of the workspace') and enumerates the returned fields (status, account, sync settings, counters). It distinguishes itself implicitly from connect/disconnect/get_crm_integration by being the plural enumerator, though it never names those siblings 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 implied by the plural listing framing, and 'Read-only' signals this is a safe inspection call. But with a sibling get_crm_integration in the toolset, the description gives no guidance on when to list all vs. fetch a single integration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_audiencesList My Audiences (custom lists)AInspect

List the workspace's custom audiences — uploaded CSV/XLSX lists, purchased audience sets, CRM selections — with status (processing|ready|enriching|error), contact counts and enrichment progress. These are different from campaign audiences (list_audiences). Read-only, free.

NameRequiredDescriptionDefault
pageNo
limitNoOmit to get all

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the safety profile explicitly ('Read-only, free') plus the returned dimensions: status with its enum values (processing|ready|enriching|error), contact counts, enrichment progress. It stops short of stating pagination/truncation behavior or ordering, which matters for a list endpoint that can return everything.

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 dense sentences: the resource definition and its subtypes come first, then the returned fields, then the sibling differentiation, then the read-only/free note. No filler, and the most decision-relevant clause (which sibling) is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully substitutes by naming the fields returned and the status vocabulary. The remaining gap is pagination semantics for a zero-required-parameter list call — an agent doesn't know what happens with `page` alone or whether an unpaginated result is safe to consume.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% — `limit` is documented in the schema ('Omit to get all') but `page` is undocumented everywhere. The description supplies no parameter guidance at all: no default page size, no note that omitting `limit` returns all records (a cost/volume concern for a 'free' call), and no interaction between `page` and `limit`.

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 (list) and a precisely scoped resource (the workspace's custom audiences), then enumerates what counts as one: uploaded CSV/XLSX lists, purchased audience sets, CRM selections. It explicitly distinguishes itself from campaign audiences via `list_audiences`, so the agent can separate it from that sibling without opening a 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?

Gives a clear routing rule against `list_audiences` and notes the operation is read-only and free, which is a genuine use-case cue. It does not address the other nearby alternatives an agent might pick instead (`get_custom_audience`, `search_audience`, `list_audience_sets`) or say when a single-record fetch is preferable to listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_google_meet_historyMeeting history of an agentBInspect

All meetings of this agent (newest first) with status, times, duration, whether a transcript exists. Paged. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
pageNo
limitNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does supply useful traits: explicit read-only status, newest-first ordering, pagination, and the returned field set. It omits auth/prerequisite context and what 'paged' concretely implies (default page size, whether a total count is returned, how to exhaust history).

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 terse sentences and a fragment, zero waste, with the ordering and returned fields front-loaded. Nothing could be removed without losing information.

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?

A 3-parameter list tool with no output schema and no annotations; the description covers what is returned but leaves pagination mechanics (defaults, limits up to 200, how to page through all history) undocumented. Adequate as a minimum, but not complete for calling it fully correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% — the 'id' parameter is documented in the schema, but 'page' and 'limit' are undescribed there, and the description says nothing about any parameter. Since coverage is below 50%, the description was expected to compensate for page/limit semantics and it does not.

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 concrete resource and scope — 'All meetings of this agent', newest-first, with the fields returned (status, times, duration, transcript presence). The agent can tell this is a per-agent meeting listing. However, it never names or distinguishes itself from close siblings like list_google_meet_meetings or list_meetings, so the disambiguation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no alternatives named despite a dense sibling set that includes list_google_meet_meetings, list_meetings, and get_meeting. 'Paged. Read-only.' describes behavior, not selection criteria. The agent must guess whether this or list_google_meet_meetings is the right entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_google_meet_meetingsList Google Meet meetings booked by this agentBInspect

Read-only list of meetings the agent has scheduled. Requires Google Meet connected first.

NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden. It usefully discloses the read-only (non-mutating) nature and the Google Meet connection prerequisite, but says nothing about pagination, filtering, rate limits, or the shape of the returned meetings.

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 compact sentences that front-load the read-only nature before the prerequisite, with no wasted wording. Size is appropriate for a simple list tool.

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 simple list tool this is nearly adequate, but with no annotations, no output schema, and an entirely undocumented required 'id' parameter, the description leaves an agent without what it needs to call the tool correctly.

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?

There is one required parameter 'id' with 0% schema description coverage, and the description never explains what it is (agent id? workspace id?) or how it scopes the result. The description does not compensate for the schema gap, leaving the required parameter undocumented everywhere.

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 and resource ('Read-only list of meetings the agent has scheduled'), and the title adds that these are Google Meet meetings booked by this agent. It is easily distinguishable from the connect/disconnect Google Meet siblings, though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (to view meetings this agent booked) and states a precondition ('Requires Google Meet connected first'), but gives no explicit when-not guidance or alternatives to compare against. Usage is largely left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_kommo_pipelinesList Kommo pipelinesAInspect

Pipelines and their statuses (stages) in the connected Kommo account — values for pipeline_config. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that the operation is read-only and scoped to the 'connected' Kommo account (implying an active integration prerequisite), which is useful. It says nothing about return shape, ordering, pagination, or what happens if no integration is connected.

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 compact sentence that front-loads the resource and trailing with the read-only flag. Slightly fragmentary (no explicit verb) but every clause conveys information.

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 zero-parameter, no-output-schema, no-annotation tool, the description should at least convey the return content and any prerequisite. It does convey that it returns pipelines with stages and that an active Kommo connection is assumed, but leaves the shape of the response and edge cases (unconnected account) unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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 the resource (pipelines and their statuses/stages in the connected Kommo account) and its role as values for pipeline_config. Distinguishable from sibling list_kommo_users, which lists users rather than pipeline structure. The verb 'list' is implied rather than stated, but the subject matter 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'values for pipeline_config' hints at when it's needed (populating pipeline configuration), but there is no explicit when-to-use, no when-not, and no named alternative. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_kommo_usersList Kommo usersAInspect

Users of the connected Kommo account — values for pipeline_config.responsible_user_id. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully declares the operation is 'Read-only' and scopes results to the connected Kommo account, but does not mention authorization prerequisites, pagination, or what the returned user records contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence fragment with no wasted words. Every phrase adds actionable context: resource, purpose, and read-only safety.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero-parameter schema and no output schema, the description provides enough to invoke the tool correctly: it lists Kommo users and indicates they supply responsible_user_id values. It could be stronger by sketching the return fields, but the core completeness is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter semantics are inherently simple. The description adds useful context by explaining that returned values are intended for pipeline_config.responsible_user_id, but no parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (users of the connected Kommo account) and ties it to a concrete use (values for pipeline_config.responsible_user_id). This distinguishes it from sibling list_kommo_pipelines, which handles pipelines rather than users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly implies when to use the tool: to obtain user IDs for responsible_user_id assignment. It does not explicitly name alternatives or when-not conditions, but the context is sufficiently clear for a zero-parameter list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_linkedin_accountsList connected LinkedIn accountsAInspect

LinkedIn accounts of the workspace and their status (ok = can send; ~70–80 invites/day each). Returns { role, accounts } (role is filled only with detailed=true). detailed=true adds owner/role, campaigns and SDR searches using each account, 7-day activity, prospecting caps, warm-up stage, premium tier and proxy country. Read-only.

NameRequiredDescriptionDefault
detailedNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does well: it explicitly says “Read-only,” explains that “ok” means the account can send, and gives a concrete sending capacity of ~70–80 invites/day per account. It does not cover authentication requirements or error behavior, but the core behavioral profile is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the resource and status meaning, then efficiently enumerates the detailed-mode additions in one sentence. The final “Read-only” sentence is short and earns its place by stating a critical behavioral trait.

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, but the description explains the returned { role, accounts } shape and the additional fields when detailed=true. It also discloses read-only behavior. Minor gaps like default value of detailed and sibling-tool selection remain, but an agent has enough context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the sole optional boolean parameter. It does so thoroughly: detailed=true adds owner/role, campaigns and SDR searches using each account, 7-day activity, prospecting caps, warm-up stage, premium tier, and proxy country, and role is filled only with detailed=true.

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: listing LinkedIn accounts of the workspace and their status. It is clear what the tool does, but it does not explicitly differentiate itself from siblings such as crm_list_linkedin_accounts or list_campaign_linkedin_accounts.

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 explains what the detailed flag returns, but it gives no explicit guidance on when to use this tool versus alternatives like crm_list_linkedin_accounts, list_campaign_linkedin_accounts, or get_linkedin_account_settings. Usage is only implied by the resource name and status semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_linkedin_conversationsLinkedIn conversationsBInspect

LinkedIn chats of the workspace (optionally of one campaign and/or account): contact, last message, pending AI reply, human takeover flag, outreach status. Read-only.

NameRequiredDescriptionDefault
limitNo
offsetNo
account_idNo
campaign_idNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden; it does disclose 'Read-only' and the shape of each row, which is genuinely useful. However, it says nothing about pagination behavior despite having limit/offset, default ordering, volume of results, or permission constraints, which leaves a real gap 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 front-loaded sentence containing scope, optional filters, return fields, and the read-only property — very efficient. The field enumeration is slightly dense but each item aids selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema coverage on four parameters, the description should cover pagination defaults, result ordering, and how it differs from get_linkedin_conversation. It covers the 'what' but not the operational details needed to call it correctly.

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 0%, so the description must define all four parameters. It explains the campaign and account filters contextually but says nothing about limit or offset, leaving half the parameters undocumented anywhere.

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?

Names a specific verb and resource ('LinkedIn chats of the workspace') and enumerates the returned fields (contact, last message, AI reply, takeover flag, outreach status), so an agent knows exactly what it gets. It does not explicitly distinguish itself from the sibling get_linkedin_conversation or list_campaign_linkedin_outreach, leaving that distinction implicit in the 'list' vs 'get' naming.

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 '(optionally of one campaign and/or account)' implies the filtering use cases, but there is no explicit when-to-use guidance, no statement of when to prefer get_linkedin_conversation for a single thread, and no mention of prerequisites or ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_meeting_agentsAgents with Google MeetAInspect

Agents that have Google Meet connected (the calendar's agent filter). Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden; it does at least declare "Read-only", which is the single most important trait for a list tool. However, it says nothing about result size, ordering, pagination, or whether agents without Meet are omitted, and there is no output schema to fall back on.

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 that front-loads the subject (agents with Meet) before the scoping clarification. Nothing is wasted, though the phrasing is slightly terse to the point of being cryptic in the parenthetical.

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 zero-parameter list tool this is close to adequate, but with no annotations and no output schema the agent gets no sense of what an agent record contains or how results are shaped. One added clause about the returned fields would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4 and there is nothing for the description to compensate for. No param documentation is expected or missing.

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 resource and filter: agents that have Google Meet connected, and clarifies the parenthetical that this is the calendar's agent filter. An agent can distinguish it from list_agents or crm_list_workspace_agents by the Meet-connection filter, though no sibling is named explicitly. The listing verb is implied rather than stated ("Agents that have...").

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 "the calendar's agent filter" implies the usage context (populating a calendar agent picker), which is useful but indirect. There is no explicit statement of when to use this versus list_agents, list_agents_with_stats, or crm_list_workspace_agents, and no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_meetingsMeetings calendar (all agents)AInspect

Google Meet meetings of all your agents in a date range (default: next 7 days, max 62 days) — title, time, link, organizer, attendees, status, agent, has transcript. Read-only.

NameRequiredDescriptionDefault
endNoISO date/time
startNoISO date/time
agent_idNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It usefully declares that the operation is read-only and specifies the default and maximum date ranges, but it omits whether a Google Meet connection is required, whether results are paginated, and what happens if the range exceeds 62 days.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the key scope and constraints front-loaded. The parenthetical range details and the dash-separated return-field list are efficient and contain no filler.

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 simple read-only list tool, it covers the core scope, date constraints, and returned fields in the absence of an output schema. It still leaves the agent_id parameter unexplained and does not state whether a Google Meet integration must be connected, which are meaningful gaps given there are no annotations.

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%: start and end are described as ISO date/time, while agent_id is undocumented. The description adds meaningful range defaults and limits beyond the schema, but it does not explain that agent_id filters to a specific agent, and “all your agents” may even obscure that optional filtering behavior.

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 gives a specific verb and resource (lists Google Meet meetings) with scope (all agents), date-range behavior, and returned fields. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings like list_google_meet_meetings or list_google_meet_history.

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?

It states the default range (next 7 days) and the maximum range (62 days), which gives useful usage context. However, it does not say when to choose this tool over list_google_meet_meetings, list_google_meet_history, or get_meeting, nor does it describe prerequisites such as needing Google Meet connected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_narrator_leadsList presentation leadsBInspect

Leads from the presentation call-to-action form (form data, page, status, notes). Filter by status, page with limit/offset. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
limitNo
offsetNo
statusNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load; it does disclose "Read-only" and lists the fields returned (form data, page, status, notes), which is genuine value. It omits anything about permissions, default page size, or ordering, so coverage is partial for a no-annotation 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?

Two short, front-loaded sentences with the resource described before the filtering mechanics. No wasted words, though the parenthetical field list competes for space with the missing id semantics.

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?

Read-only with no output schema keeps the bar low, and stating returned fields is a reasonable substitute. Still, the unexplained required id and absent default/maximum paging behavior leave an agent without enough to call it confidently on first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description must compensate, and it partially does by explaining status filtering and limit/offset paging. Critically, the required `id` parameter (agent UUID, sourced from list_agents) is never explained, so the reader cannot tell that results are scoped per agent, and enum values and defaults remain undocumented.

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 concrete resource (leads from the presentation call-to-action form) and a specific verb (list), with useful context on what each lead carries. It does not, however, distinguish this from sibling lead-listing tools such as crm_list_leads or list_campaign_discovered_leads, so an agent must infer the scope 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?

"Filter by status, page with limit/offset" gives implied operating guidance for narrowing and paginating results. There is no explicit when-to-use or when-not-to-use statement, and no pointer to the delete/update narrator-lead siblings or to other lead lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_phone_callsList the agent's phone callsAInspect

Phone calls of this agent (incl. test and inbound) with transcript, recording URL, summary, outcome, sentiment, duration and credits, plus totals by outcome/sentiment. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
limitNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden; it does disclose the read-only nature and that test and inbound calls are included, plus aggregate totals. It omits ordering, pagination behavior, and whether the totals are affected by the limit parameter, which matter for a listing tool returning up to 500 records.

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 scope and payload, with the read-only guarantee trailing. The field enumeration is dense but every item is informative for a data-listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the right thing by previewing the returned fields and totals. However, for a tool with a required agent id and a limit up to 500, it leaves pagination, sort order, and the interaction between limit and totals unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'id' is documented in the schema, but 'limit' has no description anywhere. The description reinforces the agent scope but says nothing about limit (default value, max 500, or whether totals ignore it), so it fails to compensate for the documentation gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Phone calls of this agent') and scopes it to a single agent, which distinguishes it from the sibling list_campaign_phone_calls. It also enumerates the returned fields, so an agent knows exactly what data this tool surfaces.

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 the scope ('of this agent'), but the description never states when to reach for this versus list_campaign_phone_calls or the analytics tools (get_phone_channel_stats, get_campaign_phone_stats). No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_phone_numbersList my phone numbersAInspect

Phone numbers already on your account (number, country, type, monthly cost, per-minute rate). Buying numbers is done in the app. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the safety profile and states 'Read-only.' It also discloses the returned fields, which helps the agent understand the result. It does not mention pagination, ordering, rate limits, or auth requirements, but for a zero-parameter account listing this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and every sentence earns its place. It states the resource, the returned fields, the purchasing boundary, and the read-only nature without unnecessary prose.

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-parameter read-only list with no output schema, the description is nearly complete: it names the tool's scope, return fields, and safety profile. Missing pagination or output-shape details are minor for this simple listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so parameter semantics are not applicable and the baseline is 4. The description adds meaning about the returned data fields rather than input parameters, which is appropriate here.

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: lists phone numbers already on the account. It also enumerates the fields returned and clarifies that buying numbers happens elsewhere, so it is clearly a read-only listing tool rather than a purchase or management tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use clear: retrieving existing account phone numbers. It explicitly excludes buying numbers by saying that is done in the app, though it does not name a specific sibling alternative for purchasing or other phone-related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_referred_usersList referred usersAInspect

People who signed up through the caller's referral links (masked email, link, signup date, free/paying, revenue and commission). Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the key safety fact ('Read-only') plus the returned field set including masked email, which signals PII is partially redacted. It says nothing about pagination, result caps, sorting, or the time window covered, which matters for a list endpoint.

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 compact sentence with the actor and scope front-loaded and the field list in a parenthetical; nothing is redundant and the read-only flag sits at the end where it reads as a qualifier.

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-parameter list tool with no output schema, enumerating the returned fields is exactly the right compensation, and the read-only note covers safety. The remaining gap is operational: no hint about volume, ordering, or truncation behavior for what could be a large referral population.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The parenthetical enumerates outputs rather than inputs, which is useful but not a parameter concern.

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 resource — people who signed up through the caller's referral links — and enumerates the data returned (masked email, link, signup date, free/paying, revenue, commission). An agent can distinguish it from create_referral_link / update_referral_link by the read/list framing, though it never explicitly names the nearest sibling get_referral_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'list of people attributed to my referral links' framing implies when to reach for it, but there is no explicit statement of when to use it versus get_referral_overview or get_referral_share_card, and no prerequisites or exclusions. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_retell_voicesList available Retell voicesAInspect

Catalogue of voices that can be assigned via set_agent_voice. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and 'Read-only' is a useful explicit safety disclosure. However, it says nothing about the shape of the returned catalogue (IDs, names, languages) or whether the list is paginated, which is the main remaining behavioral gap.

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 no waste, front-loading the resource and the read-only trait. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument, no-output-schema listing tool the description is nearly sufficient: it names the resource, the consumer sibling, and the read-only nature. A brief note on what the catalogue entries contain would close the last gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate. No schema-level parameter detail is needed.

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 resource (catalogue of voices) and connects it to the sibling set_agent_voice, so an agent can tell it apart from the many list_* tools. It lacks any detail about what a voice entry contains, but the core 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'that can be assigned via set_agent_voice' explicitly routes the agent to the sibling that consumes this output, establishing a clear when-to-use context. It stops short of stating exclusions or prerequisites, so it is not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sender_emailsEmail senders + capacityAInspect

Sending addresses available to this workspace (Vendo managed pool + own mailboxes) with warm-up level, daily limit and status; summary.emails_per_day_ready = capacity in managed mode. Managed senders require a paid plan to launch (summary.paid_plan). Use ids in settings.senderEmailIds. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden and does so reasonably well: it explicitly marks the operation as read-only, explains the paid-plan prerequisite for launching managed senders, and clarifies the managed-mode capacity meaning. It does not cover authentication details, rate limits, or full response shape, but it discloses the key behavioral constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dense and front-loaded: it names the resource, summarizes returned fields, explains key summary values, states the paid-plan requirement, specifies id usage, and marks read-only status without filler. Every clause carries practical 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?

Given the tool has no parameters, no output schema, and no annotations, the description supplies substantial context: returned fields, summary keys, capacity interpretation, paid-plan gating, and intended use of ids. It is not fully exhaustive about the return structure, but it is complete enough for an agent to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter semantics are not applicable and the baseline is 4. The description appropriately focuses on output fields and usage context rather than inventing parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource and scope: sending addresses available to this workspace, including managed pool and own mailboxes, with specific fields such as warm-up level, daily limit, and status. It is specific enough for an agent to understand what the tool returns, though it does not explicitly differentiate itself from related siblings like get_sdr_email_capacity or list_client_mailboxes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: managed senders require a paid plan to launch, and returned ids should be used in settings.senderEmailIds. However, it does not state when to prefer this tool over related capacity or mailbox-listing tools, so the guidance is contextual but not alternative-aware.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_telegram_chatsList Telegram chatsBInspect

People/groups talking to the agent's Telegram bot: name, username, type, message count, last message time. Paged. Read-only.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
pageNo
limitNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose that the operation is read-only and paged, which is genuinely useful. It stops short of describing pagination behavior (defaults, limits, termination) or what happens if the bot is not connected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense fragments, front-loaded with what the tool returns, then pagination, then safety. Nothing is wasted and no sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the field enumeration (name, username, type, message count, last message time) effectively substitutes for a return-value description, and 'Read-only' substitutes for safety annotations. The gap is the absence of sibling routing and page/limit semantics.

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?

Only the id parameter is documented in the schema (33% coverage); page and limit have no descriptions anywhere. The single word 'Paged' is the only hint that these two parameters exist and how they behave, which does not compensate for the coverage gap.

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 Telegram chats) and enumerates the returned fields, so the agent knows exactly what it gets back. It does not differentiate from close siblings like get_telegram_chat or get_telegram_analytics, leaving that inference to the agent.

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 guess this is the way to enumerate bot conversations, but the description never says when to use it versus get_telegram_chat (single chat) or get_telegram_analytics, nor does it state prerequisites such as needing a connected Telegram bot.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_voice_catalogList voices (Voice v2 catalogue)AInspect

All voices for the website widget, Slide Presenter and Telegram voice: engine, gender, accent, expressive support, Ukrainian support, recommended flag, preview audio. Read-only. Use a voice_id from here in set_agent_voice / set_presentation_voice / set_telegram_voice_settings.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still declares 'Read-only' and enumerates the returned attributes (engine, gender, accent, expressive/Ukrainian support, recommended flag, preview audio), giving a solid picture of what calling it yields. No auth requirements or rate limits are mentioned, but for a zero-param catalogue read those are minor.

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 compact sentences, front-loaded with the resource and channel scope, followed by the cross-reference to the tools that consume voice_id. The field enumeration is dense but justified since no output schema exists.

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?

Absent an output schema, the description compensates by listing the returned fields and the safety profile, which is enough for an agent to call a parameterless read tool correctly. The one gap is the lack of differentiation from the sibling retell-voices listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline of 4 applies; the description does not need to explain any inputs and correctly devotes its space to outputs instead.

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?

Opens with a specific verb+resource and names the three consuming channels (website widget, Slide Presenter, Telegram), then enumerates the fields returned. Clear what it does, though it never distinguishes itself from the sibling list_retell_voices, which is the only other voice-listing tool in the catalog.

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 downstream usage: 'Use a voice_id from here in set_agent_voice / set_presentation_voice / set_telegram_voice_settings', which tells the agent exactly why to call it. Missing the negative case — no statement on when to prefer list_retell_voices instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_whatsapp_accountsList WhatsApp accountsAInspect

WhatsApp accounts connected to your user (phone, name, status: connecting / ok / error / credentials / stopped). Account-level: auto-replies use your latest campaign's agent. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that the operation is read-only and enumerates the possible status values, but it does not mention auth requirements, pagination, ordering, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core purpose. The parenthetical status list is informative, though the trailing note about auto-replies using the latest campaign's agent is slightly tangential and not fully developed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless list tool with no output schema, the description covers the main points: scope, returned fields, status values, and read-only behavior. It could be richer about the exact response shape, but it is largely complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics for the description to clarify. The baseline for a parameterless tool 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 gives a specific verb and resource: it lists WhatsApp accounts connected to the current user, and names the key returned fields (phone, name, status). This is clear enough to distinguish it from connect/disconnect WhatsApp tools and from list_linkedin_accounts, though it does not explicitly name alternatives.

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 'connected to your user' and 'Read-only', but the description does not state when to use this instead of siblings such as connect_whatsapp_account, disconnect_whatsapp_account, or preview_disconnect_whatsapp_account. It is adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_all_app_notifications_readMark all app notifications readAInspect

Mark every in-app notification of the caller as read (clears the badge).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It does disclose the effect ('clears the badge') and the scope ('of the caller'), which is meaningful context, but it omits whether the action is reversible, whether it is idempotent, and what the response contains.

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 the action, scope, and observable effect all front-loaded. Nothing redundant or wasted.

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-parameter, non-destructive status update with no output schema, the description covers what is affected and what visibly changes. Only idempotency and return behavior are left unstated, which is minor at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies nothing needs to be supplied, and the 'of the caller' phrasing clarifies the implicit scoping that replaces a user-id parameter.

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 ('Mark') and resource ('every in-app notification of the caller') with clear bulk scope. That scope word 'every' implicitly separates it from the singular mark_app_notification_read, but the sibling is never named, and the near-duplicate crm_mark_all_notifications_read is not distinguished at all.

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 the bulk alternative to marking one notification. There is no explicit when-to-use guidance, no mention of when to prefer mark_app_notification_read for granular control, and no warning about the closely named CRM variant crm_mark_all_notifications_read.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_app_notification_readMark an app notification readBInspect

Mark one in-app notification as read.

NameRequiredDescriptionDefault
idYesNotification id (UUID)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about idempotency, what happens if the id is unknown or already read, or whether any state besides the read flag changes. For a mutation tool with zero annotation coverage this is a meaningful gap, though the operation is low-risk and largely self-evident.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the verb and containing no filler. Nothing is wasted and the core action is immediately clear.

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 one-parameter, low-complexity tool with full schema coverage and no output schema, the description is minimally sufficient. It omits the post-condition (what the caller gets back, or how to obtain the id), which would have made it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as a notification UUID, so the schema already does the work. The description adds nothing about the id's format or source (e.g. from list_app_notifications), 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?

Specific verb 'mark ... as read' plus resource 'one in-app notification', and 'one' vs 'in-app' implicitly distinguishes it from mark_all_app_notifications_read and the crm_mark_notification_read siblings. It stops short of naming those siblings explicitly, so an agent must infer the boundary.

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 the verb and by the 'one' qualifier (single vs bulk), but there is no explicit when-to-use statement and no reference to the CRM notification tools that also exist in the sibling list. An agent can guess correctly but is given no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_campaignPause a campaign (all channels)AInspect

Pause a running campaign across every channel. Reversible — call launch_campaign to resume.

NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and it does disclose two behavioral traits: the cross-channel blast radius and reversibility. It omits other relevant behavior for a mutation — whether scheduled or in-flight sends are stopped, whether pausing an already-paused campaign errors, and what state the campaign lands in — so it is helpful but incomplete.

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, no filler, with the action and its scope front-loaded and the recovery path second. Every clause earns its place.

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 one-parameter reversible mutation with no output schema and no annotations, the essentials (what it does, that it is reversible, and how to undo it) are covered. It still leaves the agent guessing about failure modes and side effects on in-flight sends, which for a mutation tool is a meaningful 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?

One parameter, 'id', at 0% schema description coverage. The single-param baseline is forgiving and the description gives the object scope (a campaign across channels), letting the agent infer that id is a campaign identifier. It adds no format or validation detail beyond that.

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 (pause) plus resource (campaign) and qualifies scope as 'across every channel,' which implicitly separates it from the sibling pause_channel. An agent can pick between pause_campaign, pause_channel, and archive_campaign without opening 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives the reverse operation explicitly ('call launch_campaign to resume'), which is genuinely useful routing information, but it never states when to prefer this over pause_channel or resume_channel, or what preconditions must hold (e.g., campaign must be running). Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_channelPause one channel of a campaignBInspect

Pause a single channel (email, linkedin, phone_call, voice_call) on a running campaign. Other channels keep going.

NameRequiredDescriptionDefault
idYes
channelYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It usefully states the partial-effect behavior ('Other channels keep going') and the 'running campaign' precondition, but is silent on permissions/authorization, reversibility, and error behavior for an invalid channel or non-running campaign.

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, scope stated first, behavior second, with no filler. Every clause carries information.

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 2-param mutation tool with no annotations and no output schema, the description covers scope and side-effect behavior but omits the meaning of 'id', any permission requirements, and failure/reversibility semantics. Adequate but with clear gaps.

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 0%, so the description must explain both parameters. It restates the 'channel' enum values (already fully enumerated in the schema) but says nothing about what 'id' identifies (campaign id? channel id?), leaving the most important parameter undocumented in both places.

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 (pause) and resource (a single channel on a campaign), and the parenthetical lists the exact channel values. The phrase 'a single channel' implicitly separates it from the whole-campaign sibling pause_campaign, though that sibling is never named.

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 clause 'on a running campaign' gives a precondition for use, which is useful. However, it never states when to prefer this over pause_campaign or resume_channel, nor what to do if the channel is already paused, so the guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phone_test_callMake a test call (real phone)AInspect

DIALS A REAL PHONE: the agent calls to_number from the channel's number (max 2 min, 25 credits/min). Only call the user's own number, only after preview_phone_test_call and explicit approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
to_numberYes
connection_idNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that this dials a real phone, the maximum call duration (2 min), the cost rate (25 credits/min), and the approval prerequisite. It stops short of describing the response or whether a recording/transcript results, but the safety-critical behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the highest-risk fact ("DIALS A REAL PHONE") followed by constraints and cost. Every clause adds operational value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-impact real-phone action with no output schema, the description covers cost, duration, target restriction, and required preview/approval. It could say more about what the agent does on the call or what is returned, but it is sufficient to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: id is documented, but to_number and connection_id are not. The description compensates by declaring that to_number is the number dialed and restricting it to the user's own number, yet it leaves connection_id unexplained and does not specify a phone-number format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific, unambiguous action ("DIALS A REAL PHONE") and identifies both the target (to_number) and source (the channel's number). It explicitly distinguishes this from the related preview tool, so an agent can tell it apart from preview_phone_test_call without opening a 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?

It states clear preconditions: only call the user's own number, only after preview_phone_test_call, and only after explicit approval. These are explicit when-to-use and when-not-to-use rules, not implied guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_campaign_audience_from_customUse a custom audience in a campaignAInspect

Turn a READY custom audience into a campaign audience and return its id ({ id, name, stats }) — pass it as audienceId to create_campaign. Sends nothing, no credits. The "Launch campaign" button of My Audiences.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
nameNoCampaign audience name (default: the custom audience name)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the side-effect profile ('Sends nothing, no credits'), the READY precondition and the return shape, but says nothing about idempotency — whether calling twice creates duplicate campaign audiences — or about permissions/errors when the audience is not READY.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight clauses: what it produces, what to do with it, and what it costs. Front-loaded with the transformation and the return value; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the return object, and it covers cost/preconditions for a two-parameter tool. What remains missing is mutation semantics (duplicate creation on repeat calls) and failure behavior for a non-READY audience.

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%, including the default for `name`, so the schema already does the work. The description adds no parameter-level meaning (it only mentions the output id being reusable as audienceId elsewhere), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Turn a READY custom audience into a campaign audience') plus resource plus stated return value. The 'READY' precondition and the downstream hand-off to create_campaign make it clearly distinguishable from create_custom_audience or add_custom_audience_contacts.

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?

Clear context: the tool is the step between having a READY custom audience and calling create_campaign with the returned id, described as the 'Launch campaign' button of My Audiences. It does not name alternatives or state when NOT to use it (e.g., if the audience is still enriching).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_campaign_emailsPre-generate campaign emails (legacy)AInspect

Generate emails for every contact ahead of sending (legacy company-based audiences only; people/custom-audience campaigns prepare automatically after launch). Can take minutes. Nothing is sent. No credits.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses latency ('can take minutes'), cost ('No credits'), and absence of side effects ('Nothing is sent'). It stops short of stating prerequisites (e.g. campaign must be in draft/prepared state), whether the call is idempotent, or what to do on failure — gaps for a long-running preparation job.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus two short fragments; the scope constraint is front-loaded and every clause adds a distinct fact (scope, latency, no send, no cost). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers applicability, latency, cost, and side effects, and the input schema is fully documented. It leaves out what the tool returns/produces and the failure/retry path, but with a single param and no output schema the definition is nearly complete 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?

Single parameter with 100% schema coverage and a schema description that points to list_campaigns, so the baseline is 3. The description adds no additional meaning about the id (e.g. that it must be a legacy company-based campaign for the call to succeed).

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+resource (generate emails for every contact) plus timing (ahead of sending), which cleanly separates it from send_campaign_emails_now, preview_campaign_email, and retry_campaign_email_preparation. The 'legacy' scope further narrows it.

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 names when to use it (legacy company-based audiences) and when not to (people/custom-audience campaigns prepare automatically after launch, so no call is needed). That is a clear condition plus exclusion, which is exactly what an agent needs to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_activate_campaign_linkedinPreview activating LinkedIn on a campaignAInspect

Dry-run: which accounts would get the campaign audience queued, how many contacts and what is already queued. Nothing changes. Call before activate_campaign_linkedin.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
account_idsNoDefault: settings.selectedLinkedinAccountIds, else all connected accounts

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden well by stating 'Nothing changes' and framing the call as a dry-run, so the agent knows it has no side effects. It also discloses the preview output categories, though it does not mention permissions or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses front-load the dry-run nature, follow with the no-change guarantee, and end with the sequencing instruction. Every sentence contributes information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter preview tool with no output schema, the description gives enough context to call it correctly and understand what the result will cover. It could be more complete about preconditions or failure behavior, but the core preview contract is clear.

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 the campaign id and the account_ids default behavior are already documented in the schema. The description adds no parameter-level details beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific dry-run operation and exactly what it reveals: affected accounts, contact counts, and already-queued state. It distinguishes the tool from the actual activation sibling by labeling itself a dry-run and naming activate_campaign_linkedin as the follow-up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to call this before activate_campaign_linkedin, which gives clear sequencing guidance. It does not spell out when not to use it or name other preview siblings, but the intended usage is unambiguous for this workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_activate_campaign_phonePreview AI phone calls for a campaignAInspect

Dry-run of activating the phone channel with numbers the account already owns: numbers, objective, calls/day, window and estimated credits per call/day. Nothing is scheduled. Numbers cannot be bought through the API.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
timezoneNo
call_objectiveNoDefault inform
talking_pointsNo
exclude_weekendsNo
phone_number_idsYesIds of the account's existing phone numbers
max_calls_per_dayNoDefault 50
working_hours_endNo
working_hours_startNoDefault: campaign working hours
max_call_duration_secondsNoDefault 300

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does real work: it declares the operation is non-destructive ('Nothing is scheduled') and that no purchase occurs. It also previews what the response contains (numbers, objective, calls/day, window, estimated credits per call/day), which matters because there is no output schema. Permissions/auth requirements are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the dry-run nature, then the previewed outputs, then the two key constraints. Every clause earns its place and nothing is repeated padding.

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 10-parameter, no-annotation, no-output-schema tool, the description covers safety and return contents but leaves four parameters unexplained and says nothing about permissions or what the preview does once confirmed. Adequate to call correctly-ish, but not 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%, and the description echoes the field groups it covers (numbers, objective, calls/day, window) without adding format or default detail beyond the schema's own descriptions. Parameters such as timezone, talking_points, exclude_weekends and max_call_duration_seconds get no mention in either place, so the description neither compensates nor adds much.

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: a dry-run preview of enabling the phone channel for a campaign, with numbers the account already owns. The preview/activate pairing against siblings like activate_campaign_phone and preview_activate_campaign_linkedin is clear from the name plus 'Dry-run', though the description never names those siblings explicitly.

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?

'Dry-run' plus 'Nothing is scheduled' tells the agent this is the safe pre-flight step before activation. 'Numbers cannot be bought through the API' steers the agent toward owned numbers (list_phone_numbers) rather than a purchase path. It stops short of an explicit 'use this before X, use activate_campaign_phone to actually enable it' routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_agent_emailPreview an email the agent would writeBInspect

Render a sample outreach email from an agent — no sending, no credits. Optional mode/prompt/tone/customInstructions/variant/followUp{index,delayDays,previous}/sample make it render exactly like a campaign would (same as preview_campaign_email).

NameRequiredDescriptionDefault
idYesAgent id

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It usefully discloses that this is render-only with no sending and no credit consumption, which are important behavioral traits. It does not explain return format, error conditions, or that the optional fields it lists are not accepted by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is concise and front-loads the purpose and safety profile. The second sentence is less effective because it spends most of its length listing optional parameters that are not in the schema, undermining the value of that sentence.

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 simple one-parameter preview tool, the description gives the essential purpose and non-sending behavior. However, with no output schema, it could better explain what the rendered preview returns, and it references unsupported optional parameters that are not part of the tool contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the single required 'id' parameter as the agent id. The description instead introduces optional fields such as mode, prompt, tone, customInstructions, variant, followUp, and sample, none of which exist in the input schema and which additionalProperties=false would reject. This creates misleading parameter semantics rather than supplementing the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: render a sample outreach email from an agent. It also clarifies that nothing is sent and no credits are used, which helps an agent understand the operation. It names preview_campaign_email as equivalent but does not clearly differentiate when this tool should be chosen over that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is a preview-only operation and explicitly says 'no sending, no credits.' It also says it behaves like preview_campaign_email, which gives some context. However, it does not state when to use this tool versus preview_campaign_email, crm_preview_email_to_lead, or other preview siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_archive_campaignPreview archiving a campaignAInspect

Show what archiving would do — NOTHING CHANGES: current status and channels, what stops (an active campaign stops ALL outreach at once and releases its mailboxes / LinkedIn accounts), what is kept (history, threads, stats, CRM leads). Archiving cannot be undone (duplicate_campaign to run the same setup again). ALWAYS call first and show the user before archive_campaign.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it declares NOTHING CHANGES (read-only), enumerates the side effects that would occur (active campaign stops ALL outreach, releases mailboxes/LinkedIn accounts), and lists what survives (history, threads, stats, CRM leads). It also flags irreversibility of the corresponding archive, which the agent must convey to the user.

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-loaded with the key constraint ('NOTHING CHANGES') and packed with useful detail in few sentences. The parenthetical asides make it slightly dense, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description effectively describes what the preview returns — current status and channels, what stops, what is kept. Combined with the sequencing instruction, an agent has everything needed to call it correctly and present results.

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 parameter, and the schema already documents it at 100% coverage including its source ('UUID from list_campaigns'). The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show what archiving would do') and immediately distinguishes it from the real mutation by naming archive_campaign as the follow-up. An agent can tell this is a read-only dry run without opening the 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?

Explicit sequencing rule: 'ALWAYS call first and show the user before archive_campaign.' It also names duplicate_campaign as the recovery path, giving the agent an alternative when the user wants the same setup later.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_buy_audience_setPreview buying an audience set (dry-run)AInspect

Dry-run of purchasing an audience set — returns the set, contact count, price per contact, estimated credits, current balance and can_afford, WITHOUT spending credits. ALWAYS call this first and show the cost to the human.

NameRequiredDescriptionDefault
idYesSet id (UUID), not the slug

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and clearly states this is a dry-run that does not spend credits. It also lists the key returned values including balance and can_afford, though it does not discuss permissions or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the dry-run nature, then lists returned values and the required workflow. Every sentence adds useful information with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description appropriately lists the return fields. For a one-parameter preview tool, it provides enough context to call it safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents the sole id parameter as a UUID rather than a slug. The description adds no parameter-specific detail beyond referring to the audience set.

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 — dry-run purchasing an audience set — and immediately clarifies it does not spend credits. The dry-run framing distinguishes it from the sibling buy_audience_set tool.

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 instructs the agent to ALWAYS call this first and show the cost to the human. It does not name buy_audience_set as the follow-up alternative, but the when-to-use guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_campaign_emailPreview a campaign email (first or follow-up #k)AInspect

Render the exact email a campaign would send — first email or follow-up #k — with the writing rules, tone, Communication Rules or fixed text. Pass campaign_id to use its saved settings (any field you pass overrides them), or agent_id + rules for an unsaved draft. No sending, no credits.

NameRequiredDescriptionDefault
modeNo
toneNo
promptNoAI writing rules (for the follow-up when follow_up is set)
sampleNoSample recipient used for the preview (defaults to a demo contact).
variantNoFixed mode text
agent_idNoRequired for AI mode when no campaign_id
follow_upNoPreview follow-up #index instead of the first email
campaign_idNo
custom_instructionsNoCommunication Rules

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose key traits: no sending, no credits consumed, and that passed fields override saved campaign settings. It does not mention permission requirements or rate limiting, and says nothing about what the preview returns (HTML, text, rendered object).

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?

Compact, front-loaded with the core action before the configuration branches. The middle clause ('with the writing rules, tone, Communication Rules or fixed text') is a slightly dense list that costs some readability.

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?

Covers the two main invocation flows but leaves gaps for a 9-parameter, nested-object tool with no output schema: nothing explains the mode enum, the variant/sample structures, or what the rendered preview actually looks like. An agent could call it, but not confidently interpret the result.

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?

Adds real meaning beyond the 67%-covered schema: the campaign_id vs agent_id+prompt relationship, the 'any field you pass overrides them' precedence, and follow_up #k semantics. It leaves mode/variant/fixed-text details to the schema, which is acceptable at this coverage level.

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 ('render the exact email a campaign would send') and scope (first email or follow-up #k), which distinguishes it from the many send/activate siblings. It does not name a specific alternative like preview_agent_email or get_campaign_email, but the 'No sending, no credits' clause makes the non-mutating preview role clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit configuration paths: campaign_id to use saved settings, or agent_id + rules for an unsaved draft, plus the override rule. It doesn't say when to choose this over preview_agent_email or crm_preview_email_to_lead, so the alternative-selection guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_campaign_linkedin_followupPreview the LinkedIn message after connectAInspect

Render the first LinkedIn message sent after an invite is accepted (AI from the agent, or the fixed text with placeholders filled). Pass campaign_id to use saved settings. No sending, no credits.

NameRequiredDescriptionDefault
modeNo
sampleNoSample recipient used for the preview (defaults to a demo contact).
agent_idNo
exact_textNo
campaign_idNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral-load and usefully discloses that this performs no sending and consumes no credits. However, it does not address authorization requirements, whether campaign_id changes defaults or overrides other parameters, or any other side-effect details beyond the no-send/no-credit note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three compact sentences with no wasted text. The core purpose is front-loaded, the campaign_id usage instruction follows, and the safety note is placed at the end.

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 five-parameter preview tool with no annotations and no output schema, the description gives enough to understand the high-level operation and its no-side-effect nature. It is not complete enough to guide correct use of agent_id versus campaign_id, or the exact_text parameter, and the nested sample object is only described in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20%, so the description must compensate. It adds useful meaning for mode (AI from the agent vs fixed text with placeholders) and campaign_id (use saved settings), but leaves agent_id unexplained and does not clearly name exact_text or explain how it relates to the fixed-text mode.

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 action and resource: rendering the first LinkedIn message sent after an invite is accepted. It also distinguishes the AI and fixed-text variants, but it does not explicitly name the close sibling preview_linkedin_followup, so the sibling differentiation is good but not fully explicit.

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 gives one concrete usage instruction: pass campaign_id to use saved settings. It also clarifies that this is a preview with no sending and no credits, but it does not state when to choose this over the campaign invite preview or the generic LinkedIn follow-up preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_campaign_linkedin_invitePreview a campaign LinkedIn inviteAInspect

Render the LinkedIn connection note a campaign would send (AI from rules/tone, or fixed text with placeholders), with its length vs the 200-char limit. Pass campaign_id to use saved settings. No sending, no credits.

NameRequiredDescriptionDefault
modeNo
toneNo
promptNo
sampleNoSample recipient used for the preview (defaults to a demo contact).
agent_idNo
exact_textNo
campaign_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden; it discloses the key safety properties that nothing is sent and no credits are used, and mentions the 200-character limit. It does not cover permissions, whether saved campaign settings are only read, rate limits, or what exactly the rendered output contains beyond length.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three compact sentences, front-loaded with the core rendering behavior, then the character-limit detail, then campaign_id usage and the no-send/no-credit guarantee. Every sentence adds relevant information without repetition.

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 7-parameter tool with no output schema and low schema description coverage, the description explains the core preview behavior and output length comparison but leaves several parameters and return details unexplained. It is adequate for understanding the main purpose but incomplete for fully confident invocation.

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 14%, so the description must compensate, but it only clarifies campaign_id and loosely maps to mode/tone via 'AI from rules/tone, or fixed text with placeholders.' It says nothing about prompt, sample, agent_id, exact_text, or their meanings and constraints, leaving most of the 7 parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: render the LinkedIn connection note a campaign would send, covering both AI and fixed-text modes. This is clearly distinct from sibling preview tools for followups, emails, or non-campaign LinkedIn invites.

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?

It gives useful context ('Pass campaign_id to use saved settings') and clarifies 'No sending, no credits,' which helps an agent understand this is a preview operation. However, it does not explicitly name when to use this instead of preview_linkedin_invite, preview_campaign_linkedin_followup, or other preview siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_cancel_meetingPreview cancelling a meeting for the agentAInspect

Show which meeting the agent would skip. Nothing changes. Call first and show the user.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the single most important trait: 'Nothing changes', i.e. this is non-mutating. It says nothing about what happens when meeting_id doesn't exist, permissions required, or the shape of the returned preview beyond 'which meeting'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse sentences, front-loaded with the action, then the safety property, then the workflow instruction. No filler and nothing buried.

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 one-parameter preview tool with no output schema and no annotations, the description covers purpose, non-mutation, and user-facing sequencing — the essentials. It stops short on parameter sourcing and on what the preview actually contains, which matters since there is no output schema to fall back on.

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 0% and the description never mentions meeting_id — the only parameter. The agent can guess that a required string id selects the meeting, but nothing is added about expected format, source (list_meetings/get_meeting), or behavior for invalid ids.

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?

Names a specific action (show which meeting would be skipped) plus the scope, and the phrase 'Nothing changes' makes it identifiable as a dry-run counterpart to cancel_meeting. It doesn't name the sibling cancel_meeting explicitly, so the agent must infer the pairing from the shared 'meeting' + 'cancel' naming.

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?

'Call first and show the user' gives explicit sequencing guidance — this is a pre-flight step whose result must be surfaced to the user before the real action. The implied alternative (the actual cancellation) is never named, so the agent has to infer which tool to call next.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_connect_whatsapp_accountPreview connecting WhatsAppAInspect

Explain what connecting a WhatsApp number does and list the accounts already connected. No link is created. Call first, then connect_whatsapp_account after the user approves.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It correctly discloses the most important trait, 'No link is created,' and implies an approval-gated workflow, but it does not mention permission requirements, return behavior, or other execution context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no repetition, and useful information is front-loaded. Each sentence adds a distinct point: purpose, side-effect guarantee, and sequencing.

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-parameter preview tool with no output schema, the description covers the essential purpose, side effect, and workflow step. It could be stronger by clarifying what 'explain' returns or how it relates to list_whatsapp_accounts, but it is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so there are no parameter semantics to explain. The baseline for zero-param tools is 4, and the description does not introduce misleading parameter expectations.

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 preview action: explain what connecting a WhatsApp number does, list already-connected accounts, and explicitly say no link is created. It distinguishes itself from connect_whatsapp_account, though it does not mention the sibling list_whatsapp_accounts even though this tool also lists accounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear sequencing guidance: call this first, then connect_whatsapp_account after user approval. The condition is explicit enough to know this is a prerequisite step, but it does not state when to prefer list_whatsapp_accounts or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_custom_audience_fileDetect columns of a contacts fileAInspect

Step 1 of an upload: send a CSV/XLSX/XLS/TSV/TXT file (base64 or https URL) and get the detected headers, a suggested column mapping, sample rows, total rows and the list of target fields. Creates nothing, no credits. Then call upload_custom_audience (optionally with a corrected column_mapping).

NameRequiredDescriptionDefault
file_urlNoPublic https URL to fetch the file from (≤10 MB). Use this OR content_base64.
filenameNoFile name WITH extension (decides the type). Required with content_base64.
content_base64NoFile content, base64 (≤ ~7 MB). Use this OR file_url.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does well on side effects ("Creates nothing, no credits") and enumerates what is returned, but says nothing about authentication/permission requirements, whether the preview is retained server-side for the subsequent upload, or how the suggested mapping is derived (and thus when to override it).

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 purpose and keeps the pipeline note at the end; every clause carries information. The return-value enumeration is a bit list-like but earns its place given there is no output schema.

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 annotations and no output schema, so the description must supply both safety and return shape — and it does. The remaining gap is whether the preview must be immediately followed by the upload (statefulness/expiry) and any permission prerequisites, which an agent planning a multi-step upload would want.

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%, including size caps and the either/or relationship between file_url and content_base64, so the schema already documents all three parameters. The description only adds accepted formats and that column_mapping (a parameter of the *next* tool) can be corrected, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (send a file, get detected headers/mapping) and the exact resource (contacts file for a custom audience upload). It also labels itself "Step 1 of an upload", which cleanly separates it from the sibling upload_custom_audience that performs step 2.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the sequencing ("Then call `upload_custom_audience` (optionally with a corrected column_mapping)"), which tells the agent both the alternative and the condition for using it. The "Creates nothing, no credits" note further clarifies this is a safe pre-flight step rather than a substitute for the upload.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_deep_scanPreview a deep website scanAInspect

Show what deep_scan_agent would do: cost (15 credits), duration (60-180 s) and what gets saved. Nothing runs. ALWAYS call first and get the user's approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
persistNo
company_nameNo
company_websiteNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still discloses important behavior: no execution occurs, the scan would cost 15 credits, take 60-180 seconds, and report what gets saved. It does not clarify whether the preview itself consumes credits or exactly what 'saved' data will include.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with the purpose and key constraint front-loaded. Every sentence adds useful information without filler.

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 preview tool with no annotations and no output schema, the description covers the core purpose and approval workflow. However, it leaves gaps around optional parameters, persistence behavior, and the exact saved-data semantics that an agent would need to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, with just the id parameter documented. The description does not explain persist, company_name, or company_website, so it does not compensate for the low schema coverage on the remaining parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Show') and resource ('what deep_scan_agent would do'), and it scopes the preview to cost, duration, and what gets saved. The line 'Nothing runs' clearly distinguishes it from the actual deep_scan_agent sibling.

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?

It gives an explicit mandatory workflow: call this first and get the user's approval. It also names deep_scan_agent as the action being previewed, and 'Nothing runs' implicitly clarifies that this is not the execution tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_agentPreview deleting an agentAInspect

Show what would happen if you delete an agent. The agent is NOT deleted. ALWAYS call this first and surface the result to the user before calling delete_agent.

NameRequiredDescriptionDefault
idYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the critical safety trait ('The agent is NOT deleted'), which prevents an agent from treating this as a mutation, but it says nothing about what the preview returns, whether the id must exist, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the non-destructive guarantee and the call-ordering directive front-loaded where they matter most.

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 should ideally convey what the preview presents to the user. 'Show what would happen' is vague about return content (impact summary? affected resources? warnings?), leaving a gap for an agent that must surface the result.

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 0% for the single 'id' parameter, but the description's repeated phrase 'an agent' makes clear the id identifies the agent to be previewed. It adds minimal syntax or format detail beyond that implication, so the low coverage is only partially compensated.

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 ('Show what would happen if you delete an agent') and explicitly distinguishes itself from the sibling delete_agent. An agent can tell it apart from the many delete_* tools in the sibling list without opening the 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?

Gives an unambiguous directive: 'ALWAYS call this first and surface the result to the user before calling delete_agent.' It names the alternative tool and the ordering condition, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_agent_connectionPreview removing a channelAInspect

Show what removing a channel would do. Nothing is removed. ALWAYS call first and show the user before delete_agent_connection.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
connection_idYesChannel (connection) id (UUID) — from list_agent_connections

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does state the key safety trait: "Nothing is removed." It also discloses the intended workflow of showing results to the user before deletion, though it does not describe the preview payload or any authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core behavior. The safety note and mandatory call order are both earned and easy to scan.

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 preview tool with no output schema, the description provides the essential safety and workflow context. It could say more about what the preview returns, but the agent has enough to invoke it correctly and show the user before deleting.

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 id and connection_id are already documented in the schema. The description uses "channel" language but adds no parameter-level detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource: show what removing a channel would do. It explicitly distinguishes itself from delete_agent_connection by positioning itself as the required preview step, so an agent can tell these siblings apart.

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?

Gives an explicit usage rule: "ALWAYS call first and show the user before delete_agent_connection." This tells the agent both when to use it and which alternative operation it precedes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_campaignPreview deleting a campaignAInspect

Show what would happen if you delete a campaign. The campaign is NOT deleted.

NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the single most important behavioral trait: this is a non-destructive dry-run ('The campaign is NOT deleted'). It does not cover what the preview actually returns or any permission/rate-limit considerations, but the core safety behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the consequential reassurance ('The campaign is NOT deleted.') front-loaded immediately after the action statement.

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 preview tool with no annotations, no output schema, and an undocumented id parameter, the description establishes purpose and non-destructiveness but says nothing about what the preview reveals (e.g., affected audiences, channels, data loss), which is the whole point an agent would call it for.

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 0% with one parameter (id). The description references 'a campaign', implying id identifies the campaign, but adds no syntax, format, or sourcing detail beyond that inference. Minimal compensation for the coverage gap.

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+resource combination ('show what would happen if you delete a campaign') and explicitly disambiguates from the real delete operation by noting the campaign is NOT deleted. The distinction from delete_campaign is implied rather than named, but an agent can tell the two apart.

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: the term 'preview' and the non-deletion guarantee suggest this is a dry-run to check consequences before calling delete_campaign. There is no explicit statement of when to use this versus the actual delete, nor any listed prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_crm_branchPreview deleting a pipeline (dry-run)AInspect

Dry-run: shows the pipeline and how many leads would fall back to General. Changes nothing. ALWAYS call before delete_crm_branch.

NameRequiredDescriptionDefault
idYesBranch id (UUID)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and does so well: it explicitly says this is a dry-run, that it changes nothing, and what information it returns regarding lead fallback. This is exactly the behavioral context needed for a non-mutating preview of a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded sentences with no waste. The dry-run safety statement and prerequisite instruction are both stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, one fully documented parameter, no output schema, and no annotations, the description is complete enough for correct invocation. It covers the operation's nature, its effect, its safety profile, and its relationship to the destructive 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?

The schema has 100% description coverage for the single required id parameter ('Branch id (UUID)'). The description does not add further semantics about the id beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/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: a dry-run preview of deleting a pipeline before the actual delete. It clearly distinguishes itself from delete_crm_branch and explains the concrete effect: showing affected leads that would fall back to General. An agent can identify its role without inspecting sibling schemas.

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?

It gives an explicit usage rule: 'ALWAYS call before delete_crm_branch.' This directly routes the agent to use this preview tool as a prerequisite for the destructive sibling. The when-to-use condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_crm_leadPreview lead deletion (dry-run)AInspect

Dry-run of deleting a CRM lead — shows who would be removed from the board. ALWAYS call this first and show the result to the human.

NameRequiredDescriptionDefault
idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the key trait that this is non-mutating ('dry-run') and what it surfaces. However, it doesn't say whether the preview returns a token/confirmation needed for the real delete, whether it expires, or any auth expectations.

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 ending on the operative instruction. Nothing extra.

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 and no annotations, so the description must cover the full picture; it covers intent and workflow but leaves the return payload (what exactly is shown) and the linking to the real delete unspecified.

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?

The single required parameter `id` has 0% schema description coverage, and the description never explains what `id` refers to (lead ID) or its format. The description adds no parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (dry-run deletion of a CRM lead) and its scope ('shows who would be removed from the board'), which cleanly distinguishes it from the sibling delete_crm_lead and from other preview_delete_* 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?

'ALWAYS call this first and show the result to the human' gives explicit ordering guidance relative to the real delete and states a required workflow, not just a context hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_crm_lead_documentPreview deleting a lead document (dry-run)AInspect

Dry-run: shows which file would be deleted. Changes nothing.

NameRequiredDescriptionDefault
idYesLead id (UUID)
document_idYesDocument id (UUID)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It does disclose the most important trait: this is a non-mutating dry-run that changes nothing and only shows the target file. It does not cover permissions, failure behavior, or detailed output shape, so it is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses, front-loaded with 'Dry-run' and the safety guarantee. Every phrase earns its place and there is no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter preview tool with fully documented schema, the description conveys purpose, non-mutating behavior, and the basic result ('shows which file would be deleted'). It lacks explicit routing to the real delete tool and error details, but is sufficient 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?

Schema coverage is 100%, so the input schema already documents both required parameters (lead id and document id). The description adds no parameter-specific meaning beyond what the schema provides, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: dry-run preview of which lead document file would be deleted. It clearly distinguishes itself from the destructive sibling delete_crm_lead_document by stating 'Dry-run' and 'Changes nothing.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The dry-run framing gives clear context for when to use this tool rather than an actual delete operation. It does not explicitly name delete_crm_lead_document or other alternatives, but the intended pre-delete/preview usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_crm_stagePreview stage deletion (dry-run)BInspect

Dry-run of deleting a pipeline stage. Deletion is refused downstream if the stage still holds leads or is a system stage.

NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry full behavioral burden. It does disclose the useful refusal conditions (stage holding leads or being a system stage), and 'dry-run' implies non-mutating, but it never explicitly confirms no changes are made or describes what the preview returns.

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 waste; the dry-run purpose is front-loaded and the precondition follows. Every clause carries information.

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 simple one-parameter preview tool with no output schema and no annotations, the description covers purpose and refusal conditions but omits what the preview actually returns and does not clarify the id parameter. Adequate but with visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single 'id' parameter, so the description should compensate but does not. It never states that 'id' is the stage identifier or its format, leaving meaning to be inferred from the tool name only.

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 (dry-run of deleting) and resource (a pipeline stage), which is clear and distinct from the actual delete_crm_stage sibling. It does not name delete_crm_stage explicitly, so the differentiation is implied rather than spelled out.

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 dry-run framing implies this should be used to preview before a real deletion, but the description never states when to prefer it over delete_crm_stage or crm_list_stages. Usage is only inferable from the word 'dry-run'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_custom_audiencePreview deleting a custom audience (dry-run)AInspect

Dry-run: shows the audience name and how many contacts would be deleted. Changes nothing. ALWAYS call before delete_custom_audience and show the result.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does the essential part: it declares the operation is non-mutating ("Changes nothing") and specifies the preview payload (name, deletable contact count). It does not cover edge cases an agent might hit, such as what happens if the id does not exist or whether the preview consumes credits, so it stops short of full behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the dry-run nature and the mandatory pre-call rule; no filler or restated field names. Every sentence contributes a distinct fact (what it shows, that it is safe, when to call it).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, non-destructive preview with no output schema and no annotations, the description supplies all the essentials: the non-mutating guarantee, the returned information, and the required call ordering. Nothing an agent needs in order to invoke it correctly is missing.

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?

Only one parameter exists and the schema already documents it at 100% coverage ("Custom audience id (UUID)"). The description reinforces that the target is an audience whose name and contact count will be shown, adding slight meaning beyond the schema, which is a modest lift above the baseline of 3 for a fully documented single param.

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 (dry-run preview of deleting a custom audience) and explicitly says what it returns: the audience name and how many contacts would be deleted. It is clearly separable from delete_custom_audience and from get_custom_audience because it frames itself as a non-mutating pre-check.

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?

"ALWAYS call before delete_custom_audience" gives an explicit ordering rule and names the alternative tool that performs the real action. The "dry-run ... Changes nothing" clause makes the when-to-use condition (before a destructive delete) unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_custom_audience_contactPreview removing a contact (dry-run)AInspect

Dry-run of removing one contact from a custom audience. Changes nothing. Show the result to the human before delete_custom_audience_contact.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
reasonNo
contact_idYesContact id (UUID)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the most important trait: 'Changes nothing' confirms it is a non-mutating read. It does not describe what the preview actually returns or whether it errors when the contact is absent, which matters given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what it does, its safety property, and the workflow step. The safety claim and the human-review instruction are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple preview tool this covers the essential decision points: no side effects and the human-confirmation step before the real delete. The gap is the shape of the preview output and the meaning of the optional reason parameter, which nothing else documents.

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%: id and contact_id are documented as UUIDs, but `reason` has no description anywhere. The description adds no parameter meaning at all, so the undocumented parameter stays opaque, though the schema carries most of the weight.

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 (dry-run of removing one contact from a custom audience) and explicitly names the mutation sibling it previews. An agent can distinguish it from delete_custom_audience_contact and preview_delete_custom_audience 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?

Gives an explicit workflow directive: run this, show the result to the human, then call delete_custom_audience_contact. The when-to-use and the alternative are both named rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_delete_narrator_leadPreview deleting a presentation leadAInspect

Show the lead that would be deleted. Nothing is deleted. Call first and show the user before delete_narrator_lead.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
lead_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden, and it does the most important part: 'Nothing is deleted' makes the read-only nature unambiguous and the sequencing sentence encodes a confirmation-workflow requirement. It stops short of describing what the preview actually contains or whether it is guaranteed to still be current at delete 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?

Three very short sentences, front-loaded with the purpose and the safety guarantee. No filler; every clause adds routing or safety 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 two-parameter preview tool with no output schema, the essential information (safe, read-only, must precede the delete) is present. It would be stronger if it stated what the preview returns or that it validates the lead exists, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and lead_id has no description at all, yet the description never mentions either parameter. It does not clarify that id is the agent UUID sourced from list_agents or that lead_id must identify an existing narrator lead, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Show the lead that would be deleted') and immediately distinguishes itself from the mutating sibling delete_narrator_lead. An agent can tell exactly what this does without opening the 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?

Explicit sequencing guidance: 'Call first and show the user before delete_narrator_lead.' It names both the timing (first) and the required intermediate step (show the user), so there is no ambiguity about when this is used instead of the delete tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_client_mailboxPreview disconnecting an own mailboxAInspect

Dry-run: which client_owned campaigns are affected and how many usable mailboxes remain. Nothing changes.

NameRequiredDescriptionDefault
mailbox_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does the essential work by declaring the operation non-mutating ('Nothing changes') and summarizing the return content (affected campaigns, remaining mailbox count). It omits prerequisites such as mailbox ownership or what happens when mailbox_id is unknown/invalid.

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, no filler, with the dry-run nature front-loaded before the result summary. 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 one-parameter, read-only preview with no output schema, the description covers the safety profile and the shape of the result. The remaining gap is how to source mailbox_id and any error behavior, which is minor but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single required parameter mailbox_id is never mentioned in the description, so nothing tells the agent which mailbox identifier to supply or how to obtain it. Only one parameter keeps this from being a 1.

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 dry-run of disconnecting a mailbox and is concrete about what it surfaces: affected client_owned campaigns and remaining usable mailboxes. It never says the word 'disconnect' or names the sibling disconnect_client_mailbox, so differentiation comes mostly from the name and title rather than the description text.

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?

'Dry-run' plus 'Nothing changes' implies this should be called before the real disconnect, but no sibling is named and there is no explicit when/when-not guidance. An agent can infer intent but must supply the routing decision itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_content_accountPreview disconnecting a social publishing accountAInspect

Dry-run of removing a publishing account. Nothing changes.

NameRequiredDescriptionDefault
account_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description usefully discloses the key behavioral trait: this is a dry run and nothing changes, so it is safe to call. However, it does not explain what the preview returns, whether it validates the account, or any prerequisites, which are meaningful gaps for an unannotated preview operation.

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 dry-run purpose and immediately followed by the no-side-effect assurance. Every sentence earns its place with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential safety profile for a simple dry-run tool, but with no annotations and no output schema, it leaves the agent without information about what the preview actually shows or how to interpret the result. It is minimally adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter, `account_id`, and the schema provides no description for it (0% coverage). The tool description does not mention the parameter at all, so it does not compensate by clarifying that this is the ID of the publishing account to preview disconnecting.

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 action ('Dry-run of removing') and resource ('a publishing account'), making clear it is a preview rather than a real disconnect. It does not explicitly name the sibling `disconnect_content_account` as the actual-mutation alternative, but the preview-versus-real distinction is still evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the tool as a dry run ('Nothing changes'), implying it should be used before actually removing an account. It does not explicitly state when not to use it or name the mutation sibling to call afterward, but the context is sufficiently clear for a simple preview tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_crm_integrationPreview disconnecting a CRM (dry-run)AInspect

Dry-run: shows which connection would be removed. Changes nothing.

NameRequiredDescriptionDefault
providerYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the safety burden and does so well by explicitly saying "Changes nothing," which confirms non-destructive behavior. It does not cover permissions or response details, but the critical dry-run behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is two short sentences, front-loaded with "Dry-run" and the core promise that nothing changes. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple preview tool with one enum parameter, the description sufficiently explains the dry-run safety behavior and what the preview shows. It could mention the provider input or error behavior when no connection exists, but the essential context is present.

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 0%, and the description never mentions the required "provider" parameter or explains the kommo/hubspot choices. The enum in the schema provides allowed values, but 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and scope: a dry-run that shows which CRM connection would be removed and explicitly changes nothing. This clearly distinguishes it from the actual disconnect_crm_integration sibling.

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 word "Dry-run" strongly implies it should be used before making a real change, but the description does not explicitly name disconnect_crm_integration as the alternative or state when not to use this tool. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_google_meetPreview disconnecting Google MeetAInspect

Show what disconnecting Google Meet would do. Nothing changes. Call first and show the user.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description must carry the safety profile, and it does the most important part: 'Nothing changes' declares the call is side-effect free. It omits what the preview actually reports back, but the critical non-destructive trait is stated plainly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste, with the effect and the non-mutation guarantee front-loaded before the workflow instruction.

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?

There is no output schema and no annotations, so the description is the only source of behavior; it covers safety and ordering but says nothing about what the preview returns or what would be affected by the disconnect, which the agent needs in order to 'show the user'.

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?

Single parameter with 100% schema description coverage ('Agent id (UUID) — from list_agents'), so the schema already does the work. The description adds no further meaning about the id, which is the expected baseline here.

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+resource: shows the effect of disconnecting Google Meet, i.e., a dry-run preview. The 'preview_' naming plus 'Show what ... would do' distinguishes it from the sibling disconnect_google_meet, though it never names that sibling explicitly.

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?

'Call first and show the user' gives explicit sequencing guidance (use this before the real disconnect, and surface results to a human). It stops short of an explicit 'do not call disconnect_google_meet without running this first' exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_linkedin_accountPreview disconnecting a LinkedIn account (dry-run)AInspect

Dry-run of removing a LinkedIn account, showing the capacity that would be lost. ALWAYS call this first.

NameRequiredDescriptionDefault
idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and 'dry-run' usefully signals a non-mutating preview. It also discloses what the call surfaces (capacity that would be lost), which is real behavioral context. It does not explicitly state that nothing is destroyed, so a small gap remains.

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 dry-run purpose and the imperative usage rule placed last. No filler; every phrase earns its place.

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 single-parameter, no-annotation, no-output-schema tool, the description covers purpose and ordering but leaves the 'id' parameter and any indication of the preview's shape undocumented. Adequate but not fully rounded.

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 0% with one required parameter ('id'), and the description never explains what that id refers to (e.g. which LinkedIn account). The tool name makes it inferable, but the description adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Dry-run of removing a LinkedIn account') and even names the effect ('showing the capacity that would be lost'), which goes beyond restating the name. It implicitly distinguishes itself from the real disconnect_linkedin_account sibling via 'dry-run', but never names that sibling explicitly.

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?

'ALWAYS call this first' is a clear, actionable when-to-use directive that routes the agent to invoke this before the actual disconnect. It stops short of naming the alternative tool, but the sequencing rule is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_telegram_botPreview disconnecting the Telegram botAInspect

Show which Telegram bot would be detached from the agent (username, chats, messages). Nothing changes. Call first.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. 'Nothing changes' clearly communicates that this is a non-mutating preview, and 'Call first' indicates sequencing, though it does not cover permissions, error conditions, or what happens after previewing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, front-loads the tool's purpose, and every sentence adds useful information: what is shown, that nothing is changed, and that it should be called first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple preview tool with no annotations and no output schema, the description supplies the essential behavior and gives examples of returned details. It could be slightly stronger by explicitly naming disconnect_telegram_bot as the follow-up, but no critical information for calling it 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?

The single required parameter has 100% schema description coverage, already explaining that it is the agent id (UUID) from list_agents. The description does not add any further parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it shows which Telegram bot would be detached from an agent and lists the relevant details (username, chats, messages). It clearly distinguishes this preview from the actual disconnect operation by saying 'Nothing changes. Call first.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Call first' establishes that this should be used before the actual disconnect, giving clear usage context. However, it does not explicitly name disconnect_telegram_bot as the follow-up action or state when not to use this preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_disconnect_whatsapp_accountPreview disconnecting WhatsAppAInspect

Show the WhatsApp account that would be disconnected. Nothing changes. Call first.

NameRequiredDescriptionDefault
account_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden and does disclose the critical behavior: 'Nothing changes,' which signals a non-destructive preview. It also indicates the return focus, the account that would be disconnected, though it does not cover auth requirements or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: what is shown, that nothing changes, and when to call it. Every fragment adds useful information with no waste.

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 simple single-parameter preview tool with no output schema, the description covers the key non-mutating behavior and return intent. However, because there are no annotations and no schema parameter descriptions, the undocumented account_id semantics leave a meaningful gap.

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?

The schema has one required account_id parameter with 0% description coverage, so the description should compensate for the missing semantics. It implies an account is being identified but never names account_id, explains its format, or says where to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: showing the WhatsApp account that would be disconnected. It also makes the preview semantics explicit with 'would be disconnected' and 'Nothing changes,' distinguishing it from the actual disconnect sibling.

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?

'Call first' gives a clear ordering guideline for using this before disconnecting. It does not explicitly name the disconnect_whatsapp_account alternative or list when-not-to-use conditions, but the intended usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_enrich_custom_audiencePreview enriching a custom audience (cost)AInspect

Dry-run of enrichment: how many contacts still need enrichment, the maximum credits (1 per contact), estimated minutes, the current balance and whether it can start. Spends nothing. ALWAYS call first and show the cost to the human.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the safety burden and does so well: 'Dry-run' and 'Spends nothing' explicitly declare the operation is free and non-mutating, which is the key risk for a credit-consuming domain. It also discloses the informational payload. It stops short of stating whether it enqueues anything or requires specific permissions, so a 4 rather than 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-loaded with the core action and the key cost constraint, all in a compact two-clause sentence plus a short imperative. The parenthetical '(1 per contact)' is informative rather than padding. Slightly dense list-of-outputs phrasing keeps it from a perfect 5.

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 single-parameter, no-output-schema, no-annotation tool, the description covers behavior, safety, and returned information sufficiently for correct invocation. Naming `enrich_custom_audience` explicitly as the follow-up would make the routing airtight.

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 `id` parameter is fully documented there as a custom audience UUID. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Dry-run of enrichment') and enumerates exactly what the preview returns: contacts needing enrichment, maximum credits, estimated minutes, balance, and startability. This clearly delineates it from the sibling `enrich_custom_audience`, which actually performs the spending action.

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?

Provides an explicit imperative: 'ALWAYS call first and show the cost to the human.' This tells the agent both when to use it (before enrichment) and what to do with the result (surface cost to the user), leaving no ambiguity about sequencing with `enrich_custom_audience`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_invite_workspace_memberPreview inviting a teammate (dry-run)AInspect

Dry-run: checks whether the email can be invited (caller is admin, not already a member, no pending invite). Sends nothing.

NameRequiredDescriptionDefault
emailYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that no invite is sent and lists the eligibility conditions checked (caller is admin, not already a member, no pending invite). It stops short of describing the return shape or failure details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tightly written sentence with no waste. The dry-run nature and 'Sends nothing' safety statement are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter dry-run with no annotations or output schema, the description covers purpose, side effects, and eligibility checks adequately. It could be slightly more complete by stating what the preview returns, but the core information an agent needs is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single email parameter. It identifies the email as the invitee address being checked, but adds no format, normalization, or case-sensitivity guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear dry-run verb and resource: checks whether an email can be invited. It also distinguishes itself from the real invite action by stating it sends nothing, so an agent can tell it apart from invite_workspace_member 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The dry-run framing and the explicit 'Sends nothing' clause make the intended usage clear: validate eligibility without performing the invite. However, it does not name the alternative invite_workspace_member or explicitly state when not to use this preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_launch_audience_setPreview preparing a campaign audience from a set (dry-run)AInspect

Dry-run of launch_audience_set: shows the set, contact count, credits it would cost (signals sets: price per contact for a fresh snapshot; people sets: free) and the balance. Nothing is bought or sent. ALWAYS call this first and show the cost.

NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it declares "Nothing is bought or sent," effectively establishing read-only/no-side-effect semantics for the agent. It also explains the pricing model per set type (signals: per-contact snapshot cost; people: free), which is nontrivial behavior not visible elsewhere. Missing only auth/permission or latency notes.

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 tight single sentence with the dry-run framing, return contents, cost model, and safety assurance all front-loaded before the imperative. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, but the description covers what the preview returns and confirms no side effects, which is enough for a one-parameter preview tool. Return structure and any error cases (e.g., invalid set id) remain unstated.

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 0% and the single `id` parameter is undocumented in the schema. The description implies the id refers to an audience set ("shows the set," "signals sets / people sets") but never states that explicitly or notes any format constraints, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (dry-run of `launch_audience_set`) and enumerates exactly what it surfaces: set, contact count, credit cost, and balance. An agent can distinguish it from `launch_audience_set` and from `preview_buy_audience_set` without reading 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit directive: "ALWAYS call this first and show the cost," which tells the agent both when to use it and what to do with the result. It stops short of naming the real sibling it gates (`launch_audience_set`) as an alternative or listing exclusions, so 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_launch_campaignPreview launching a campaignAInspect

Readiness report for launch/resume — NOTHING IS SENT: ready flag, blockers (AGENT_REQUIRED, AUDIENCE_REQUIRED, AUDIENCE_EMPTY (0 contacts), CLIENT_MAILBOX_NOT_CONNECTED, PAID_PLAN_REQUIRED for Vendo managed senders, INVALID_STATUS), warnings, real recipient count, channels, daily email/LinkedIn limits, sender mode, email steps, schedule and the LinkedIn accounts that will be activated. ALWAYS call this first and show the result to the user before launch_campaign.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
linkedin_account_idsNoOverride which LinkedIn accounts get activated (default: settings.selectedLinkedinAccountIds, else all connected)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and does so: 'NOTHING IS SENT' discloses no side effects, and it enumerates the blocker codes (AGENT_REQUIRED, PAID_PLAN_REQUIRED, etc.) and returned fields, giving the agent rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the key fact ('NOTHING IS SENT') immediately, then the enumerations follow. Dense but every clause earns its place given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description enumerates the return contents (ready flag, blockers, warnings, recipient count, channels, limits, sender mode, schedule, LinkedIn accounts), leaving an agent fully informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (id, linkedin_account_ids) are already documented in the schema. The description adds no syntax or format details beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Readiness report for launch/resume'. It clearly distinguishes itself from the mutating sibling launch_campaign by emphasizing the preview/dry-run nature.

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 says 'ALWAYS call this first and show the result to the user before launch_campaign', naming the alternative and the condition that selects it. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_linkedin_account_messagesSample LinkedIn messages for an accountAInspect

Sample invite, follow-up and auto-reply plus suggested pitch/signature for an account in a campaign (built from the campaign's agent). No sending, no credits.

NameRequiredDescriptionDefault
account_idYes
campaign_idYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does well by explicitly stating 'No sending, no credits,' which tells the agent this is a non-mutating, cost-free preview. It also notes the content is 'built from the campaign's agent,' giving useful context about how samples are generated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that lists the key outputs and immediately states the no-sending/no-credits constraint. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does a reasonable job naming the return contents and confirming no side effects. However, it leaves parameter semantics and any prerequisites or error conditions unaddressed, which are notable gaps for an agent invoking it correctly.

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?

The schema has 0% description coverage for account_id and campaign_id, so the description must compensate. It only says 'for an account in a campaign,' which maps loosely to the two parameters but does not explain what kind of account ID is expected, whether the campaign must be active, or any other parameter semantics.

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 preview/sampling action and enumerates the returned artifacts: invite, follow-up, auto-reply, pitch, and signature for an account in a campaign. It is clear what the tool does, though it does not explicitly distinguish itself from sibling preview tools such as preview_campaign_linkedin_invite or preview_linkedin_followup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying it is for an account in a campaign and that it does no sending and consumes no credits. However, it does not explicitly say when to use this instead of the many related preview tools, nor does it name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_linkedin_followupPreview a LinkedIn follow-up the agent would writeBInspect

Render a sample first follow-up (after the connection is accepted). No sending, no cost.

NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose two useful traits: no message is sent and no credits are consumed. It omits other behavior an agent needs, such as whether the referenced entity must already exist, permission/auth requirements, and whether the result is a single sample or a batch.

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 immediately followed by the safety/cost constraints. No filler.

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 one-parameter preview tool with no output schema, the description covers intent and safety but leaves the meaning of the required id unresolved, which is the one thing an agent must get right to call it. Adequate but with a clear hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter is a bare "id" with no description. The tool description says nothing about what that id identifies (agent, campaign, LinkedIn account, or lead), leaving the agent to guess — a genuine gap that the description could easily have closed.

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 (render a sample) and resource (first follow-up after connection acceptance), and the parenthetical scoping to the post-acceptance stage distinguishes it from preview_linkedin_invite without naming that sibling directly. Clear enough for an agent to pick between the two preview tools, though the differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"No sending, no cost" implies a safe dry-run context and the parenthetical establishes it applies after a connection is accepted, giving implied usage. However, it never says when to prefer this over preview_linkedin_invite or other preview_* siblings, and no prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_linkedin_invitePreview a LinkedIn invite the agent would writeBInspect

Render a sample LinkedIn connection request from this agent. No sending, no cost.

NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does disclose key traits: read-only (no sending) and free (no cost), which is valuable. It doesn't disclose auth requirements, output format, or whether the preview reflects current agent config.

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 what the tool does, then the key safety/cost constraints. Zero waste.

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, no annotations, and the single parameter is undocumented. The description covers purpose and two key behaviors but leaves the parameter meaning and return content to inference, which is incomplete for an agent needing to call it.

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 0% with one required parameter 'id'. The description says nothing about what 'id' refers to—an agent id, a lead id, a connection id? This is a significant gap since the schema gives no clues.

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 (render a sample) and resource (LinkedIn connection request) from this agent. It's distinguishable from siblings like preview_agent_email or preview_linkedin_followup by naming the channel and message type. Slightly terse but clear.

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 phrase 'No sending, no cost' implies when/why to use it (to preview safely before committing), but it doesn't explicitly frame alternatives or prerequisites beyond that. Adequate implied guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_phone_test_callPreview a test callAInspect

Show which number would be called from which, and the cost (25 credits/min, max 2 min). Nothing is dialled. ALWAYS call first.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
to_numberYesE.164, e.g. +447700900123
connection_idNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses that no call is placed, gives a price (25 credits/min) and a hard duration cap (2 min). It stops short of saying whether the preview itself bills credits or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded result then safety then directive. Only the awkward 'from which' clause costs it a point.

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 and no annotations mean the description should be fully self-sufficient. It covers safety and pricing but never states what the preview returns (the resolved from/to numbers, projected credit spend) or what happens if connection_id is omitted.

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%, with the agent id and E.164 number documented in the schema but connection_id undocumented. The description gestures at the 'from which' connection but adds no format or sourcing guidance beyond what the schema already says. 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?

Names the action and the resource (a phone test-call preview) and states what it returns: the caller/callee pairing and the cost. However, the phrase 'which number would be called from which' is garbled, leaving the direction of the call slightly ambiguous.

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?

'ALWAYS call first' plus 'Nothing is dialled' gives a clear when-to-use rule relative to the actual dialling step. The counterpart tool (phone_test_call) is never named, so the agent must infer which sibling this precedes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_reconnect_linkedin_accountPreview reconnecting a LinkedIn account (dry-run)AInspect

Dry-run of re-authenticating a LinkedIn account. Explains the side-effects without doing anything. ALWAYS call this first — reconnecting changes the account id upstream and can orphan existing outreach history.

NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden: it discloses that the tool is non-mutating ("without doing anything") and names the concrete downstream risk of the real operation — the upstream account id changes and existing outreach history can be orphaned. That is exactly the kind of consequence an agent needs. It stops short of describing the preview's return shape or how the side-effects are surfaced.

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: the dry-run nature is front-loaded and the mandatory-call rule plus its rationale follow immediately. 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 one-parameter, no-output-schema tool with no annotations, the description covers the essentials: what it does, that it is safe, when it must be called, and the risk it guards against. The only real gap is that it never says what the preview actually returns or which id to pass.

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 0% for the single required parameter "id", and the description never mentions it, so the agent gets no help distinguishing whether this is the LinkedIn account id, a workspace id, or an outreach id. The context (a LinkedIn account tool) makes the plausible reading inferable, but it is not stated.

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 ("dry-run of re-authenticating a LinkedIn account") and the word "dry-run" immediately separates it from the sibling reconnect_linkedin_account, which actually performs the mutation. An agent can route between 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?

"ALWAYS call this first" is an explicit, unconditional ordering instruction, and the reason (upstream account-id change, orphaned outreach history) tells the agent exactly why the preview is mandatory before the real reconnect. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_remove_agent_from_meetingPreview removing the agent from a live callAInspect

Show whether the agent is in this live meeting and what removing it does. Nothing changes.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and it delivers the single most important fact for a preview tool: 'Nothing changes', i.e. a guaranteed no-side-effect read. It also hints at the payload ('whether the agent is in this live meeting and what removing it does'). It does not cover error behavior or whether the meeting must be currently live.

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, no filler, and the non-destructive guarantee is placed at the end as the takeaway. 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 one-parameter preview with no annotations and no output schema, the description adequately covers intent and safety, and gives a rough sense of what is returned. Only the parameter provenance and not-found behavior are left unaddressed.

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 0% and the description says nothing about meeting_id — where to obtain it, whether historical meetings are accepted, or what the 'live' constraint implies. For a single identifier parameter this is inferable, but the description does not compensate for the coverage gap.

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 concrete, verifiable purpose: check whether the agent is present in a given live meeting and preview the effect of removing it. The name's 'preview_' prefix plus 'Nothing changes' makes it distinguishable from remove_agent_from_meeting, though that sibling is never 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?

Use is implied (this is the dry-run step before an actual removal) but never stated. There is no explicit instruction to call this before remove_agent_from_meeting, and no guidance on what to do if the agent is not in the meeting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_remove_workspace_memberPreview removing a teammate (dry-run)AInspect

Dry-run: shows who would lose access. Changes nothing. ALWAYS call before remove_workspace_member.

NameRequiredDescriptionDefault
user_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does the essential part: "Changes nothing" declares the operation is side-effect free, and "shows who would lose access" describes what comes back. It omits error/edge behavior (nonexistent user_id, insufficient permissions), which for an unannotated mutation-adjacent tool is a real but secondary gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short fragments, front-loaded with the dry-run qualifier, zero filler. Every clause adds a distinct fact: what it is, what it costs, and when to call it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-annotation, no-output-schema read-only preview, the description covers purpose, side-effect posture, and sequencing. Given how simple the tool is, the remaining gaps (user_id format, preview payload detail) are minor and out of proportion to the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single `user_id` parameter is undocumented in the schema, so the description must compensate. It only implies that the id identifies the member whose access would be lost, with no indication of expected format (email, UUID, numeric id) or validation behavior. Adequate implication, not enough detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific action (dry-run preview) against a specific resource (workspace member removal) and explicitly contrasts it with the sibling `remove_workspace_member`. An agent can tell exactly what this does and does not do without opening the 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?

"ALWAYS call before remove_workspace_member" is an explicit, prescriptive routing rule naming the alternative tool. It stops short of a 'when not to use' clause (e.g., whether preview is needed for a self-removal or a member that clearly exists), which keeps it off a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_reply_in_campaign_threadPreview a human reply in a conversationAInspect

Dry-run: recipient, subject (defaults to Re: last subject) and the exact text. Nothing is sent. Call before reply_in_campaign_thread and show the text to the user.

NameRequiredDescriptionDefault
bodyYesPlain text
subjectNo
body_htmlNo
thread_idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the safety burden, and it does disclose the most important trait: 'Nothing is sent,' so the agent knows this is non-destructive. It also notes subject defaults to 'Re: last subject.' It says nothing about required permissions, what happens if thread_id is invalid, or error/rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly two sentences with zero filler. The non-destructive guarantee and the sequencing instruction are front-loaded, and every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description doubles as a return-value summary (recipient, subject, text) which partially substitutes for the missing output schema. But for a 4-parameter tool at 25% coverage with no annotations, the undefined thread_id and body_html handling leaves gaps an agent may hit at call time.

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 only 25%, so the description must compensate, and it partially does: it documents that subject defaults to 'Re: last subject' and that the body is 'the exact text' rendered. However, thread_id and body_html are undocumented in both schema and description, leaving half the surface to inference.

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 dry-run preview of a reply showing recipient, subject, and exact text, which makes the outcome concrete. It also names the sibling reply_in_campaign_thread, so an agent can separate preview from send. It stops short of a clean verb+resource sentence, but the resource is unambiguous from name and title.

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?

It gives an explicit sequencing rule — 'Call before reply_in_campaign_thread' — and an explicit post-step: show the text to the user. The alternative tool is named and the condition for choosing this one versus it is stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_reply_to_campaign_emailPreview a manual reply to a leadAInspect

Dry-run of replying to a lead's email reply: shows recipient, subject and the exact text. Nothing is sent. Call before reply_to_campaign_email and show the text to the user.

NameRequiredDescriptionDefault
bodyYesReply body (HTML allowed)
email_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does well: it declares 'Nothing is sent' and lists what the preview exposes (recipient, subject, exact text). It does not cover prerequisites (e.g. the email must be an existing reply thread) or validation/error behavior, leaving a minor gap.

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 waste, with the safety fact ('Nothing is sent') and the sequencing instruction both front-loaded and easy to scan.

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, and the description compensates by naming the returned fields (recipient, subject, exact text). For a 2-parameter no-mutation tool this is nearly complete, though the email_id parameter's meaning remains under-specified.

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 only 50%; email_id is undocumented in the schema. The description implies email_id is the lead's reply being responded to and body is the 'exact text', but adds no format, ID-type, or HTML details beyond the schema's own 'HTML allowed' note.

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: a dry-run preview of replying to a lead's email reply. It explicitly contrasts with the real action (reply_to_campaign_email), so the agent can distinguish it from the write sibling even among many preview_* 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?

Names the alternative write tool (reply_to_campaign_email) and the condition for choosing this one: call it first and show the text to the user. The sequencing requirement is explicit and leaves nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_schedule_campaign_deliveryPreview scheduling prepared emailsAInspect

Dry-run: how many ready prepared emails would be scheduled into the campaign working hours. Nothing changes. Call before schedule_campaign_delivery.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the crucial traits: it is a dry run and "Nothing changes", so an agent knows it is non-mutating, and it reports a count of emails that would be scheduled into working hours. It omits auth requirements and error conditions (e.g., no prepared emails ready), keeping it below top marks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all load-bearing, with the dry-run nature front-loaded before the output description and the sequencing instruction. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter preview with no output schema, the description supplies everything needed: that it is non-mutating, what it returns (a count of emails schedulable within working hours), and where it fits relative to schedule_campaign_delivery.

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 parameter and schema coverage is 100%, with the schema already documenting that id is the campaign UUID sourced from list_campaigns. The description adds nothing about the id 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (dry-run preview) plus resource (scheduling of ready prepared emails into campaign working hours) plus the key output (a count). It is unmistakably distinct from its sibling schedule_campaign_delivery, which the description names.

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?

"Call before schedule_campaign_delivery" gives an explicit sequencing rule and names the alternative tool. It does not state conditions under which the preview should be skipped (e.g., already-scheduled campaigns), so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_send_campaign_emails_nowPreview sending prepared emails nowAInspect

Dry-run: how many prepared emails would be sent immediately (outside the schedule). Nothing is sent.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNoMax emails (default 10)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does disclose the critical trait: this is a dry-run and 'Nothing is sent', so the agent knows it is non-mutating. It also describes the return value ('how many prepared emails would be sent') despite having no output schema. Permissions and rate limits are not mentioned, but for a read-only preview that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately signals 'Dry-run' and then clarifies the outcome. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and fully documented parameters, the description is nearly complete: it explains the purpose, the non-mutating nature, and the essence of the return value. It could have added a note about what 'prepared emails' means or when to use this vs the actual send tool, but the core information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (id, limit) are fully documented in the schema. The description adds the concept of 'prepared emails' and 'outside the schedule' but does not provide additional syntax or format details beyond what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: a dry-run of sending prepared campaign emails now, with the clarifying detail that nothing is sent. It implicitly distinguishes itself from the sibling send_campaign_emails_now by being a preview-only operation, making the intent unmistakable.

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 phrase 'Dry-run' and 'Nothing is sent' imply this is a safe pre-check before an actual send, but the description does not explicitly name the alternative tool (send_campaign_emails_now) or state when not to use this preview. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_send_linkedin_messagePreview a manual LinkedIn messageAInspect

Dry-run: recipient, exact text, cost (5 credits) and whether the balance suffices. Nothing is sent. Call before send_linkedin_message and show the text to the user.

NameRequiredDescriptionDefault
textYes
chat_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the burden and does well: 'Nothing is sent' establishes side-effect-free behavior, and it discloses the concrete cost (5 credits) plus a balance precondition. It omits what happens if the balance is insufficient (error vs. flag in the response), which is the one behavior an agent would still want.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses in a single sentence set, front-loaded with the dry-run nature and the cost. Zero filler; every phrase conveys a distinct fact (what, cost, no side effect, sequencing).

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, and the description compensates by describing the preview payload (recipient, text, cost, sufficiency). No annotations exist either, and it covers the no-op safety profile. The remaining gap is the chat_id identifier semantics, which is the only thing an agent could get wrong at call time.

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 0%, so the description must compensate. It loosely maps the two params — 'recipient' for chat_id and 'exact text' for text — but never clarifies what a chat_id actually is (a LinkedIn conversation ID? a contact ID?) or whether text is sent verbatim including newlines and length limits.

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+resource ('Dry-run' of a 'LinkedIn message') and enumerates exactly what the preview returns: recipient, exact text, credit cost, and balance sufficiency. It is unambiguously distinguishable from the sibling send_linkedin_message, which it names.

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?

'Call before send_linkedin_message and show the text to the user' gives explicit sequencing and the alternative to use afterward. It does not spell out when a preview should be skipped (e.g. re-previews of unchanged text), so it stops short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_send_telegram_messagePreview an operator Telegram messageAInspect

Show the recipient and exact text of an operator message. Nothing is sent. ALWAYS call first and show the user the text.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
chat_idYes
messageYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and usefully discloses the most important trait: nothing is sent. It also indicates what the tool shows the user, but does not mention validation behavior, permissions, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very compact and front-loaded: it states what is shown, confirms no send occurs, and gives the mandatory workflow instruction. Every sentence contributes useful information without 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 low-complexity preview tool with three required parameters and no output schema, the description covers the key safety behavior and intended workflow. It is slightly incomplete because it does not clarify the `chat_id` format or explicitly name the actual send tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with only `id` documented in the schema. The description adds meaning for `chat_id` and `message` by referring to the recipient and exact text, but it does not explain the `chat_id` format or compensate fully for the undocumented 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?

The description states a specific verb and effect: it shows the recipient and exact text of an operator message, and explicitly says nothing is sent. This clearly distinguishes it from the actual send operation, though it does not name the sibling tool `send_telegram_message`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a strong usage rule: "ALWAYS call first and show the user the text." This clearly tells the agent when to use it relative to sending, but it does not explicitly name the alternative tool or describe when not to use this preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_setup_phone_agentPreview the Voice Call setupAInspect

Show what setup_phone_agent would do with the same arguments: which channel is created or updated, which of YOUR numbers is attached, objective, voice, inbound on/off. Nothing is attached or created. ALWAYS call first and show the user, then call setup_phone_agent with the same arguments after approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
speedNo
emotionNo
languageNoauto = script language; multi = switch to the caller's language
voice_idNoFrom list_retell_voices / list_voice_catalog
call_scriptNo
voice_genderNo
ambient_soundNo
connection_idNoExisting PHONE_CALL channel; default = the agent's first one or a new one
call_objectiveNo
accept_incomingNoAnswer calls TO this number with an inbound agent
phone_number_idNoRequired the first time — from list_phone_numbers
greeting_messageNo
enable_backchannelNo
communication_rulesNo
end_call_silence_secondsNo
reminder_trigger_secondsNo
max_call_duration_secondsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly states 'Nothing is attached or created,' which is the key behavioral trait for a dry-run tool. Without annotations, it carries the burden well but doesn't mention error handling or whether argument validation occurs during preview.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what it shows, followed by the no-side-effect guarantee, then the required workflow. Every sentence is necessary and there is no redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 18 parameters and no output schema, the description covers the essential workflow and safety. However, it does not describe the return format of the preview (e.g., a textual summary or structured diff), which would help an agent interpret the result.

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 only 33%, so the description must compensate. It highlights several parameters (connection_id, phone_number_id, call_objective, voice_id, accept_incoming) but leaves many of the 18 parameters (e.g., speed, emotion, ambient_sound) unexplained, so it only partially fills the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it shows what setup_phone_agent would do with the same arguments, listing specific aspects (channel, number, objective, voice, inbound). It directly names the sibling tool it precedes, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: 'ALWAYS call first and show the user, then call setup_phone_agent with the same arguments after approval.' This covers both the action and the required sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_set_workspace_member_rolePreview promoting/demoting an admin (dry-run)BInspect

Dry-run of set_workspace_member_role. Changes nothing.

NameRequiredDescriptionDefault
adminYes
user_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. 'Changes nothing' is a useful non-mutation guarantee, but it does not explain required permissions, what the preview returns, or whether the preview can fail for invalid role changes.

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 dry-run nature and followed by the no-change guarantee. No filler; appropriate for a simple preview tool.

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?

Because there are no annotations and no output schema, the description should explain the preview result and parameter meaning. It covers only the high-level dry-run behavior, leaving material gaps for correct invocation and interpretation.

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?

The schema has 0% description coverage and two required parameters, yet the description never mentions user_id or admin. The agent can infer from the tool name/title that 'admin' likely controls promotion/demotion, but the boolean direction and user_id meaning are not stated.

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 identifies a specific operation — a dry-run of set_workspace_member_role — and distinguishes it from the mutating sibling. The title adds that it previews promoting/demoting an admin, though the description itself relies on the sibling name for the resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

By calling itself a dry-run and saying 'Changes nothing,' it implies use before applying set_workspace_member_role. It names the alternative but does not explicitly state when not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_update_campaign_discoveryPreview AI lead discovery settingsAInspect

Dry-run of enabling/changing automatic lead discovery: source, daily credit budget, leads/day. Nothing changes. Call before update_campaign_discovery whenever discovery is (or stays) enabled.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
enabledNo
require_emailNo
search_sourceNo
max_leads_per_dayNo
apollo_search_configNo
max_total_discoveredNo
signal_search_configNo
search_interval_minutesNo
daily_discovery_budget_creditsNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of the safety profile, and 'Nothing changes' explicitly discloses the non-mutating behavior. It doesn't cover auth requirements, rate limits, or what the dry-run output contains, so it's strong but not complete.

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 tightly packed sentences with the dry-run guarantee front-loaded ahead of the call-order guidance. Zero waste.

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?

A 10-parameter tool with nested objects, no annotations, and no output schema needs the description to explain the config parameters and what the preview returns. The description covers only three of the fields and says nothing about the previewed result, leaving significant gaps for an agent trying to construct a valid dry-run call.

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 10% across 10 parameters, including nested apollo_search_config and signal_search_config objects. The description mentions source, daily credit budget, and leads/day but leaves the nested configs, search_interval_minutes, max_total_discovered, and require_email entirely undocumented in both schema and description.

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 action ('Dry-run of enabling/changing automatic lead discovery') and enumerates the affected settings (source, daily credit budget, leads/day). It effectively separates itself from update_campaign_discovery by being the safe read-only counterpart, though it doesn't explicitly distinguish itself from get_campaign_discovery.

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 says to call it before update_campaign_discovery, and states the condition (whenever discovery is or stays enabled). The alternative and the trigger condition are both named, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reassign_crm_leadReassign a CRM lead to another ownerAInspect

Change who owns a lead (the new owner gets a CRM notification). Call crm_list_workspace_members first to get a valid user id — passing an unknown id fails. Write operation, no credit cost.

NameRequiredDescriptionDefault
idYesLead id
reasonNo
assignee_user_idYesNew owner — a user id from crm_list_workspace_members

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well: it declares this is a write operation, that the new owner receives a CRM notification, that invalid ids cause failure, and that there is no credit cost. Gaps remain around whether the previous owner is notified and what permissions are required to reassign.

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, followed by the prerequisite and the risk/cost profile. No filler, and every clause carries actionable 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 3-parameter write tool with no annotations and no output schema, the description covers side effects, validation, and cost. It stops short of describing permission requirements, prior-owner behavior, or what the reason field does, which is what a careful caller would still want.

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%; the description reinforces assignee_user_id with a source and failure mode beyond the schema, and id is documented. However, the `reason` parameter is undocumented in both the schema and the description, so one parameter's purpose and effect (is it recorded? visible to the new owner?) is left entirely to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Change who owns a lead') that is distinguishable from siblings like crm_update_lead and crm_move_lead, which the name alone would not clarify. The parenthetical scope note ties the action to a concrete effect rather than a generic 'update'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit prerequisite workflow: call crm_list_workspace_members first and use a valid user id, because unknown ids fail. It does not, however, state when to prefer this over crm_update_lead (which may also touch ownership) or crm_move_lead, so routing between siblings is only partially resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconfigure_telegram_botRe-apply Telegram bot commandsAInspect

Re-apply the bot's commands and menu button (for private and group chats) — use when the bot menu looks wrong. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It adds useful context that the operation is free (no credit cost) and re-applies menu button settings across chat types, but it does not state permissions/auth needs or whether it's idempotent or safe to repeat.

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 compact sentence, front-loaded with the action and followed by the trigger condition and cost. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers purpose, trigger, and cost. Return value behavior is unspecified but low-stakes for a re-apply operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter (id) is fully documented in the schema as a UUID sourced from list_agents, so the description adds nothing beyond it. With 100% schema coverage, a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (re-apply) and resource (the bot's commands and menu button), scoped to private and group chats. It is clearly distinct from connect/disconnect_telegram_bot, though it doesn't name a sibling explicitly.

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?

"Use when the bot menu looks wrong" gives an explicit trigger condition for choosing this over other Telegram tools. It does not name alternatives or exclusions, but the use case is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconnect_client_mailboxReconnect an own mailboxBInspect

Retry the SMTP/IMAP connection of a mailbox in status error and refresh its status. No credits.

NameRequiredDescriptionDefault
mailbox_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. It does disclose two useful traits: the operation is a retry against an already-failed mailbox and that it consumes no credits. It does not say what happens on repeated failure, whether the status is only refreshed on success, or what permission/ownership is required.

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 with the action and precondition front-loaded and no filler. The trailing 'No credits.' fragment is terse but earns its place as a cost signal.

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 one-parameter retry action with no annotations and no output schema, the description covers what the tool does and its cost, but leaves the post-condition (what status becomes) and failure behavior unexplained, which an agent needs to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single required mailbox_id, so the description must compensate and it largely doesn't — 'a mailbox' only hints that the id identifies the target. No format, source (list_client_mailboxes), or validity constraints are given.

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 (retry the SMTP/IMAP connection) and resource (a mailbox), plus a precondition (status error). This is distinguishable from connect_client_mailbox by the retry/in-error framing, though the description never names that sibling.

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 'in status error' clause gives an implied trigger condition, which is more than nothing. But it doesn't say what to do if the mailbox is not in error, nor point to connect_client_mailbox / disconnect_client_mailbox as the alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reconnect_linkedin_accountReconnect a LinkedIn accountAInspect

Re-authenticate a LinkedIn account whose session died. Creates a NEW account id upstream: past outreach stays attached to the old id, so per-account history can look empty afterwards and running campaigns may need re-pointing. Only call after the user reviewed preview_reconnect_linkedin_account and approved.

NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the critical non-obvious side effect: a NEW upstream account id is created, so past outreach stays on the old id, history can appear empty, and campaigns may need re-pointing. It stops short of the returned value, token handling, idempotency, or error behavior, so it is strong but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool does, then the consequence, then the approval gate. Nothing is 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 no-annotation mutation with no output schema, it covers the main risk (identity change and its downstream effects) and the approval prerequisite. It omits what the call returns, especially whether the new account id comes back to the caller, which matters given the described id churn.

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?

The schema has 0% description coverage and the description never explains what `id` refers to (old account id? workspace id?). 'Per-account history stays attached to the old id' hints the id is an account identifier but does not resolve whether this is the id being replaced or a new one.

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 ('re-authenticate a LinkedIn account whose session died') and the triggering condition, which clearly separates it from connect_linkedin_account (new connection) and disconnect_linkedin_account.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the precondition: only call after the user reviewed `preview_reconnect_linkedin_account` and approved. That names the alternative tool and the condition selecting this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_campaign_email_replyReload a reply from the providerAInspect

Fetch the latest reply text for an email from the sending provider (when a reply shows as empty). No credits, nothing sent.

NameRequiredDescriptionDefault
email_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the cost/side-effect profile: "No credits, nothing sent." That is genuinely useful. However, it doesn't say whether the fetch also overwrites the stored reply locally, what happens if the provider still returns nothing, or whether any permission/connection requirement applies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with the action front-loaded, the trigger condition in a parenthetical exactly where it helps, and a short side-effect clause. Nothing is redundant.

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 single-parameter refresh tool with no output schema and no annotations, the description covers purpose and cost but omits what the call returns on success (refreshed reply object? empty?), error behavior when the provider has no new text, and whether prerequisite connections are needed.

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 0% with one required parameter, and the description only implies that the single identifier refers to a campaign email; it doesn't say whether it's the campaign email ID, thread ID, or reply ID, nor any format expectations. The context "for an email" gives partial meaning but leaves the gap unfilled.

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: fetch/reload the latest reply text for an email from the sending provider. The parenthetical clarifies the motivating symptom (empty reply), which separates it in spirit from read-only siblings like get_campaign_email. It doesn't explicitly name the sibling it supersedes, so it falls short of 5.

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?

"(when a reply shows as empty)" gives an explicit trigger condition for invoking this instead of a plain get. It stops short of naming alternatives (get_campaign_email, list_campaign_replies) or stating when not to use it, so no 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_agent_documentRemove a knowledge file from the agentBInspect

Remove an uploaded material from the agent (see get_agent → documents[].url). Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
urlNodocuments[].url (preferred)
filenameNodocuments[].filename if you have no url

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and 'Free' is a genuinely useful disclosure about credit consumption that isn't in any structured field. That said, it omits whether the removal is reversible, whether it takes effect immediately on the agent's knowledge, and what permissions are required — significant gaps for a destructive operation with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus a one-word cost note — nothing padding. The core action is front-loaded, though the mid-sentence parenthetical slightly interrupts reading flow.

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 simple three-parameter, 100%-documented removal tool with no output schema, this covers the minimum. But with zero annotations on a destructive call, an agent still lacks confirmation of irreversibility and side effects, which is exactly what the description would need to supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already labels url as '(preferred)' and explains filename as the fallback, plus documents the id source. The description only restates the documents[].url hint, adding no format or precedence detail beyond the schema, 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?

Specific verb ('Remove') plus a scoped resource ('an uploaded material from the agent'), which clearly separates it from add_agent_document and delete_agent. Minor friction: the name says 'document' while the description says 'material', requiring a small inference that the two are the same object.

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 the verb and resource, and the parenthetical pointing at get_agent → documents[].url tells the agent where to source the identifier. However, it gives no explicit when-to-use/when-not guidance and doesn't mention that no preview_* counterpart exists, so the agent must infer this is the direct destructive path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_agent_from_meetingRemove the agent from a live callAInspect

The agent leaves the live Google Meet call right now. Only works while the meeting is in progress. Only after preview_remove_agent_from_meeting and user approval.

NameRequiredDescriptionDefault
meeting_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses immediacy, the live-meeting precondition, and the required preview plus user approval, though it does not discuss permissions, irreversibility, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and followed by the critical constraints. There is no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action, timing, and approval gate, which are the core behaviors for this mutation tool. However, with no annotations and an undocumented meeting_id, it lacks enough detail about parameter sourcing and side effects to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never explains meeting_id, where to obtain it, or its expected format. The parameter name is self-explanatory, but the description does not compensate for the missing schema documentation.

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: the agent leaves a live Google Meet call immediately. It clearly distinguishes this action from previewing it by naming preview_remove_agent_from_meeting as the prerequisite.

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 says it only works while the meeting is in progress and only after preview_remove_agent_from_meeting and user approval. These are clear when-to-use and prerequisite conditions, leaving little to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_campaign_linkedin_accountRemove a LinkedIn account from a campaignBInspect

Stop using an account for this campaign; its pending contacts move to the remaining accounts. Already-sent invites stay.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
account_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose real consequences: pending contacts are reassigned to remaining accounts and already-sent invites persist. However, it omits whether the removal is reversible, what happens if this is the last account (where do pending contacts go), permission requirements, and whether the account stays connected elsewhere.

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, zero filler, with the primary action front-loaded and the side effects immediately after. Nothing to trim.

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 two-parameter mutation with no annotations and no output schema, the description covers the main side effect but leaves the second parameter undocumented and gives no edge-case or reversibility information an agent would need to act safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% — only campaign id is documented ('from list_campaigns') and account_id is bare. The description adds no parameter meaning at all, not even clarifying that account_id refers to a LinkedIn account attached to that campaign.

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 in context: 'Stop using an account for this campaign.' That clearly differentiates it from add_campaign_linkedin_account and list_campaign_linkedin_accounts, though it never names a sibling to sharpen the boundary against disconnect_linkedin_account.

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 by the imperative phrasing — an agent can infer it is for detaching an account mid-campaign. There is no explicit when-to-use vs. when-not, no prerequisites, and no pointer to the related disconnect_linkedin_account or listing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_workspace_memberRemove a teammateAInspect

Remove a member: they immediately lose access to this workspace (their account gets its own empty workspace). Re-adding needs a new invitation. Admins only. Only call after the user approved preview_remove_workspace_member.

NameRequiredDescriptionDefault
user_idYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so: it discloses the immediate consequence (loss of access), what happens to the removed user's account, the reversal cost (new invitation required), and the permission requirement (admins only). This is real behavioral context beyond the tool name.

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?

Four short clauses, all load-bearing: effect, side effect, reversibility, permission, and the preview precondition. The operational constraint is at the end where it acts as the final gate before invocation.

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 single-parameter destructive tool with no annotations and no output schema, the description covers consequences and authorization well enough to call safely. The only missing piece is how to source user_id, which leaves a small but real gap.

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?

There is one required parameter, user_id, at 0% schema description coverage, and the description never mentions it, its format, or where to obtain the identifier (e.g., from crm_list_workspace_members). One small clarifying clause would have closed this gap entirely.

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+resource ('Remove a member') and immediately disambiguates from the similarly-named preview_remove_workspace_member via the 'Only call after approval' clause. The scope (this workspace) and the effect (their account gets its own empty workspace) make clear exactly what is removed.

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 gates the call on two conditions: admins only, and prior approval of preview_remove_workspace_member. That is a named alternative plus the condition that selects it, so the agent has no inference to do.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_custom_audienceRename a custom audienceBInspect

Rename a custom audience. Reversible, no credits.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
nameYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does add real behavioral context — that the operation is reversible and consumes no credits — which is valuable for a mutation tool, but it omits permission requirements, failure modes, and whether the new name must be unique.

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 no waste. The core action is front-loaded, though the fragment style ('Reversible, no credits') is terse rather than structured.

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 simple two-parameter rename with no output schema, the description covers the essentials plus reversibility and cost. However, with no annotations and half the parameters undocumented, it leaves the agent without enough behavioral or parameter detail to call it confidently.

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?

Two required parameters with only 50% schema description coverage; the 'name' parameter has no description in the schema. The tool description says nothing about either parameter, so it does not compensate for the gap — an agent gets no guidance on the ID format or naming 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 (rename) and resource (custom audience), matching the title. An agent can distinguish it from the many sibling audience tools like update_custom_audience_contact or create_custom_audience, though it doesn't explicitly contrast 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?

Provides no when-to-use guidance, no prerequisites, and names no alternatives. The agent must infer that this is the tool for changing only an audience's name versus other update operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_in_campaign_threadSend a human reply in a conversation (REAL email)BInspect

Send the email to the contact now. REAL email. Only after the user approved preview_reply_in_campaign_thread. Consider takeover_campaign_thread first so the AI stops answering.

NameRequiredDescriptionDefault
bodyYes
subjectNo
body_htmlNo
thread_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden, and it does deliver the single most important behavioral fact: this sends a REAL email and is therefore not a simulation. Beyond that it discloses nothing — no permission requirements, no idempotency/failure behavior, no consequence of sending to the wrong thread, no return indication.

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?

Four terse sentences, front-loaded with the action, and the 'REAL email' fragment earns its place as emphasis on the side effect. Minor flaw: the hard approval prerequisite trails after the imperative 'send now', which would matter more if the agent skimmed the first sentence only.

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?

No output schema and no annotations mean the description must cover return behavior and side effects, and it covers neither. For an irreversible real-email send with four undocumented parameters, an agent cannot tell what a success response looks like, what happens on partial failure, or how body vs body_html are resolved.

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 0% across all four parameters and the description mentions none of them. Critically, it never explains the relationship between 'body' and 'body_html' (alternative representations? both sent?) or what 'subject' does in an existing thread, leaving two optional parameters entirely opaque.

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 — sending an actual email reply within a campaign conversation — and the title reinforces the human/reply framing. It distinguishes itself from its preview sibling by name, though it never explains how it differs from the similarly named reply_to_campaign_email, which is a real source of selection ambiguity.

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 gates invocation on prior user approval of preview_reply_in_campaign_thread, which is exactly the kind of when-to-use condition an agent needs for an irreversible send. It also names takeover_campaign_thread as a prerequisite consideration so the AI stops auto-answering. No guidance is given for choosing between this and reply_to_campaign_email.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_to_campaign_emailSend a manual reply to a lead (REAL email)AInspect

Send the reply immediately in the lead's thread (bypasses daily limits). REAL email. Only after the user approved the exact text from preview_reply_to_campaign_email.

NameRequiredDescriptionDefault
bodyYes
email_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses that the send is immediate, that it is an actual email to a real lead (irreversible outward-facing side effect), that it bypasses daily limits, and that it requires prior user approval. Missing are what mailbox/sender is used and what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and the immediate-send consequence, then the safety gate. Every sentence earns its place, including the emphatic 'REAL email'.

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-annotation, no-output-schema mutation tool the description covers the critical safety profile well, but it leaves the agent without the two facts it needs to construct a valid call: what `email_id` refers to and where it comes from, and what the call returns on success/failure.

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 0% for both parameters and the description adds almost nothing: `body` is only indirectly implied to be the text approved in the preview, and `email_id` (which email record, and where to obtain it) is never explained.

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+resource: send a reply into the lead's existing thread, and 'REAL email' vs the preview variant. It distinguishes itself from preview_reply_to_campaign_email but never clarifies how it differs from the sibling reply_in_campaign_thread, so sibling differentiation is incomplete.

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 after the user approved the exact text from preview_reply_to_campaign_email' is an explicit precondition naming the prerequisite tool, and 'bypasses daily limits' implies it can be used when queued sends are blocked. No explicit when-not guidance beyond that gate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resume_channelResume one channel of a campaignCInspect

Resume a paused channel on a campaign.

NameRequiredDescriptionDefault
idYes
channelYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. Beyond the word 'Resume', it says nothing about side effects (e.g. whether outreach immediately resumes sending), idempotency when the channel is already active, return values, or authorization 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?

A single front-loaded sentence with the verb and object first and no filler. It is efficient, though it errs on the side of underspecification rather than wordiness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 0% parameter description coverage, the definition leaves key information missing for a mutating tool: what 'id' refers to, what state change occurs, and what happens on error or repeat invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for both parameters. It hints that 'channel' is a subordinate piece of a campaign, but leaves the critical ambiguity of 'id' unresolved — an agent cannot tell from the text whether 'id' is the campaign id or a channel id. The enum values are only documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Resume) and resource (a paused channel on a campaign), which is clear enough to distinguish it from sibling pause_channel. However it does not explicitly name the counterpart tools (pause_channel, pause_campaign) or clarify how the campaign-level vs channel-level resume differ.

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 phrase 'a paused channel' implies the precondition that the channel must already be paused, which is a minimal form of usage guidance. There is no explicit statement of when to use this versus pause_campaign/pause_channel, nor any note about required permissions or ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_campaign_email_preparationRetry failed email preparationAInspect

Put prepared emails that failed validation/generation back in the queue (max 3 attempts each). Nothing is sent.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that retries are capped at 3 attempts per email and that nothing is sent, but it omits permission requirements, what happens after the cap is reached, and what state or return the caller should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the retry condition front-loaded and the no-send safety note immediately following. Every clause carries useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool whose id is fully documented in the schema, the description provides enough to understand the action, trigger, attempt limit, and safety profile. It leaves edge behavior such as post-cap outcomes unspecified, but the core invocation context is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema coverage is 100%, with id documented as a campaign UUID from list_campaigns. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb (put back in the queue), the resource (prepared emails), and the exact condition (failed validation/generation). It implicitly distinguishes itself from prepare_campaign_emails by scoping the action to failures, but does not name that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger condition is clear: use it for emails that failed validation or generation. It also notes the max-3-attempt limit, but does not say when not to use it or explicitly point to prepare_campaign_emails for first-time preparation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_audienceSave an audienceAInspect

Save a campaign audience from the same filter set as search_audience (call that first to check the counts). Returns the audience id to pass to create_campaign. No outreach happens here, no credits.

NameRequiredDescriptionDefault
nameNoAudience name (auto-generated when omitted)
filtersYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still discloses the two behaviors an agent would most worry about for a write tool: it sends nothing ('no outreach happens here') and costs nothing ('no credits'). It also names the return value. It does not say whether re-saving the same filters creates a duplicate audience or how persistence/naming collisions are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, then prerequisite, then output destination and cost disclaimer. No filler, no restatement 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 filter-heavy creation tool with no output schema and no annotations, it covers the workflow, the non-side-effects, and the return value. The remaining gap is filter field semantics, which it mitigates by pointing at search_audience rather than enumerating fields.

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?

At 50% schema coverage and a deeply nested filters object of ~27 fields, most properties (city, tags, industries, searchMode, companySize, mustHave*) have no per-field docs. The description does compensate usefully by tying the filter shape to search_audience, implicitly deferring semantics to that tool, but it adds no field-level meaning itself; the auto-naming behavior of `name` lives only in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Save a campaign audience') plus where the input comes from ('the same filter set as search_audience'). This cleanly separates it from search_audience (preview counts) and create_campaign (consumer of the returned id).

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?

Gives an explicit prerequisite ('call that first to check the counts') and an explicit downstream step ('Returns the audience id to pass to create_campaign'). Also excludes a wrong expectation ('No outreach happens here'), so the agent knows this is not a launch step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_kommo_credentialsSave Kommo app credentialsAInspect

Kommo private integration step 1: store the Integration ID (UUID) and Secret key of the Vendo app the client created in their Kommo account. The secret is never echoed back. Returns the redirect_uri to paste into Kommo. Then connect_crm_integration provider=kommo.

NameRequiredDescriptionDefault
client_idYesKommo Integration ID (UUID)
client_secretYesKommo Secret key

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and usefully discloses that the secret is never echoed back and that the tool returns a redirect_uri to paste into Kommo. It does not cover overwrite behavior, validation failures, or permission requirements, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the step and required credentials, then the important secrecy behavior and return value. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the purpose, return value, secrecy behavior, and next step even though there is no output schema. Minor operational details such as overwrite semantics and error conditions are omitted, but the essential context for invoking the tool is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description adds useful context that these belong to the Vendo app created in the client's Kommo account, but it does not add format or validation details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: storing Kommo Integration ID and Secret key credentials. It also distinguishes this as step 1 of a two-step Kommo integration flow, making the boundary with connect_crm_integration clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the sequencing: use this first to store credentials, then call connect_crm_integration with provider=kommo. The next action and condition are directly provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_scan_dataSave scan facts onto the agentAInspect

Save company facts (team, contacts, social links, pricing, employee count, auto re-scan) onto the agent — what the app does after a scan. Side effects: stores them in the agent, creates/updates the company and people records, fills BLANK contact channels (never overwrites manual ones). Not needed after deep_scan_agent with persist=true. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
pricingNo
contactsNo
directorsNoTeam / management
auto_updateNo
company_nameYes
social_linksNo
employee_countNo
company_websiteYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it discloses side effects including storing facts on the agent, creating/updating company and people records, and filling only blank contact channels without overwriting manual ones. It still leaves out permissions, error behavior, and whether non-contact fields are overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences, front-loaded with the core action, then side effects, then the key exclusion and cost note. Every sentence adds useful information without repetition.

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 mutation tool with 9 nested parameters, no annotations, and no output schema, the description covers high-level purpose and important side effects but leaves significant gaps in parameter semantics and return behavior. It is adequate as a summary but not complete enough for an agent to invoke confidently without inspecting the schema.

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 22% across 9 parameters, so the description needs to compensate but only partially does. It names broad data categories but omits required fields like id, company_name, and company_website, and does not clarify nested contacts, directors, or auto_update structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: save company facts (team, contacts, social links, pricing, employee count, auto re-scan) onto the agent. It also distinguishes the operation from deep_scan_agent by noting it is not needed when persist=true, giving an agent enough to identify the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context ('what the app does after a scan') and one explicit exclusion ('Not needed after deep_scan_agent with persist=true'). However, it does not name other relevant alternatives such as scan_agent_website or set_agent_company, so the routing guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_agent_websiteScan the agent's website structureAInspect

List the pages of a website (path, title, description, keywords) for this agent — used by the page-navigation feature. Costs 2 credits. Read-only for the agent (nothing saved).

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
website_urlYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses a concrete cost (2 credits), states the operation is read-only with nothing persisted, and describes the return shape. It omits operational limits such as how many pages are crawled, behavior on unreachable sites, or whether a feature flag must be enabled.

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?

Roughly two compact clauses that are front-loaded with the action and return fields, then the cost and safety notes. Nearly every phrase earns its place, though "used by the page-navigation feature" reads as a somewhat unmotivated aside without explaining whether the feature must be enabled.

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 2-parameter, no-annotation, no-output-schema tool, the description does useful work by listing returned fields and stating cost/side effects. It still leaves gaps an agent needs: the website_url format and source, and the crawl scope or limits, neither of which is covered by schema or annotations.

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 50%: `id` is documented in the schema (UUID from list_agents) but `website_url` has no schema description. The description only weakly compensates by implying the URL is the site whose pages are listed; it does not say whether it must be the agent's own configured site, a full URL with scheme, or a different domain.

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 gives a specific verb and resource ("List the pages of a website") and enumerates what each page record contains (path, title, description, keywords), so the agent knows exactly what comes back. It also scopes the call to "this agent" and ties it to the page-navigation feature. It does not distinguish itself from close siblings like scan_website_quick or deep_scan_agent, which keeps it below 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the read-only note ("nothing saved") hints that a separate persistence step like save_scan_data is needed if results must be kept, and the credit cost hints at cheaper alternatives. But no sibling is named and there is no explicit when-to-use/when-not statement, so the agent must infer the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_website_quickQuick website scanAInspect

Crawl a website's structure (sitemap, top pages) BEFORE creating an agent. Useful when deciding which company to set on the agent. Costs ~2 credits.

NameRequiredDescriptionDefault
website_urlYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It discloses cost (~2 credits) and crawl scope (sitemap, top pages), which is useful. However, it omits auth requirements, rate limits, or output behavior, leaving gaps for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and scope, followed by timing guidance. Zero waste.

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?

Covers purpose and cost, which is helpful. But without annotations or an output schema, the description should ideally state what the scan returns or any limitations. It's minimally adequate but leaves behavioral and return-value gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 1 parameter and 0% schema description coverage, the parameter is self-evident from the name 'website_url' and type 'string'. The description adds no parameter details but none are needed; baseline 4 applies for 0 described params.

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 ('Crawl') and resource ('website's structure') with parenthetical examples (sitemap, top pages). It is distinguishable from 'deep_scan_agent' and 'preview_deep_scan', though it doesn't explicitly name them.

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 clear timing ('BEFORE creating an agent') and a use case ('deciding which company to set on the agent'). It lacks explicit alternatives or exclusions (e.g., when to prefer deep_scan_agent), so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

schedule_campaign_deliverySchedule prepared emails for deliveryAInspect

Spread all ready prepared emails over the campaign's working-hour slots; they are then SENT for real automatically. Only after the user approved preview_schedule_campaign_delivery.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly discloses the key side effect: emails are SENT for real automatically after scheduling. It also states the approval prerequisite, which is essential safety context. It does not cover cancellation, failure modes, or what happens if slots are unavailable, but the critical behavioral facts are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with zero wasted words. The operational effect is front-loaded, and the approval prerequisite follows immediately. The structure is appropriately sized for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, one fully described parameter, and no output schema, the description includes the essential information: what it does, that emails are really sent, and that prior preview approval is required. It omits secondary details such as post-scheduling cancellation or failure behavior, so it is not fully exhaustive but is complete enough 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?

Schema coverage is 100% for the single id parameter, and the schema already documents that the id is a campaign UUID from list_campaigns. The description adds no additional parameter meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/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: it spreads ready prepared emails over the campaign's working-hour slots, then sends them automatically. It distinguishes this from preparation and preview by emphasizing emails are SENT for real and that prior approval of preview_schedule_campaign_delivery is required. An agent can tell this apart from prepare_campaign_emails, preview_schedule_campaign_delivery, and send_campaign_emails_now.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear prerequisite: only use after the user approved preview_schedule_campaign_delivery. It does not explicitly mention alternatives such as send_campaign_emails_now or conditions when not to use this tool, so it falls short of full when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_activity_feedLive activity feed for an SDR searchBInspect

Recent discovery + outreach events for one SDR search, newest first — the same ticker the dashboard shows. Read-only, free.

NameRequiredDescriptionDefault
limitNoDefault 40
search_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description usefully discloses that the call is read-only and free, and that results are ordered newest first. It stops short of describing pagination behavior around the limit parameter, retention window of 'recent' events, or auth/scope requirements for reading another SDR search's activity.

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 compact sentence that front-loads the resource and ordering before the analogy, with zero filler. Nothing here is wasted or repeated from structured fields.

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 two-parameter, no-output-schema feed tool the description covers the essentials — what it returns, ordering, and read-only/free semantics — but leaves the closest sibling (sdr_recent_signals) undifferentiated and says nothing about the limit parameter's effect, which an agent needs to call it well.

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 50%: limit has only 'Default 40' and search_id has no description at all. The description implies search_id scopes to 'one SDR search' but adds no format, source, or discovery hint for obtaining the ID, and says nothing about what limit controls or its bounds.

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 resource (discovery + outreach events for one SDR search) and a clear ordering (newest first), plus an analogy to the dashboard ticker that anchors what it returns. It does not, however, disambiguate itself from the sibling sdr_recent_signals, which an agent could easily confuse with an activity feed.

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 explicit guidance on when to call this versus sdr_recent_signals, sdr_outreach_summary, or sdr_run_states, all of which surface similar SDR activity. 'The same ticker the dashboard shows' implies a monitoring use case but leaves the routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_bulk_delete_peopleRemove several contacts (no restore)AInspect

Removes up to 500 contacts of one search. No restore. Only after sdr_preview_bulk_delete_people was approved.

NameRequiredDescriptionDefault
idsYes
search_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the two critical traits: irreversibility ('No restore') and the preview-approval gate. It omits partial-failure behavior, whether deletion is atomic across the 500 ids, and any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse clauses, front-loaded with the destructive action and its blast radius, then the safety gate. Every clause carries load-bearing information.

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 destructive, 2-required-parameter tool with no annotations and no output schema, the irreversibility and approval precondition are the essentials and are present. It is still thin on outcome reporting and failure semantics an agent would need before firing an irreversible 500-record delete.

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 0%, so the description must compensate. 'Up to 500 contacts of one search' does convey the ids cap and the single-search constraint, but neither parameter is named, and it never states that ids are person identifiers or that search_id is the UUID returned by sdr_create_search.

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, resource and binding scope: removing up to 500 contacts belonging to a single search. It is distinguishable from the single-record sdr_delete_person only by inference from 'contacts of one search' and the bulk/preview pairing, never stated explicitly.

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 hard prerequisite — 'Only after sdr_preview_bulk_delete_people was approved' — which tells the agent exactly when it is allowed to call this. It does not say when to prefer sdr_delete_person or sdr_delete_search instead, so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_company_detailHot company popupBInspect

Read-only. One company of a search: company card (website, size, location, links), decision-makers found with fit, other known people at the company and its live signals. part=card returns only the card and people pool (slower source, up to 20 s).

NameRequiredDescriptionDefault
nameNo
partNo
domainNo
search_idYes
company_idYescompany_id from sdr_company_heat

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden: it does declare 'Read-only' and discloses a meaningful latency trait ('slower source, up to 20 s') for part=card, which is real behavioral value. It omits auth/credit requirements, what happens when a company has no signals or people, and whether data is cached or freshly fetched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the read-only nature and the resource scope, then the return payload, then the part variant. Little waste, though 'links' and 'fit' are undefined jargon.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 5 parameters at 20% coverage, the description does double duty by listing returned fields, which helps. It is still incomplete on the role of name/domain and on failure or empty-result 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 coverage is only 20% (only company_id is documented, pointing at sdr_company_heat). The description compensates partially by explaining the part enum's two modes and the cost of part=card, but leaves search_id, name and domain unexplained.

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 ('One company of a search') and enumerates the returned content: company card fields, decision-makers with fit, other people, live signals. This is far more specific than the title 'Hot company popup', though it never names the sibling it differs from (e.g. sdr_company_heat vs sdr_get_person_detail).

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 phrase 'One company of a search' combined with the required search_id/company_id implies this is a drill-down from a search or from sdr_company_heat. The part=card variant is given a use context (card + people pool only, slower). There are no explicit when-not conditions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_company_heatHot companiesAInspect

Read-only. Companies ranked by live signal heat, with ICP fit, signal types and contact status. One search (search_id, pages via offset up to any depth) or all searches merged (first 500 rows, offset + limit ≤ 500).

NameRequiredDescriptionDefault
limitNo
offsetNo
search_idNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and delivers key details: it is read-only, describes pagination behavior per mode, and states the 500-row cap for merged searches with offset+limit ≤ 500. It does not cover auth needs or rate limits, but the core behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with 'Read-only' and the core purpose, followed by a compact statement of the two query modes and pagination limits. Zero waste, efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 3 parameters, the description adequately covers purpose, modes, and constraints for correct invocation. It lacks detail on return shape and the meaning of 'signal heat' ranking, but those are secondary for tool selection.

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 0%, so the description must compensate. It contextualizes all three parameters (search_id determines single-search mode; offset enables pagination; limit is capped in merged mode), but it omits defaults, format requirements (e.g., UUID), and the behavior when search_id is omitted (full merged mode). Partial compensation yields a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (companies ranked by live signal heat) and enumerates returned fields (ICP fit, signal types, contact status), making the tool's function clear. It does not explicitly differentiate from siblings like sdr_company_detail or sdr_recent_signals, preventing 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining ranked hot companies and distinguishes two modes (single search vs all merged), but it provides no explicit guidance on when to choose this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_configure_hunterConfigure one hunterAInspect

Turns one hunter on/off and/or sets the search fields it reads (only those listed in its inputs): competitor_pages (Competitor Engagement/Switching), target_cities (local business hunters, email discovery), decision_roles (Decision-maker matching, Website profile), linkedin_search_queries (LinkedIn hiring), industry_keywords / exclude_keywords / relevant_topics. Settings are search-wide.

NameRequiredDescriptionDefault
sourceYesHunter source id (see sdr_list_hunters)
enabledNo
settingsNo
search_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose one meaningful trait: settings apply search-wide, not per-hunter. However it says nothing about what happens to collected data when a hunter is disabled, whether changes are immediate or reversible, or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and its scope lead the sentence, and the parenthetical hunter mappings are dense but carry real content. It is a single long sentence with little waste, though the settings list could be structured more scannably.

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 mutation tool with nested objects, no annotations, and no output schema, the description covers the settings semantics well but skips required-parameter meaning (search_id, source), the effect of toggling enabled off, and any authorization or side-effect expectations. Adequate but leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description must compensate, and it does by mapping settings keys (competitor_pages, target_cities, decision_roles, linkedin_search_queries, industry/exclude keywords/topics) to the hunter types that consume them. It still leaves the structure of relevant_topics and linkedin_search_queries objects, and the role of enabled/search_id, to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource: turn one hunter on/off and set the fields it reads. The word 'one' implicitly distinguishes it from the bulk sibling sdr_set_hunters and from the narrower sdr_pause_hunter/sdr_resume_hunter, though those siblings are never named. Purpose is unambiguous without opening the 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?

It gives an important scoping rule ('only those listed in its inputs' and 'Settings are search-wide') that tells the agent which settings matter for which hunter, but it never says when to use this versus sdr_set_hunters, sdr_pause_hunter, or sdr_resume_hunter. Usage is implied by the verb rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_daily_by_hunterSignals per day per hunterCInspect

Read-only. Station sparklines: signals per day for every hunter of a search (days 2–60, default 14).

NameRequiredDescriptionDefault
daysNo
search_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully states 'Read-only' and the default window of 14 days, but says nothing about what a 'sparkline' returns, whether results are aggregated per hunter or interleaved, what happens with hunts having no signals, or any auth/rate considerations.

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 with the read-only qualifier and the range/default front-loaded. The only inefficiency is the opaque word 'Station', which spends space without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema coverage on two parameters, the definition should explain the return shape and how it differs from sibling signal tools. Neither is present, so an agent cannot confidently pick or interpret this call.

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 0%, so the description must compensate for both parameters. It does add a meaningful default (14) and the semantic window for 'days' beyond the min/max bounds, but the required search_id — the one parameter that determines which search's hunters are covered — is never explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

It conveys the resource and rough shape (signals per day, per hunter, scoped to a search), but 'Station sparklines' is unexplained jargon and the tool is never distinguished from the near-identical sibling sdr_hunter_daily or from sdr_recent_signals / sdr_signal_stats. An agent would have to guess which daily-signal tool to call.

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 when-to-use guidance, no exclusion, and no named alternative, despite a dense cluster of closely related siblings (sdr_hunter_daily, sdr_signal_stats, sdr_recent_signals, sdr_list_hunters). Nothing tells the agent how to choose this over those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_delete_outreachDelete the SDR outreach campaign (irreversible)AInspect

Delete the SDR outreach campaign. The Signal Search and its hunters CONTINUE running. Only call after sdr_preview_delete_outreach.

NameRequiredDescriptionDefault
search_idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It usefully clarifies that the search and hunters are unaffected, and the title flags irreversibility. It does not say what happens to associated outreach content, leads, or whether auth/ownership constraints apply, leaving meaningful behavioral gaps for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler, ordering the action first and the safety prerequisite last. Every sentence earns its place.

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 one-parameter destructive tool with no annotations and no output schema, it covers the essential scope and the preview prerequisite but omits the semantics of search_id and the downstream effects of deletion. Adequate but with clear gaps.

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?

The single parameter search_id has 0% schema description coverage and the description never explains what it identifies or where it comes from (e.g., the id returned by sdr_create_search/sdr_get_search). With zero compensation for an undocumented parameter on a destructive tool, this is weak.

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 ('Delete the SDR outreach campaign') and immediately disambiguates scope by noting the Signal Search and its hunters keep running, which separates it from sdr_delete_search and delete_campaign. An agent can pick this tool without opening the 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?

Gives an explicit prerequisite: 'Only call after sdr_preview_delete_outreach.' That names the required preceding tool, which is strong guidance. It does not state when-not to call (e.g., mid-launch conditions) or how it differs from the preview sibling beyond ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_delete_personRemove a contact (no restore)AInspect

Removes one contact from the search: hidden from lists, counts, exports and outreach. No restore, no refund. Only after sdr_preview_delete_person was approved.

NameRequiredDescriptionDefault
idYes
search_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does well: it discloses consequences (hidden from lists, counts, exports and outreach) and irreversibility ('No restore, no refund'). It is silent on permissions, partial-failure behavior, and whether the contact still exists as an entity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, effect first, irreversibility second, gating prerequisite last. No filler; every clause carries decision-relevant information.

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?

A destructive, non-annotated, no-output-schema tool needs both consequence disclosure (present) and parameter/return clarity (absent). What happens on an invalid or already-deleted id, and what the call returns, are unstated.

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 0%, so the description must compensate and largely does not. 'One contact' and 'from the search' only weakly imply that id is the person and search_id the search scope; the UUID formats, the relationship between the two, and any constraints remain undocumented.

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 ('Removes one contact from the search') with scoping that implicitly separates it from the bulk sibling sdr_bulk_delete_people. It does not name that alternative explicitly, so the differentiation is inferential rather than stated.

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 ordering prerequisite: 'Only after sdr_preview_delete_person was approved,' which tells the agent exactly when this tool is legal to call and names the gating sibling. It stops short of saying when not to use it (e.g., multiple contacts -> bulk delete).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_eventsLive hunter events (polling)AInspect

Read-only. What the hunters are doing right now (queries, companies resolved, signals saved, contacts found). Pass since = next_since of the previous call to get only new events. Best effort: last 150 events per search, lost on restart.

NameRequiredDescriptionDefault
limitNo
sinceNoISO timestamp
search_idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does well: it declares 'Read-only' and discloses the best-effort nature ('last 150 events per search, lost on restart'). This retention caveat is exactly the kind of behavioral context an agent needs and would not otherwise know.

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?

Front-loads 'Read-only', then content, then polling mechanics, then caveats. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling/read tool with no output schema, the description covers safety (read-only), incremental mechanics (next_since), and limits (150 events, reset behavior). It implicitly reveals the next_since return field, which is valuable. The only gap is the unexplained 'limit' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema description coverage, the description must compensate. It fully explains 'since' semantics (the next_since chain) but says nothing about 'limit' (max 200) or 'search_id' beyond what the schema format already states, leaving two of three parameters under-explained.

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 ('what the hunters are doing right now') and enumerates the event types (queries, companies resolved, signals saved, contacts found). It does not differentiate itself from close siblings like sdr_activity_feed or sdr_recent_signals, so an agent must infer which feed to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Pass since = next_since of the previous call to get only new events' gives practical polling guidance, which implies this is an incremental-tail tool. However, there is no explicit when-to-use or when-not-to-use statement versus sdr_activity_feed or sdr_recent_signals, so selection relies on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_export_companies_csvExport companies CSVBInspect

Read-only. CSV of every company the search found: Company, Domain, Heat, ICP fit, Signal count, Signal types, Contact status, Contacts found.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description's opening 'Read-only' is genuinely useful, declaring the operation is non-mutating. It also compensates for the missing output schema by listing the columns. However it says nothing about what happens with an invalid or un-run search_id, whether the result is a file handle or inline CSV, or any size limit.

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 read-only constraint front-loaded and the column list following. The dense column enumeration earns its place as substitute output documentation, though it reads as a raw dump.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The column list usefully stands in for the absent output schema, but for a one-parameter export tool the description omits the critical link between the parameter and the search, plus any failure or scale behavior. Adequate, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter search_id has 0% schema description coverage and the description never mentions it — not its UUID format, not that it identifies the SDR search whose companies are exported. The description must compensate at low coverage and does not.

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 (export a CSV of every company the search found) and enumerates the columns returned. It implicitly separates itself from the sibling sdr_export_people_csv by scoping to companies, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus sdr_export_people_csv, sdr_get_search, or sdr_company_detail, and no mention of preconditions such as the search existing or having completed. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_export_people_csvExport SDR contacts as CSVAInspect

Export the contacts of an SDR search as CSV text (name, title, email, LinkedIn, location, company). Contacts ONLY — deliberately carries no scores or signal reasoning, because this file leaves the platform. Returns the raw CSV; can be large. Read-only, free.

NameRequiredDescriptionDefault
roleNo
companyNo
search_idYes
min_relevanceNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does well: it declares read-only and free (cost), warns the raw CSV 'can be large' (sizing/pagination), and explains the deliberate omission of scores. It stops short of stating permission requirements or filtering behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the columns come first, then the deliberate omission rationale, then output/size and cost. Every clause earns its place with no filler.

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, and the description usefully lists the CSV columns and size caveat, which covers the return side. However, with four undocumented input parameters and no annotation coverage, the input side is left entirely to the schema, which is incomplete.

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 0% across 4 parameters (role, company, search_id, min_relevance), and the description documents none of them — it only implies that the search is identified somehow. No format, filter semantics, or value guidance is added, so the doc fails to compensate for the schema gap.

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 (Export) and resource (contacts of an SDR search) as CSV, and enumerates the exported columns, so an agent knows exactly what it gets. It does not name the nearest sibling (sdr_export_personas_to_audience) to route between them, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'deliberately carries no scores or signal reasoning, because this file leaves the platform' implies when this export is appropriate (external sharing) versus internal analytics, but no explicit when-to-use or alternative is named. Usage must be inferred from the motive clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_export_personas_to_audienceExport SDR contacts to an audienceAInspect

Creates a custom audience from a search's contacts with an email (segment fit by default, optional roles or explicit ids). No credits. The audience can then be used in any campaign.

NameRequiredDescriptionDefault
idsNo
nameYesName of the new audience
rolesNo
search_idYes
fit_segmentNo
only_with_emailNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses that the operation creates a custom audience, requires contacts with an email, defaults to fit segment, and consumes no credits, but it omits permissions, duplicate-handling, side effects, and error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences and front-loads the core action and resource. It avoids repetition and includes only relevant caveats such as no credits and downstream campaign use.

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-annotation mutation tool with six parameters and low schema coverage, the description covers the core operation but leaves out important behavioral details like permissions, audience naming behavior, return values, and failure cases. It is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17%, so the description must compensate. It does add meaning for search_id (source search contacts), fit_segment (fit by default), roles (optional), ids (explicit ids), and only_with_email (contacts with an email), though the name parameter is not discussed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: creating a custom audience from a search's contacts. It adds scope details such as email filtering and segment fit, but it does not explicitly distinguish this from siblings like create_custom_audience or sdr_export_people_csv.

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?

It implies the tool is used to turn an SDR search into a campaign-usable audience and notes segment fit defaults, optional roles, and explicit ids. However, it gives no explicit when-to-use versus alternatives or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_find_citiesFind cities for an SDR searchAInspect

Read-only. Main cities of the given countries (no q), or a name search (q ≥ 2 Latin letters). Use the returned objects as target_cities in sdr_create_search / sdr_update_search.

NameRequiredDescriptionDefault
qNo
limitNoPer country without q (max 30); total with q (max 50)
countriesYesISO-2 or CC:SUB codes, e.g. ['GB','US:FL']

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description usefully declares 'Read-only' and the q >= 2 Latin-letter validation constraint. However, it does not describe what the returned objects contain (fields such as id/name needed to pass into target_cities), nor any rate or result-count behavior beyond what the schema's limit description implies.

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 'Read-only' safety marker, then mode rules, then downstream usage. Every clause carries operational information with zero padding.

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 small 3-param lookup with no output schema, the description covers safety, mode semantics, and intended consumption of results. The main gap is that the shape of the returned objects is only implied ('returned objects as target_cities'), not described.

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 67% and q has no schema description at all; the description compensates by defining q's semantics (name search trigger, 2+ Latin letters). countries and limit are documented in the schema, and the description reinforces countries without repeating limit.

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+resource (find main cities / name search of cities for given countries) and distinguishes its two modes by parameter. It does not name any alternative city-source sibling, but none of the sibling tools overlap, so 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit mode selection: no q returns main cities; q with at least 2 Latin letters performs a name search. It also gives workflow context by naming sdr_create_search / sdr_update_search as the downstream consumers, though it does not state exclusions or failure modes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_generate_agent_signal_profileGenerate an agent's signal profile (Claude)BInspect

Run Claude on the agent's knowledge to (re)generate its signal profile. Persists onto the agent so later Signal Searches reuse it.

NameRequiredDescriptionDefault
agent_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and it partially delivers: it discloses that an LLM (Claude) is invoked, that the result is persisted onto the agent, and that regeneration overwrites/replaces the existing profile. It does not disclose credit/cost implications (notable given siblings like get_balance and get_credit_usage_by_agent), latency, or any failure/auth behavior for what is clearly a mutating, compute-heavy operation.

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 no filler; the action is front-loaded and the persistence side-effect follows immediately. Nothing is wasted or repeated.

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?

There is no output schema and no annotations, and for a single-parameter mutation tool the description covers the essential action and side-effect. However, it omits cost/credit and prerequisite context that an agent would need to decide whether calling Claude here is appropriate, leaving the definition only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description references only 'the agent's knowledge' without ever explaining agent_id — its format, where it comes from, or how to obtain it. With one undocumented parameter, the description fails to compensate for the schema gap, though the parameter name is largely self-explanatory.

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 gives a specific verb and resource ('Run Claude ... to (re)generate its signal profile'), which clearly separates it from the read-only sibling sdr_get_agent_signal_profile. It does not name that sibling or explicitly contrast the two, so an agent still has to infer the routing, but the purpose itself 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'(re)generate' and 'so later Signal Searches reuse it' imply the usage context (profile is a prerequisite for Signal Search and can be refreshed), but there is no explicit when-to-use statement, no mention of when to call the getter instead, and no stated preconditions (e.g. whether the agent needs knowledge data present first).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_agent_signal_profileGet an agent's signal profileAInspect

Read the agent's current signal profile (ICP, offer summary, hunter weights). Returns { exists: false } when nothing's generated yet.

NameRequiredDescriptionDefault
agent_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the not-yet-generated edge case ('Returns { exists: false }'), which is genuinely useful. It says nothing about permissions, whether the read is free/side-effect-free, or the shape of a populated profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence for purpose plus one short sentence for the return edge case; front-loaded, no 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 low-complexity single-parameter read with no output schema, the description is nearly sufficient: it names the resource, the payload fields, and the empty-result case. Only the usage context and the populated response shape are absent.

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?

One required parameter with 0% schema description coverage, so the schema contributes nothing about agent_id. The description implies 'the agent's' profile is keyed by an agent identifier, but adds no format or provenance detail for that id.

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 ('Read the agent's current signal profile') and enumerates the payload contents (ICP, offer summary, hunter weights), which clearly separates it from the sibling sdr_generate_agent_signal_profile and from generic get_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to call this versus alternatives; the natural pairing with sdr_generate_agent_signal_profile (read here, generate there) is left to inference. The exists:false note hints at a check-before-generate workflow but never says it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_outreachGet SDR outreach status for a searchBInspect

Read the SDR outreach campaign — channels enabled, ready/queued/sent counts, current content config.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. 'Read' signals a safe, non-mutating operation and it names the returned fields, but it omits permissions, failure modes, and pagination/rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; every clause maps to what the tool returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately lists the primary return fields, which matters since there is no output schema. However, with no annotations and an undocumented required parameter, an agent still lacks enough context to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single required parameter search_id, and the description never names it or explains its format. The phrase 'for a search' only indirectly hints at the identifier.

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 ('Read the SDR outreach campaign') and enumerates the data returned (channels, counts, content config). It does not explicitly differentiate from close siblings like sdr_outreach_summary or sdr_get_outreach_content, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as sdr_outreach_summary. The only signal is the name and scope 'for a search', leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_outreach_contentGet SDR outreach content (templates)CInspect

Read the configured email subject/body templates and LinkedIn invite template for SDR outreach.

NameRequiredDescriptionDefault
search_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Read' weakly implies read-only behavior, but there is nothing about permissions, what happens on an invalid/missing search_id, or default values when templates are unconfigured.

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 economical sentence with the resource front-loaded and no filler. It is appropriately short for a simple read tool, though it could have spent a few more words on the required identifier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description names the returned content well, but with no output schema and an undocumented required parameter, an agent cannot fully know how to invoke it correctly. Adequate but with an obvious gap around search_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single required parameter, search_id, and the description never mentions it. The agent gets no guidance on what the identifier refers to or how it scopes the returned templates, so the description does not compensate for the coverage gap.

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 verb 'Read' plus the resource ('email subject/body templates and LinkedIn invite template') is specific and concrete about what content is returned. It distinguishes itself from the plain sdr_get_outreach and the rendered sdr_preview_outreach_content by naming templates, though it does not explicitly call out those siblings.

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 vs. sdr_get_outreach, sdr_preview_outreach_content, or sdr_update_outreach_content. The read-the-templates intent is only implied by the verb, so the agent must infer the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_person_detailWhy was this person picked?AInspect

Read-only. Provenance of one contact: hunter, query, triggering signal, scores and the reasoning chain. Needs the search_id the contact belongs to.

NameRequiredDescriptionDefault
idYesContact id
search_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does carry the key trait that this is a non-mutating read ('Read-only.') and that it is scoped to a search. It omits any error behavior (e.g. what happens if the contact is not in that search), rate limits, or permission needs, leaving meaningful gaps for a no-annotation tool.

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 safety trait, then the payload, then the dependency. 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?

There is no output schema, so the description takes on the job of naming the returned content, and it does so concretely (hunter, query, signal, scores, reasoning chain). It is only slightly thin on failure modes and on how the two ids relate beyond the stated ownership.

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 50%: `id` is documented as 'Contact id' but `search_id` is bare. The description compensates by explaining that search_id is the search the contact belongs to, which is exactly the missing semantic. It does not add anything for `id`, keeping it below a 5.

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 concrete operation on a specific resource: retrieving the provenance (hunter, query, triggering signal, scores, reasoning chain) of a single contact. This distinguishes it from aggregation siblings like sdr_company_detail or sdr_get_research, though it never names an alternative directly.

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 an important prerequisite ('Needs the search_id the contact belongs to') which tells the agent it cannot call this standalone. However, it never states when to prefer this over sdr_company_detail, sdr_get_research, or sdr_activity_feed, so usage is only implied by the described payload.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_researchPoll an SDR ICP researchAInspect

Read-only. Pass job_id (from sdr_start_research / a previous poll) or agent_id (while the company profile is still being built, or to get the latest research of a company). Returns status (queued/running/done/error), stages, events and, when done, the result: company dossier and the editable profile (search name, offer, ICP, decision roles, regions, keywords, LinkedIn queries, competitor pages, hunter plan). Poll every 5–10 s.

NameRequiredDescriptionDefault
job_idNo
agent_idNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the burden well: it declares read-only, enumerates the status lifecycle (queued/running/done/error), describes stages/events, and says when the result payload appears. It stops short of explaining failure/retry behavior or how long a job_id remains pollable after completion, which matters for a polling tool.

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?

Front-loads the safety signal ('Read-only'), then identifier usage, then return shape, then cadence — a natural call order. The parenthetical lists are dense but each clause carries information an agent needs; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations exist, so both burdens fall here, and the description enumerates the dossier plus the editable profile fields returned on completion. Combined with the polling interval, an agent has everything needed to call and re-call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description does the work: it explains where job_id comes from and the two distinct conditions for agent_id. The remaining gap is that neither parameter is required (0 required), and the description never states whether exactly one must be supplied or which takes precedence if both are passed.

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 ('Poll an SDR ICP research'), and explicitly frames itself as the read-only counterpart to sdr_start_research. An agent can distinguish it from sdr_get_search, sdr_run_state, and sdr_start_research without opening 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names both entry paths (job_id from sdr_start_research or a prior poll; agent_id while the profile is still building) and gives the polling cadence ('every 5–10 s'). The when-to-use condition for each identifier is spelled out rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_get_research_audienceFirst buyers found by an ICP researchAInspect

Read-only. The instant audience of a finished research: up to ~20 matching people from the Vendo database with company, position, country, LinkedIn, email and why they fit — the wizard's "buyers already found" cards. refresh=true rebuilds it (slower).

NameRequiredDescriptionDefault
job_idYes
refreshNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description does useful work: it declares 'Read-only', caps the result at ~20 people, and warns that refresh=true is slower. It does not say what happens if the research hasn't finished, whether refresh costs credits, or whether a rebuild invalidates the cached audience — meaningful gaps for a tool whose only mutating path is that flag.

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, front-loaded with the read-only safety signal, then the payload, then the refresh trade-off. Every clause carries information; 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?

There is no output schema, and the description compensates by enumerating the returned fields, which is exactly what an agent needs to decide to call it. The missing pieces are the prerequisite/error condition for an unfinished research and clearer job_id semantics, but overall it is sufficient to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry both parameters. It handles 'refresh' well (true = rebuild, slower) but leaves 'job_id' implicit — an agent must infer from 'of a finished research' that it identifies the research job, and nothing says the format must be a UUID.

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 (the instant audience of a finished research) plus the concrete payload: up to ~20 people with company, position, country, LinkedIn, email and fit rationale. That clearly separates it from other audience getters like get_custom_audience or get_audience, though it never names a sibling outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'of a finished research' and the reference to the wizard's 'buyers already found' cards give a clear context for when to call it, and 'refresh=true rebuilds it (slower)' tells the agent how to opt into recomputation. It stops short of naming alternatives (e.g. sdr_get_research, sdr_materialize_research) or stating exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_healthGet Signal Search health dashboardBInspect

Operator-level health view: states, signals/contacts produced, credits spent, recent events, learning insights for a single search.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Health view' and the enumerated content make it clear this is a read-only aggregation, and the scope is confined to 'a single search', but it says nothing about permissions, freshness/caching, or whether the view triggers any computation or credit consumption.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler; the scope qualifier ('a single search') and the list of returned facets both earn their place and are read in the right order.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates well by listing the facets returned (states, signals/contacts, credits, events, learning insights). For a one-parameter read tool this is nearly sufficient; the only gap is identifier format and permission requirements.

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 0% and there is one required parameter, search_id, which the schema leaves as a bare string. The phrase 'for a single search' implies the parameter selects one search but adds no format, expected ID form, or error behavior, so the description only partially compensates for the coverage gap.

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?

Names a specific resource (a single signal search) and enumerates the content the view aggregates: states, signals/contacts produced, credits spent, recent events, learning insights. This distinguishes it from narrower siblings like sdr_signal_stats or sdr_learning_insights, which cover only one slice of the same data. It does not name those siblings explicitly, 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?

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named. 'Operator-level health view' implies a monitoring/monitoring-dashboard context, but the agent must infer when to reach for this versus sdr_get_search, sdr_run_states, or sdr_signal_stats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_hunter_dailySignals & contacts per day for one hunterBInspect

Read-only. The hunter page chart: signals and contacts per day for one hunter (days 2–60, default 14).

NameRequiredDescriptionDefault
daysNo
sourceYesHunter source id (see sdr_list_hunters)
search_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; it does declare 'Read-only', which is the single most important behavioral fact and is not encoded anywhere else. Beyond that it says nothing about the returned series shape, ordering, latency, or whether 'signals' and 'contacts' are counts or objects.

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 safety claim front-loaded and zero filler. The terseness flirts with under-specification rather than actual waste, so it holds up structurally.

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-param analytics tool with no annotations and no output schema, the description omits too much: the relationship between search_id and source, and any hint of what a daily data point contains. Two of three parameters and the entire return contract are left to inference.

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 only 33% (source is documented with a pointer to sdr_list_hunters), but the description supplies the days default of 14, which the schema does not encode and which materially affects results. search_id remains entirely unexplained — the agent must infer it is the SDR search and not the hunter id, despite 'for one hunter' wording.

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 concrete resource and scope: 'signals and contacts per day for one hunter'. The 'for one hunter' qualifier is the key differentiator against the near-identically named sibling sdr_daily_by_hunter, but that sibling is never named, so the agent must infer the split from names 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 hunter page chart' ties it to a specific UI context, implying the agent should call it when reproducing or reading that per-hunter chart. There is no explicit when-not guidance and no pointer to sdr_daily_by_hunter / sdr_recent_signals / sdr_signal_stats as alternatives for aggregate or cross-hunter views.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_hunter_detailHunter detail pageBInspect

Read-only. One hunter of a search: run state, signals in 30 days, signals & contacts per day (days 2–60, default 14), the contacts it found (incl. pending/phone-only), and its settings.

NameRequiredDescriptionDefault
daysNo
sourceYesHunter source id (see sdr_list_hunters)
search_idYes
contacts_limitNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose that the operation is read-only plus the kind of data returned (including pending/phone-only contacts). It does not cover auth/permission requirements, response shape, or size/pagination behavior for a tool returning contacts and daily rows.

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 'Read-only' and then packs the returned artifacts into a single dense sentence with no filler. Every clause maps to actual returned content, though the embedded '(days 2–60, default 14)' makes it slightly harder to parse at a glance.

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 detail tool with no annotations or output schema, the description usefully substitutes an output summary (run state, signals, daily counts, contacts, settings). It remains incomplete on two of four parameters and offers no sibling routing, which an agent needs in a crowded SDR tool namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%: search_id and contacts_limit are undocumented in both schema and description, and only the source enum has explicit guidance (pointer to sdr_list_hunters). The description adds one useful datum beyond the schema — the days default of 14 — but does not describe the 1–200 contacts_limit bound or search_id semantics, so it fails to compensate for the low coverage.

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 resource and scope — one hunter belonging to a search — and enumerates exactly what is returned: run state, 30-day signals, daily signal/contact counts, contacts found, settings. It does not explicitly name sibling tools it replaces (e.g., sdr_hunter_daily, sdr_run_state, sdr_configure_hunter), so it stops short of full sibling differentiation.

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 explicit when-to-use or when-not guidance. It never says to call this instead of sdr_list_hunters, sdr_hunter_daily, or sdr_run_state, nor what prerequisite (e.g., knowing search_id and hunter source) an agent must satisfy. Usage is only inferable from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_qa_autocorrectKeyword auto-correction on/offCInspect

Lets the ICP check rewrite the search's industry keywords automatically (default off).

NameRequiredDescriptionDefault
enabledYes
search_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a persistent mutation of a search setting but never says whether the change is immediate, whether it affects past or only future ICP QA runs, whether it requires ownership permissions, or whether it can be reverted. '(default off)' is the only behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the default state is placed at the end as a useful qualifier. It is efficient but almost too terse for a mutating tool.

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?

This is a simple two-parameter toggle with no output schema, so a short description can be sufficient, but given zero annotation and zero schema-doc coverage the current text leaves an agent guessing about scope, effect on existing keywords, and reversibility. Adequate as a minimum, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It hints that one parameter identifies 'the search' and that there is an on/off state, but it never names search_id (a UUID) or enabled, nor clarifies that both are required and that additional properties are rejected. Coverage gap of two undocumented params remains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states that this controls whether the ICP check rewrites the search's industry keywords automatically, which is more than a restatement of the name. However, it never explicitly frames the tool as a settings setter scoped to a specific search, so an agent could read it as a query or a run-time option rather than a toggle write. Sibling tools (sdr_icp_qa_run, sdr_icp_qa_history, sdr_icp_qa_rollback) are not referenced at all.

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 only guidance is '(default off)', which tells the agent the initial state but not when to turn it on or off, what prerequisites exist (e.g., must the search exist / be paused?), or how this relates to running the ICP QA (sdr_icp_qa_run). No alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_qa_historyICP check historyBInspect

Read-only. Past ICP-QA runs (checked, fits, uncertain, unfit, quality %, keyword changes) and whether keyword auto-correction is on.

NameRequiredDescriptionDefault
limitNo
search_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose the safety profile ('Read-only') plus the return contents including autocorrect state — useful context an agent would not otherwise have. It stops short of ordering, pagination over results, or behavior when search_id is unknown, which for a read tool is a moderate rather than severe gap.

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 clauses, front-loaded with the safety signal, with the field list packed efficiently into one parenthetical. No filler, though the sentence is a fragment that omits a subject-verb frame that would make the read action explicit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the field enumeration earns its place and tells the agent what to expect back. However, with no annotations and 0% schema coverage on a required search_id plus a capped limit, the definition leaves the agent guessing about scoping and pagination behavior.

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 0% for both parameters, so the description must compensate but does not: neither the required search_id scope nor the meaning/range of limit (1-100, result cap) is explained. The parenthetical enumerates returned data, not input semantics.

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 resource and scope: past ICP-QA runs, plus a parenthetical enumeration of the fields returned (checked, fits, uncertain, unfit, quality %, keyword changes). It is clear this is a history read, not a run trigger, though it never names the sibling (sdr_icp_qa_run) that performs the actual check.

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?

'Read-only' and 'Past ... runs' imply this is a retrieval call, but there is no explicit when-to-use, no mention of what to use instead for a new run (sdr_icp_qa_run) or for review state (sdr_icp_review), and no prerequisites stated for search_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_qa_rollbackRoll keywords back to a QA runAInspect

Restores the search's industry_keywords to the snapshot taken before the given ICP-QA run (undo an auto-correction).

NameRequiredDescriptionDefault
run_idYes
search_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the interesting behavior — that only industry_keywords is overwritten and the values come from a pre-run snapshot — but says nothing about permissions, whether the rollback is idempotent or repeatable, what happens if the run made no correction, or what the response contains.

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 mutation and its target front-loaded, then the snapshot semantics, then the undo framing. No filler to cut.

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 two-parameter mutation with no annotations and no output schema, the description covers action, target field, and data source adequately but leaves the agent guessing about the return value and failure modes. A brief note on what a successful rollback yields would round it out.

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 0%, so the description must compensate. It does bind both parameters to concepts ('the search's' → search_id, 'the given ICP-QA run' → run_id), which is better than nothing, but it adds no format expectations (both are UUIDs) and no error semantics for an unknown or stale run_id.

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?

Names a specific verb (restores) and a specific target field (industry_keywords), plus the scoping detail (snapshot taken before the given ICP-QA run). 'Undo an auto-correction' implicitly distinguishes it from the sibling sdr_icp_qa_autocorrect, though it never names that sibling 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 implied rather than stated: the parenthetical 'undo an auto-correction' tells the agent when this tool applies, but there are no explicit preconditions (e.g. the run must have made a correction), no when-not guidance, and no named alternative such as sdr_icp_qa_autocorrect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_qa_runICP check nowAInspect

People page "Check now": classifies unchecked contacts of a search as Fit / Uncertain / Not a fit (AI, not billed) and may suggest keyword changes. Returns the run, or null when nothing is unchecked.

NameRequiredDescriptionDefault
search_idYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Crucially, it provides behavioral context beyond the schema, specifically noting that the classification is 'AI, not billed' and detailing the return condition ('Returns the run, or null when nothing is unchecked'). This is highly actionable information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise, utilizing a single sentence to cover the function, the AI categorization, the potential outcome (keyword suggestions), and the return value/exit condition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single input (search_id), the description is fully complete. It defines the input's purpose and the predictable nature of the output, including the null possibility.

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?

Although the schema is minimal, the description contextualizes the single required parameter ('search_id') by explaining that it refers to the 'unchecked contacts of a search,' giving the user functional meaning to the UUID that the schema alone does not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool explicitly states its function: classifying unchecked contacts as Fit, Uncertain, or Not a fit. By referencing the 'Check now' feature on the People page, it clearly differentiates its purpose from other complex ICP or search execution tools in the sibling list.

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?

While the description clearly states the functionality, it doesn't explicitly advise when to use it versus other highly related sibling tools like sdr_icp_qa_review. It is implied usage rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_reviewICP Review panelBInspect

Read-only. Uncertain contacts waiting for re-check, last run results, totals and next scheduled run.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does disclose the key trait 'Read-only' plus the categories of information returned. It does not cover permissions, pagination, or error behavior, but for a simple read-only panel this is substantially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise and front-loads 'Read-only' before listing return-content categories. It is structured as fragments rather than complete sentences, but there is no wasted text.

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 one-parameter tool with no annotations and no output schema, the description adequately lists returned information and read-only behavior. However, it leaves the required search_id undocumented and provides no usage guidance, so it is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description never mentions the required search_id parameter. The parameter name and UUID format in the schema convey basic identity, but the description adds no meaning about what the search ID scopes or expects.

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 the tool is read-only and specifies the review-panel content it exposes: uncertain contacts, last run results, totals, and next scheduled run. That is more specific than a tautology, though it does not explicitly differentiate this panel from the sibling sdr_icp_review_run.

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 'Read-only' but gives no explicit guidance on when to use this panel versus sdr_icp_review_run or other ICP review tools. There are no when-to-use conditions, exclusions, or alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_icp_review_runRe-check Uncertain contacts nowBInspect

ICP Review "Re-check now": re-judges this search's Uncertain contacts (bounded per run, one run at a time). Contacts moved to Fit become billable (5 credits) when used.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does real work: it discloses a per-run bound, a single-concurrency constraint, and the credit consequence (5 credits when contacts moved to Fit are used). It omits permissions, what happens to contacts not re-judged in a given run, and whether the run is synchronous or asynchronous.

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 compact sentences, front-loaded with the action and scope; the cost/concurrency caveats are packed into the parenthetical without wasted words. Slightly dense but every clause carries information.

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 an unannotated, output-schema-less mutating action with billing impact, the description covers cost and concurrency but leaves return behavior, run outcome reporting, and failure modes unspecified — an agent would still need sdr_run_state or similar to learn results.

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 0% for the single required search_id, so the description must compensate. "This search's" implies the parameter selects the search being re-run, but it gives no format or scope clarification beyond that, leaving the UUID undocumented.

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 action (re-judges) on a specific resource (this search's Uncertain contacts), which distinguishes it from the broader sdr_icp_review and the QA siblings. The verb+scope is concrete, though it never explicitly contrasts itself with sdr_icp_review or sdr_icp_qa_run.

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?

"Re-check now" and "one run at a time" imply this is the on-demand triggering action, but there is no explicit statement of when to use it versus sdr_icp_review or sdr_icp_qa_run, nor any prerequisite (e.g., search must have Uncertain contacts).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_launch_outreachLaunch SDR outreach (sends real messages)AInspect

Launches outreach: real emails and/or LinkedIn invites start in the working window and new contacts keep being picked up. Each newly queued contact costs 5 credits. Managed senders need a paid plan; client_owned needs a connected mailbox. Only after the user approved sdr_preview_launch_outreach.

NameRequiredDescriptionDefault
channelsNo
timezoneNoIANA time zone, e.g. Europe/London
branch_idNoCRM branch for replies: a branch id from crm_list_branches, or null/'general' for General
search_idYes
icp_segmentNoWho to contact: fit (Fit + unchecked, default), fit_uncertain, all; legacy: uncertain, unfit, unchecked
work_end_hourNo
work_start_hourNo
exclude_weekendsNo
daily_email_limitNo
email_sender_modeNomanaged = Vendo sender pool (paid plans only); client_owned = the workspace's own connected mailboxes
daily_linkedin_limitNo
client_email_providerNo
selected_linkedin_account_idsNoIds from sdr_get_outreach → linkedin_accounts; empty = every connected account in status OK

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a lot of it: it discloses that real messages are sent, that contacts continue to be picked up over the working window, the credit cost (5 per newly queued contact), and plan/mailbox prerequisites. It does not state whether re-launching an active outreach errors or how limit overruns behave, leaving some mutation risk undisclosed.

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?

Four short sentences, each carrying distinct information (effect, credits, prerequisites, approval gate), with the action verb front-loaded. Zero filler and no repetition of the title.

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 13-parameter, irreversible, credit-spending mutation with no annotations and no output schema, the description covers the safety-critical facts well but leaves most parameters (recipient selection via search_id/icp_segment, limits, LinkedIn account selection) and the post-call outcome unaddressed. Adequate, not 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 only 38%, and the description compensates partially: "emails and/or LinkedIn invites" clarifies channels, "working window" frames timezone/work_start_hour/work_end_hour/exclude_weekends, and the sender-mode sentence explains managed vs client_owned beyond the schema's own text. However search_id, icp_segment, branch_id, the daily limits, and selected_linkedin_account_ids are never addressed in prose, so meaningful gaps remain.

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?

"Launches outreach: real emails and/or LinkedIn invites start in the working window" gives a specific verb (launches), the resource (SDR outreach), and the concrete effect (messages actually go out). It is clearly distinguishable from sdr_preview_launch_outreach and from campaign-launch siblings by naming itself as the SDR-outreach launcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence establishes an explicit precondition — only call after the user approved sdr_preview_launch_outreach — which routes the agent to the correct sibling first. It also states eligibility conditions (paid plan for managed, connected mailbox for client_owned). It stops short of covering other adjacent siblings such as sdr_pause_outreach / sdr_resume_outreach or what to do if an outreach is already running.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_learning_insightsSignal Learning insightsAInspect

Read-only. Learned weight per signal type and conversion from real outreach outcomes, for one search or per search across the workspace.

NameRequiredDescriptionDefault
search_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It states read-only and identifies real outreach outcomes as the data source, but it omits permissions, freshness/recompute relationship, and return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with read-only and then purpose/scope. There is no redundant restatement of the title or tool name.

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 low-complexity read-only analytics endpoint with one optional parameter and no output schema, the description covers safety, data source, and scope. It could clarify return granularity or relationship to recompute, but it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole optional search_id has 0% schema description coverage. The description compensates by explaining that including it scopes results to one search while omitting it returns workspace-wide results, adding meaningful semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the retrieved artifact: learned weight per signal type and conversion from real outreach outcomes, plus scope for one search or the workspace. It is clear, though it does not explicitly differentiate itself from nearby tools such as sdr_signal_stats or sdr_learning_recompute.

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?

It explains the search_id-based mode, single search versus workspace-wide, which gives useful usage context. However, it provides no explicit when-to-use/when-not guidance or alternative tool routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_learning_recomputeRecompute signal-learning weights for a searchAInspect

Recalculate per-signal-type weights from outreach outcomes (replies/meetings vs sends) for one search. Safe, no cost; use when the user asks to refresh/recalculate Signal Learning.

NameRequiredDescriptionDefault
search_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses "Safe, no cost", which tells the agent this is a non-billing operation. However, it omits that this is a mutation that overwrites stored weights, whether it is idempotent, whether a minimum volume of outcome data is required, and what permissions are needed.

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 the operation and its data source front-loaded, followed by the safety profile and trigger condition. No filler and nothing buried.

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 one-parameter mutation tool with no annotations and no output schema, the description covers what it does and its risk profile, but leaves open whether prior weights are replaced, what preconditions exist, and what the caller gets back. Adequate but with visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single search_id parameter, so the description must compensate. "For one search" implies the parameter identifies the target search, but it adds no format, source, or lookup guidance (e.g., from sdr_list_searches), leaving the parameter largely undocumented in both places.

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 (recalculate) and a precise resource (per-signal-type weights derived from replies/meetings vs sends) scoped to one search, so an agent can distinguish it from sdr_learning_insights and sdr_signal_stats. It stops short of explicitly naming which sibling to use instead when the user only wants to view weights, so it is clear but not fully 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?

"Use when the user asks to refresh/recalculate Signal Learning" gives an explicit trigger condition, and "Safe, no cost" signals it is low-risk to invoke. There is no when-not guidance (e.g., do not call if no outcomes exist yet) and no named alternative, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_list_huntersList all SDR hunters (sources)AInspect

Read-only. The 24 hunter sources a search can run, with UI name, what each looks at, opt-in/paid-engine/LinkedIn-budget flags, whether it can be run by hand, and which search fields it reads. Use to map a hunter the user names ("Competitor Switching") to its id (g2_reviews) before sdr_set_hunters / sdr_configure_hunter / sdr_run_now. Hunters are not billed per run; each usable contact costs 5 credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does state that the tool is read-only, lists the returned hunter attributes, and explains that hunters are not billed per run while each usable contact costs 5 credits. It does not mention permission requirements, pagination, or response ordering, which are minor gaps for a small read-only list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the read-only nature and the core resource, then moves efficiently through returned fields, intended usage, downstream tools, and billing. Every sentence contributes useful selection or invocation context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with no output schema, the description explains what is returned, how the result should be used, and the billing context. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain beyond the baseline. Schema coverage is irrelevant here, and the description appropriately does not invent parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific resource and scope: the 24 hunter sources a search can run, including the metadata each record carries. It is distinguishable from mutating SDR hunter tools, but it does not explicitly contrast with the sibling sdr_search_hunters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete use case: mapping a hunter name the user mentions, such as "Competitor Switching", to its id before calling sdr_set_hunters, sdr_configure_hunter, or sdr_run_now. It lacks explicit when-not-to-use guidance or a direct pointer to sdr_search_hunters as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_list_outreach_processesSDR processes on the Sales Process pageAInspect

Read-only. SDR outreach processes of the workspace as listed on the Sales Process page (status, channels, counters).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the safety profile itself by declaring 'Read-only' up front, and it previews the shape of the returned data (status, channels, counters). It stops short of describing pagination, scoping, or whether inactive processes are included.

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 short sentence with the read-only constraint front-loaded and zero filler. Every clause adds information: safety, resource, scope, and returned fields.

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-parameter list tool with no output schema, the description supplies the key facts an agent needs: it is read-only, workspace-scoped, and yields status/channels/counters. A note on result size or ordering would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate; the baseline for a no-parameter schema applies. The description helpfully notes the scope is the whole workspace rather than a filtered subset.

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+resource: lists the workspace's SDR outreach processes, with the UI anchor ('Sales Process page') and the returned fields (status, channels, counters) named. It is distinguishable from siblings like sdr_get_outreach or sdr_outreach_summary, though it never explicitly says how it differs from them.

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?

Calling it a workspace-wide listing implies when it applies, and 'Read-only' signals it is a safe discovery call, but there is no explicit when-to-use or when-not guidance and no sibling is named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_list_personasList SDR contactsAInspect

Read-only. Contacts of a search, newest first. Filters: group (fits/uncertain/unfit/unchecked), source (contacts of one hunter, incl. pending/phone-only), company, role, min_relevance; paging up to 200.

NameRequiredDescriptionDefault
roleNo
groupNo
limitNo
offsetNo
sourceNoHunter source id (see sdr_list_hunters)
companyNo
search_idYes
min_relevanceNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral load; it does disclose the safety profile ('Read-only'), sort order ('newest first'), and a page-size cap ('up to 200'), which is real value. It says nothing about default page size, whether a total count is returned, or what happens when filters and search_id conflict, so mutation/scope risk is only partly covered.

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-loaded with 'Read-only' and the resource scope, then a dense filter inventory with zero filler. The telegraphic phrasing ('Contacts of a search', 'paging up to 200') borders on elliptical, but every clause carries information.

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 an 8-parameter, unannotated, no-output-schema list tool, the description covers filtering and ordering but never describes what a returned contact contains (relevance score, group, company fields) or that search_id is mandatory. Enough to call it; not enough to predict the response payload.

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 only 13% (just 'source'), and the description compensates well: it enumerates the group enum values, explains source as one hunter's contacts 'incl. pending/phone-only', and names company, role, and min_relevance. It omits that search_id is required and gives no defaults for limit/offset, so compensation is strong but incomplete.

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?

Names a specific verb+resource ('Contacts of a search') and pairs the tool name 'personas' with the concrete term 'contacts', so the agent knows it lists individuals belonging to a search. It stops short of naming the sibling it differs from (e.g., sdr_people_group_counts for aggregates or sdr_export_people_csv for exports), so it is clear but not fully 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?

'Read-only' plus the filter list implies this is the way to browse/pick contacts interactively, but there is no explicit when-to-use or when-not-to-use guidance. Nothing tells the agent to prefer sdr_people_group_counts for group totals or sdr_export_people_csv for bulk export, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_list_searchesList Vendo SDR Signal SearchesCInspect

List active Signal Searches in this workspace. Optionally filter by agent.

NameRequiredDescriptionDefault
agent_idNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose one useful trait — only 'active' searches are returned — but says nothing about pagination, result limits, ordering, or authorization requirements, so most read-operation behavior must be guessed.

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 no filler, and the primary purpose is front-loaded ahead of the optional filter. It is appropriately sized, though it leaves room for a routing clause without becoming bloated.

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 zero-required-parameter list tool with no output schema, the definition covers the essentials. It nonetheless omits how results are returned or bounded and never distinguishes itself from sdr_get_search, so it is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does clarify that agent_id is optional and filters by agent, which is meaningful context, but adds no format details (ID vs name) beyond that single phrase.

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 Signal Searches) and adds workspace scope plus an active-status qualifier. It's clear on its own, but it never explicitly contrasts with close siblings like sdr_get_search (single fetch) or the pause/resume/activate search tools, leaving that distinction to be inferred 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?

There is no when-to-use guidance and no mention of alternatives. 'Optionally filter by agent' is parameter behavior, not usage guidance. An agent gets no signal about when this list is preferable to sdr_get_search or how it relates to the other sdr_* search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_materialize_researchCopy a research's instant audience into a searchAInspect

Copies the instant audience of a finished research into a search as contacts (background, idempotent, filtered by the search's regions/cities). sdr_create_search with research_job_id already does this after activation; use this only to repeat it. Contacts are billed (5 credits each) like any other contact when used.

NameRequiredDescriptionDefault
job_idYes
search_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses background/asynchronous execution, idempotency, region/city filtering, and a concrete cost of 5 credits per contact. It stops short of stating failure modes or whether duplicates are skipped vs re-billed on repeat runs, which matters for an idempotent-but-billed tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it does, when to prefer the alternative, and the billing consequence. Scope is front-loaded and no sentence is 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?

No output schema exists, and the description covers timing, idempotency, filtering, cost, and the alternative path. Missing only a hint of what is returned (e.g., how many contacts were materialized) and any permission or precondition requirement for a billed mutation.

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 0%, so the description must compensate. It implies job_id refers to a 'finished research' and search_id to the target search whose regions/cities drive filtering, which is genuine added meaning. However, it never names the parameters or notes that a research must be finished before job_id is valid, leaving the UUID formats and validity preconditions to inference.

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 ('copies') and precise resource ('instant audience of a finished research into a search as contacts'), and the parenthetical narrows scope to the search's regions/cities. An agent can distinguish this from sdr_create_search and sdr_export_personas_to_audience without opening 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative ('sdr_create_search with research_job_id already does this after activation') and the condition that selects this tool ('use this only to repeat it'). When-to-use and when-not-to-use are both stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_outreach_summarySent/queued counters for an SDR searchAInspect

Per-channel sent and queued counts for one SDR search. Read-only, free.

NameRequiredDescriptionDefault
search_idYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does disclose two key traits: 'Read-only' establishes the safety profile and 'free' signals no credit cost. It does not describe the return shape or whether channel sets are fixed, but for a simple counter tool this is meaningful disclosure beyond structured data.

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 core purpose and the read-only/free traits are front-loaded. Nothing extraneous.

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 one-param, no-output-schema read tool the description is minimally adequate, but with no output schema it should clarify what 'per-channel' covers (e.g. email vs LinkedIn) and the counter structure to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single search_id parameter, so the description must compensate. 'For one SDR search' implies search_id identifies an SDR search, which adds meaning, but gives no format hint or note on how to obtain the id.

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+resource: 'per-channel sent and queued counts for one SDR search.' An agent can tell this returns counters, not outreach content or a search record, distinguishing it from siblings like sdr_get_outreach or sdr_get_search. It lacks explicit differentiation from the closer analytics siblings (sdr_activity_feed, sdr_signal_stats).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to call this versus the many other SDR read tools (sdr_get_outreach, sdr_activity_feed, sdr_list_searches). Usage is only implied by the word 'summary'. There are no exclusions, prerequisites, or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_overviewSDR processes overviewAInspect

Read-only. Every SDR search of the workspace with signals (7/30 days), contacts, hot companies, hunter health (running/cooling/paused) and outreach, plus workspace totals and a daily series — the /vendo-sdr list page.

NameRequiredDescriptionDefault
daysNoDaily series length, default 14

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden, and it does lead with 'Read-only' and disclose the composition of the payload including hunter health states. It omits cost/latency considerations of an aggregate scan, permission requirements, and whether paused or deleted searches are included in 'Every SDR search of the workspace'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The safety trait ('Read-only') is front-loaded and the remaining enumeration is dense but purposeful, with the UI-page anchor at the end. The dash-separated list is long for one sentence but every clause names distinct returned data, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description usefully substitutes for a return-value spec by naming the sections returned. For a one-parameter aggregate read, that is nearly sufficient; only the missing pagination/size expectations and permission notes hold it back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'days' parameter is documented as the daily series length with a 7-60 range. The description's 'signals (7/30 days)' refers to signal windows, not the days parameter, and risks being misread as the range for that argument, so it adds no correct meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (workspace-wide SDR searches) and enumerates what the overview aggregates: signals, contacts, hot companies, hunter health, outreach, totals and a daily series. That is far more specific than the tautological title 'SDR processes overview'. It does not name the sibling it replaces (sdr_list_searches, sdr_health, sdr_outreach_summary), so the differentiation is implicit rather than stated.

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 '/vendo-sdr list page' mapping tells the agent this is the dashboard-equivalent aggregate view, which implies when to reach for it instead of the granular per-entity tools. But there is no explicit 'use this before drilling into sdr_get_search/sdr_health' instruction and no stated preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_pause_hunterPause ONE hunterAInspect

Pauses one hunter of a search; the others keep running. Reversible with sdr_resume_hunter.

NameRequiredDescriptionDefault
sourceYesHunter source id (see sdr_list_hunters)
search_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden fully. It usefully discloses that only the targeted hunter stops while others continue, and that the action is reversible — two real behavioral facts. It is silent on permissions, effect on in-flight runs, and what a paused hunter stops doing.

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 scope-defining clause and followed by the reversal path. No waste.

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 simple two-parameter mutation with no output schema and no annotations, it covers the core effect and reversibility, but omits what a paused hunter means operationally and gives no hint about the undocumented search_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'source' is documented and points to sdr_list_hunters, but 'search_id' has no description anywhere. The description adds nothing about either parameter, so it does not compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (pauses) + resource (one hunter of a search) with explicit scope: 'the others keep running'. This implicitly but clearly differentiates it from search-level siblings like sdr_pause_search.

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?

Names the counterpart action (sdr_resume_hunter) for reversal, which helps an agent understand lifecycle, but gives no explicit when-to-use vs sdr_pause_search or sdr_pause_outreach guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_pause_outreachPause SDR outreach deliveryBInspect

Stop sending new messages on this SDR campaign. Reversible.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does add two genuine behavioral facts beyond the name: only *new* messages stop (existing/in-flight sends are not addressed) and the action is reversible. It omits permission requirements, whether the underlying search keeps running, and any effect on queued messages.

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, with the action front-loaded and the reversibility guarantee appended. Nothing here is wasted.

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 state-changing, no-annotation, no-output-schema tool the description is too thin: it neither explains the required search_id nor differentiates from sdr_pause_search. The 'reversible' note is the only context that helps the agent act safely.

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?

The single parameter search_id has 0% schema description coverage and no enums, so the description must compensate — but it never names or explains the identifier. Referring to it loosely as 'this SDR campaign' does not tell the agent where to obtain a valid search_id.

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+resource: 'Stop sending new messages on this SDR campaign.' An agent knows this halts outbound delivery and that it is reversible. However, it does not distinguish itself from the very similar sibling sdr_pause_search, and it calls the target a 'campaign' while the parameter is search_id, leaving the object of the action slightly ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, and no mention of alternatives such as sdr_pause_search (to halt the underlying search) or sdr_delete_outreach (to remove outreach entirely). The agent must infer the routing 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.

sdr_people_group_countsFit / Uncertain / Not a fit countsBInspect

Read-only. How many contacts are Fit, Uncertain, Not a fit and unchecked. only_with_email=false counts email-or-LinkedIn reachable contacts (what outreach "Who to contact" uses). Use before choosing icp_segment.

NameRequiredDescriptionDefault
search_idYes
only_with_emailNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description's opening 'Read-only' is genuinely valuable because it establishes safety and no side effects. It also explains what only_with_email=false actually counts. Beyond that it says nothing about cost, whether the search must be active, or what happens on an invalid search_id, so the burden of full behavioral disclosure is only partly met.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the read-only safety note front-loaded and no filler. The phrasing 'what outreach "Who to contact" uses' is compact but leans on an external UI reference an agent may not know, slightly reducing clarity per word.

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?

There is no output schema and no annotations, so the description has to carry the full load. It conveys the four buckets and the mode switch, which is broadly sufficient to call the tool, but it does not describe the shape of the returned counts (field names, whether unchecked is always present) or prerequisites such as the search existing.

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 0%, so the description must compensate for both parameters. It gives real semantics for only_with_email (false counts email-or-LinkedIn reachable contacts, matching outreach behavior), which is more than the schema offers. search_id, the required identifier parameter, is never described or constrained, leaving half the parameters undocumented.

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: it returns counts of contacts bucketed as Fit, Uncertain, Not a fit, and unchecked. That is distinguishable from siblings like sdr_persona_stats or sdr_overview. It never explicitly says the counts are for a given search, which the required search_id implies but the text leaves implicit.

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 line 'Use before choosing icp_segment' gives a forward-looking usage cue, and the note about matching outreach's 'Who to contact' view helps an agent pick the right mode. However, icp_segment is not a sibling tool name, and the description never says when NOT to use this (e.g., versus sdr_get_search or sdr_persona_stats), so the guidance is suggestive rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_persona_statsSDR contact statsCInspect

Read-only. Contact totals, by role, top companies, daily series (7, 14 or 28 days), credits spent.

NameRequiredDescriptionDefault
daysNo
search_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does earn credit for disclosing 'Read-only.'. Beyond that it says nothing about whether stats are real-time or snapshot, whether results are scoped strictly to one search_id, or what happens with an invalid/unknown search – all relevant for a mutation-free analytics read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded with the read-only flag, which is good, but it is telegraphic noun-list prose rather than clear sentences. It is not bloated, just under-structured.

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?

No output schema and no annotations mean the description has to explain both behavior and return shape; it lists metric categories, which partially stands in for an output schema, but leaves the key scoping parameter undocumented. For a two-param analytics tool this is insufficient.

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 0%, so the description must compensate, yet the only parameter detail it gives – '(7, 14 or 28 days)' – merely restates the enum already in the schema. The required search_id (UUID of which search, active vs paused?) is left entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates what data comes back (contact totals, by role, top companies, daily series, credits spent) which implies a stats/reporting tool, but it never states a verb or an object scope, so the agent must infer it reads stats for a search. It offers no differentiation from near-neighbours like sdr_signal_stats, sdr_people_group_counts, or sdr_overview, all of which could plausibly return similar aggregate numbers.

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 call this versus sdr_overview, sdr_signal_stats, sdr_people_group_counts, or get_analytics_sdr. No prerequisites are given either, such as whether the search must exist or be activated before stats are populated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_bulk_delete_peoplePreview removing several contactsAInspect

Dry run of multi-select delete: checks every id belongs to the search and counts them by group.

NameRequiredDescriptionDefault
idsYes
search_idYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it discloses that this is non-mutating ('Dry run'), that it validates each id against the search, and that results are grouped counts. It does not detail error behavior or permission requirements, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with the core concept front-loaded. Every clause adds useful information: dry-run nature, validation against the search, and grouped counting.

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 preview tool with no annotations or output schema, the description covers the essential call semantics: it is a dry run, ids must belong to the search, and results are counted by group. It could say more about invalid-id handling or the exact result shape, but the core is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It implies that 'ids' are checked against the 'search_id' search and that multiple ids are involved, but it does not fully annotate both parameters or their constraints beyond that relationship.

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 operation — a dry run of a multi-select delete — and adds what the preview checks: every id belongs to the search and counts by group. This distinguishes it from the actual bulk delete and from single-person previews, though it does not explicitly name those siblings.

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 phrase 'Dry run' implies this should be used before a real multi-select delete, but the description never explicitly says when to use it, when not to use it, or that sdr_bulk_delete_people is the follow-up action. Usage is clear enough by implication but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_delete_outreachPreview deleting an SDR outreach campaignBInspect

Show what would happen. The Signal Search ITSELF is NOT deleted, only the outreach campaign.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden, and it does disclose one important behavioral trait: the Signal Search is not deleted, only the outreach campaign. However, it says nothing about what the preview returns, whether it is read-only/side-effect free, or whether any permissions are required.

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 with no padding. Slightly suboptimal ordering in that the vague 'Show what would happen' leads while the decisive scope constraint trails, but nothing is wasted.

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 one-parameter preview tool with no annotations and no output schema, the scope clarification is valuable but the definition omits what the preview actually returns (e.g., the campaign/recipients that would be removed) and any safety statement, leaving the agent to guess at the response.

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?

The single search_id parameter has 0% schema coverage, so the description must compensate and does not. It never states that search_id identifies the search whose outreach would be deleted, and the mention of the Signal Search concerns deletion scope, not the parameter's meaning or format.

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?

It is a dry-run of deleting an SDR outreach campaign, and the second sentence crisply distinguishes this from deleting the underlying Signal Search, which separates it from sdr_delete_search. The first sentence ('Show what would happen') is vague on its own, but the title plus the scope clause make the verb and resource identifiable.

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 preview/dry-run framing implies this should be consulted before invoking sdr_delete_outreach, but the description never states that condition, lists prerequisites, or names the delete tool it precedes. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_delete_personPreview removing a contactBInspect

Dry run. Shows the contact that would be removed. Nothing changes.

NameRequiredDescriptionDefault
idYes
search_idYes

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and clearly discloses that this is non-mutating: it is a dry run and nothing changes. It also indicates that it shows the contact that would be removed, though it does not cover permissions, failure behavior, or response detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, front-loaded with 'Dry run,' and contains no filler. Every sentence contributes directly to the preview/no-change meaning.

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 tool with two required parameters, no annotations, no output schema, and 0% schema description coverage, the description is too thin. It establishes the non-mutating preview behavior but leaves parameter meaning and expected return context insufficiently specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain either required parameter. It never clarifies what id or search_id represent, so the agent gets no semantic guidance beyond the schema's UUID types.

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 preview action for a contact: it is a dry run that shows which contact would be removed. This clearly separates it from an actual deletion in purpose, though it does not name the sibling delete tool 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?

The phrase 'Dry run' and 'Nothing changes' imply this is used before an actual removal, but the description gives no explicit guidance on when to choose it over sdr_delete_person or sdr_preview_bulk_delete_people. Usage is understandable but left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_launch_outreachPreview launching SDR outreachAInspect

Dry run of "Save and Launch". Shows the effective settings (request + saved + defaults), contacts in the chosen segment, ready email/LinkedIn contacts, predicted blockers (no LinkedIn account, no own mailbox), the paid-plan rule for managed senders and the delivery window. Nothing is sent. Always call first and show it to the user.

NameRequiredDescriptionDefault
channelsNo
timezoneNoIANA time zone, e.g. Europe/London
branch_idNoCRM branch for replies: a branch id from crm_list_branches, or null/'general' for General
search_idYes
icp_segmentNoWho to contact: fit (Fit + unchecked, default), fit_uncertain, all; legacy: uncertain, unfit, unchecked
work_end_hourNo
work_start_hourNo
exclude_weekendsNo
daily_email_limitNo
email_sender_modeNomanaged = Vendo sender pool (paid plans only); client_owned = the workspace's own connected mailboxes
daily_linkedin_limitNo
client_email_providerNo
selected_linkedin_account_idsNoIds from sdr_get_outreach → linkedin_accounts; empty = every connected account in status OK

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and usefully discloses that nothing is sent and what the preview surfaces: effective settings, segment contacts, readiness, blockers, paid-plan rule, and delivery window. It could be stronger by explicitly stating that no persistent changes are saved and by noting any permission prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the dry-run purpose and uses compact sentences to list the preview outputs and the "nothing is sent" guarantee. It is dense but largely free of waste, though the long output list could be slightly tighter.

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 13-parameter preview tool with no annotations or output schema, the description adequately explains the preview's purpose and high-level outputs. However, it leaves significant gaps around parameter usage and prerequisites, so an agent still needs to lean heavily on the schema to invoke it correctly.

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 38% across 13 parameters, so the description needs to compensate for undocumented inputs like search_id, channels, work hours, limits, and client_email_provider. It mentions broad concepts such as "chosen segment" and "delivery window" but does not explain how most parameters affect the preview or what values mean.

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 action and resource: a dry run of "Save and Launch" that shows effective settings, contacts, blockers, and delivery window. "Nothing is sent" clearly distinguishes it from the actual launch sibling and makes the preview purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Always call first and show it to the user" gives clear when-to-use guidance and implies it precedes the real launch. It does not explicitly name sdr_launch_outreach as the alternative or describe when not to use it, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_outreach_contentPreview a personalized SDR messageCInspect

Render an example personalized email/LinkedIn message for a specific contact. Costs ~1 Claude call.

NameRequiredDescriptionDefault
search_idYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It does disclose a real behavioral trait the agent needs for planning — the ~1 Claude call cost — implying a billable, non-executing preview. But it never states the operation is read-only/side-effect-free (i.e., does not send the message), which is the key trait for a preview tool with zero annotation coverage.

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, front-loaded sentences with no padding; the action and the cost caveat both land immediately. Only the misleading 'contact' clause detracts from otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, a preview tool should describe what the rendered example contains and how the search_id relates to the contact. Instead the description leaves the parameter unexplained and the return value undescribed, so an agent cannot confidently invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the sole parameter, 'search_id', is never mentioned by name or explained. Worse, the description frames the target as 'a specific contact', which does not match a search-scoped identifier and may mislead an agent about what the ID refers to.

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?

Specific verb ('Render') plus resource ('example personalized email/LinkedIn message'), and the 'example/Preview' framing separates it from the executing siblings such as sdr_launch_outreach. It does not differentiate from close siblings like sdr_get_outreach_content or preview_agent_email, but the purpose itself 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?

No when-to-use guidance and no routing to alternatives. With siblings like sdr_get_outreach_content (retrieves stored content), sdr_preview_launch_outreach and sdr_preview_search in the same family, an agent has no stated condition for choosing this one over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_run_nowPreview running hunters nowAInspect

Dry run of the hunter "Run" button. Lists which hunters would run (one source, or every enabled runnable hunter when omitted), flags paid engines and LinkedIn-budget hunters. Nothing runs.

NameRequiredDescriptionDefault
sourceNoHunter source id; cross_pool and people_pool run automatically and cannot be started by hand
search_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and discloses the key trait: nothing actually runs. It also adds useful operational context by saying it flags paid engines and LinkedIn-budget hunters, though it does not describe permissions or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded, tight, and every sentence adds value: dry-run purpose, scope/list behavior, flags, and the no-execution guarantee.

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 preview tool with no output schema and no annotations, the description gives enough behavioral context to call it correctly. The main remaining gap is that search_id semantics are left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, and the description adds important meaning for the optional source parameter by explaining that omission previews every enabled runnable hunter. However, it does not explain the required search_id parameter, so the schema still carries much of the parameter 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?

The description states a specific verb+resource: it is a dry run of the hunter "Run" button and lists which hunters would run. It clearly distinguishes itself from an actual run by saying "Nothing runs" and explains the source scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the tool as a preview/dry-run alternative to actually running hunters, and explains that omitting source previews every enabled runnable hunter. It does not explicitly name the sibling execution tool, but the intended usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_set_person_groupPreview moving a contact between groupsCInspect

Dry run. Shows the move and whether it costs credits: moving a contact the ICP check left free to Fit charges 5 credits.

NameRequiredDescriptionDefault
idYes
groupYes
search_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose two genuinely useful traits: this performs no mutation, and a move from free-to-Fit costs 5 credits. It says nothing about permissions, what 'shows the move' actually returns (no output schema exists), or what happens on an invalid transition.

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 dry-run qualifier front-loaded; nothing is padded. The second sentence is grammatically tangled ('a contact the ICP check left free to Fit'), which costs a little clarity for its brevity.

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 three-required-parameter tool with no annotations, no output schema, and zero schema descriptions, the description leaves too much open. The preview's return shape and the meaning of search_id are exactly what an agent needs here and are absent.

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 0% for all three parameters, so the description must compensate and largely does not. 'Fit' hints at the group enum (fits/uncertain/unfit) and 'contact' hints at id, but search_id is never mentioned and no parameter's role or format is explained.

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 action ('Dry run. Shows the move') and the resource (a contact between groups), and the credit-cost angle distinguishes it from the mutating sibling sdr_set_person_group. The phrasing 'moving a contact the ICP check left free to Fit' is somewhat opaque jargon, but the core purpose is recoverable.

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?

'Dry run' implies it should be called before the real move, so the when-to-use is inferable. However, it never names sdr_set_person_group as the follow-up action, nor says when a preview is unnecessary or what to do with the result.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_preview_start_researchPreview: research a company website for a new SDRAInspect

Dry run of the New SDR wizard's first steps. Tells whether a company profile for this website already exists (reused, 0 credits) or must be built (deep website scan 15 + outreach playbook 1 = 16 credits), and whether a recent ICP research (< 24 h) would be reused. Nothing is created. Always call before sdr_start_research and show the cost.

NameRequiredDescriptionDefault
forceNoRun a fresh research even if a recent one exists
websiteYesDomain or URL, e.g. acme.com
company_nameYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does: it declares no side effects ('Nothing is created'), itemizes the credit costs (0 for reuse, 15 + 1 = 16 for a build), and states the 24-hour recency window for ICP research reuse.

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, front-loaded with what the tool is and what it guarantees, followed by the routing instruction. 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?

There is no output schema, so the description must convey what comes back; it does so for the key decision points (profile reuse vs. build, ICP research recency). It stops short of describing the full response shape, which leaves some ambiguity about how to render the preview.

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%, and the description only adds meaning for the website input (it drives the company-profile lookup). The `force` parameter, which overrides the < 24 h reuse rule central to this description, is left entirely to the schema and never referenced in the prose.

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 ('Dry run of the New SDR wizard's first steps') and explicitly distinguishes itself from sdr_start_research as the non-committing preview. An agent can tell exactly what this tool does without opening the 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?

'Always call before sdr_start_research and show the cost' gives an explicit ordering rule against the named sibling, plus an instruction about what to do with the result. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_recent_signalsRecent signalsBInspect

Read-only. Latest signals of one search (search_id) or merged across all searches of the workspace.

NameRequiredDescriptionDefault
limitNo
search_idNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does disclose key traits: it is read-only and its default scope is merged across all searches when search_id is omitted. However, it says nothing about return format, pagination, rate limits, or what a 'signal' actually is, leaving meaningful behavioral gaps.

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 read-only nature and then the scoping rule. There is no filler, and every phrase contributes to the reader's understanding of what changes based on search_id.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and 0% schema description coverage, the description is too thin. It never explains what a 'signal' contains, what the response looks like, or how limit affects the result, so an agent lacks enough context to call it confidently.

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 0%, so the description must explain both parameters. It explains search_id's effect well (one search vs merged across all), but completely omits the limit parameter, including its 1–100 range and purpose.

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 resource ('Latest signals') and two scopes (one search via search_id, or merged across the workspace), making the core purpose clear. It does not, however, distinguish this tool from siblings like sdr_signal_stats or sdr_activity_feed, so an agent must infer the difference.

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: provide search_id for a single search, omit it for a workspace-wide merge. There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_resume_hunterResume ONE hunterCInspect

Resumes one paused hunter of a search.

NameRequiredDescriptionDefault
sourceYesHunter source id (see sdr_list_hunters)
search_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It states that the hunter is resumed but does not disclose what resuming means operationally, whether it consumes credits, what happens if the hunter is already active, or whether the action is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear, front-loaded sentence with no wasted words. It is appropriately concise, though the brevity contributes to gaps in usage and behavioral context rather than being a flaw of structure alone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and only partial parameter documentation, the description is too thin for a mutation tool. It does not cover prerequisites, error cases, effects on the search, or when the tool should not be used.

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 50%: the source enum has a description, but search_id is an undocumented UUID. The tile description does not explain either parameter, does not clarify the relationship between search_id and source, and adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Resumes one paused hunter of a search.' This clearly distinguishes resuming a single hunter from broader search-level operations, though it does not explicitly name sibling alternatives such as sdr_resume_search or sdr_activate_search.

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 phrase 'paused hunter' implies the usage condition, but there is no explicit when-to-use guidance, no exclusions, and no comparison to related tools like sdr_resume_search or sdr_pause_hunter. The agent must infer the appropriate context from the purpose statement alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_resume_outreachResume SDR outreach deliveryCInspect

Resume a paused SDR outreach campaign.

NameRequiredDescriptionDefault
search_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Resume' implies a state change (paused → active) and likely a write/mutation, but the description does not state that, nor whether it is idempotent, what happens if the outreach is not paused, or what side effects (sends queued emails/messages) occur. Significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no waste. It is concise, though at the cost of nearly all detail.

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 mutation tool with no annotations, no output schema, and 0% parameter documentation, the description is far too thin. It should state the required identifier, the paused-state precondition, and the effect of resuming.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single required parameter search_id is undocumented in both schema and description. The description gives no hint that an identifier is required or what it identifies, leaving an agent unable to supply it from the description alone.

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 (resume) and resource (SDR outreach campaign), and the 'paused' qualifier narrows the state it operates on. It lacks explicit differentiation from sibling sdr_resume_search and resume_channel (it says 'campaign' rather than 'outreach'), so it is clear but not fully disambiguated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. It does not tell the agent that the outreach must already be in a paused state, nor does it route to the similar sdr_pause_outreach, sdr_resume_search, or resume_channel siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_run_nowRun hunters nowAInspect

Starts (or wakes, if already running) one hunter or every enabled runnable hunter of a search. Paid engines use Vendo's provider budget, LinkedIn hunters the LinkedIn budget; contacts found cost 5 credits each. Call after sdr_preview_run_now.

NameRequiredDescriptionDefault
sourceNoHunter source id; cross_pool and people_pool run automatically and cannot be started by hand
search_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does real work: it discloses budget routing (paid engines draw on Vendo's provider budget, LinkedIn hunters on the LinkedIn budget) and a per-contact cost of 5 credits, plus the wake-if-already-running behavior. It does not say whether the call blocks or returns immediately, nor what a failure looks like when the budget is exhausted.

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 dense sentences: behavior first, then the cost model, then the prerequisite call ordering. No filler, and the prerequisite is correctly placed last where an agent will read it just before acting.

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 ground-truth-free mutation tool with no annotations and no output schema, the description covers cost and ordering but leaves the return contract undefined — an agent cannot tell whether it receives run/job identifiers, a summary, or just an acknowledgement, which matters when monitoring kicked-off work via sdr_run_state.

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 50%: the source enum already documents that cross_pool and people_pool run automatically and cannot be started by hand, and the description only repeats that behavior. search_id has no schema description; "of a search" implies it identifies which search owns the hunters but adds no detail on scope or failure when the search is inactive.

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: starts (or wakes) one hunter or every enabled runnable hunter of a search. The scope distinction between a single hunter and all runnable hunters is explicit. It does not distinguish itself from near-siblings like sdr_resume_hunter or sdr_activate_search, only from the preview tool, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Call after sdr_preview_run_now" gives an explicit prerequisite and names the alternative tool to use first. It stops short of stating when not to call it directly (e.g. whether a paused or inactive search must be handled by sdr_activate_search / sdr_resume_search first).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_run_statePrimary run state of a searchBInspect

Read-only. Overall run state of a search (running / paused / idle) with the current action.

NameRequiredDescriptionDefault
search_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does disclose that the operation is read-only and enumerates the returned state values, which is meaningful behavioral context. It does not cover permission requirements, error behavior, or what 'current action' contains.

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-load the read-only status and then state the returned information. There is no filler, and every phrase carries relevant meaning.

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 simple single-parameter read, the description gives the operation shape and return states, but it omits how to source search_id and does not disambiguate from sdr_run_states. With no annotations or output schema, that leaves a few operational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter and schema description coverage is 0%; the phrase 'of a search' ties search_id to a search but does not explain where to obtain the ID or reinforce its UUID format. The schema itself supplies type and format, so this is minimum viable rather than fully compensatory.

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 the resource (a search), the exact returned states (running / paused / idle), and that access is read-only. It is clear, but it does not distinguish this singular tool from the nearly identical sibling sdr_run_states or from sdr_get_search.

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 explicit guidance on when to choose this over sdr_run_states, sdr_get_search, or sdr_list_searches. The only implied condition is supplying a single search_id, so an agent must infer the use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_run_statesGet per-source hunter run-statesCInspect

Per-source map of run state (running / paused / idle) for a Signal Search.

NameRequiredDescriptionDefault
search_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not say whether this is a read-only polling call, whether it requires the search to be active, or how frequently it can be called. The only behavioral signal is the enumeration of possible state values, which is mild value but far short of what a zero-annotation tool needs.

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 tight sentence with no filler, and the most important concept (per-source run state) is front-loaded. It reads as a noun fragment rather than a complete statement, which slightly blunts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully discloses the return shape (a map keyed by source, valued by running/paused/idle). However, against a required-but-undocumented parameter, no annotations, and no guidance on timing or alternatives, it remains thin for an agent to call confidently.

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 0% and there is one required parameter, search_id, which the description never mentions. The phrase 'for a Signal Search' weakly implies the parameter's meaning, but format, source (e.g. from sdr_list_searches), and requiredness are left entirely undocumented.

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 resource (per-source run state) and its domain (a Signal Search), and even enumerates the possible state values (running / paused / idle). An agent can tell this apart from sdr_get_search or sdr_health, though the description never explicitly contrasts those siblings. The verb is only implied via the title.

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 call this versus sdr_get_search, sdr_health, or sdr_activity_feed, and no prerequisites are given. The agent must infer usage from the noun phrase alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_save_outreach_settingsSave SDR outreach settings (no launch)AInspect

Outreach window 1 "Save": Who to contact (icp_segment), channels, email sender mode/provider, LinkedIn accounts, time zone, working hours, weekends, daily limits, CRM branch. Partial: missing fields keep their saved values. Never launches: a new process stays a draft; a running one keeps its status and applies the change at once (widening Who to contact on a running process queues more contacts at 5 credits each). Set dry_run=true to preview.

NameRequiredDescriptionDefault
dry_runNo
channelsNo
timezoneNoIANA time zone, e.g. Europe/London
branch_idNoCRM branch for replies: a branch id from crm_list_branches, or null/'general' for General
search_idYes
icp_segmentNoWho to contact: fit (Fit + unchecked, default), fit_uncertain, all; legacy: uncertain, unfit, unchecked
work_end_hourNo
work_start_hourNo
exclude_weekendsNo
daily_email_limitNo
email_sender_modeNomanaged = Vendo sender pool (paid plans only); client_owned = the workspace's own connected mailboxes
daily_linkedin_limitNo
client_email_providerNo
selected_linkedin_account_idsNoIds from sdr_get_outreach → linkedin_accounts; empty = every connected account in status OK

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden well: it discloses partial-update semantics, no-launch behavior, immediate application on running processes, and the 5-credit cost when widening the contact segment on a running process. It does not cover permissions/auth or return behavior, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the save purpose before listing settings and caveats. The first phrase ('Outreach window 1 "Save"') is slightly cryptic and the long field list is dense, but every sentence adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation tool with no annotations and no output schema, the description covers the critical behavioral context: partial updates, launch exclusion, immediate application, cost, and dry-run preview. It could be more complete with explicit required search_id usage and return/auth details, but the core is present.

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 only 36%, but the description compensates by naming most parameter groups and adding key semantics: omitted fields keep saved values, dry_run previews, and widening icp_segment on a running process queues more contacts at cost. It still leaves search_id and some individual parameter value details to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific save operation for SDR outreach settings and lists the configurable groups: contact segment, channels, sender mode, LinkedIn accounts, time zone, hours, limits, and CRM branch. It also distinguishes this tool from launch behavior by saying 'Never launches' and explaining draft/running process outcomes, so it is separable from sdr_launch_outreach.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the main usage boundary clear: this is the Save path and never launches; a new process stays draft, while a running process keeps status and applies changes. It also advises dry_run=true for preview. It stops short of naming sdr_launch_outreach or other sibling alternatives explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_search_huntersHunters of one SDR searchAInspect

Read-only. Every hunter for a search: enabled or not, live run state, signals in 30 days, 7-day sparkline, and the current values of the settings it reads. The search page's hunter stations.

NameRequiredDescriptionDefault
search_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does well by explicitly declaring the tool read-only and enumerating the returned data: enabled status, live run state, 30-day signals, 7-day sparkline, and current setting values. It does not mention pagination, permissions, or error behavior, but for a read-only listing tool the disclosed behavior is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the key safety property, then moves directly into the returned fields. Every sentence adds useful information, and the final contextual phrase about hunter stations is compact rather than wasteful.

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 tool with one parameter, no annotations, and no output schema, the description is largely complete: it states read-only behavior and enumerates the important return fields. Remaining gaps such as pagination or ordering are minor for this kind of listing endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but there is only one parameter, search_id, whose type and UUID format are declared in the schema. The description adds that the parameter refers to an SDR search, which gives semantic context beyond the property name, but it does not explain how to obtain a search_id or add constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource and scope: every hunter belonging to one SDR search, including enabled status, run state, signal counts, sparkline, and setting values. This distinguishes it from single-hunter detail and mutation tools like sdr_set_hunters, though it does not explicitly name sibling alternatives such as sdr_list_hunters.

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 says it is read-only and implies usage by describing the search page's hunter stations, but it gives no explicit guidance on when to choose this tool versus sdr_list_hunters, sdr_hunter_detail, or sdr_get_search. The agent must infer the selection context from the tool name and resource scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_set_huntersSwitch hunters on/off for a searchAInspect

Enables/disables hunters (the wizard's Hunters step). Pass enable/disable lists, or enabled_sources as the full list. On an active search new hunters start within ~10 min (budget-throttled ones ~30); disabled ones stop at their next cycle. To stop one immediately without disabling it use sdr_pause_hunter.

NameRequiredDescriptionDefault
enableNo
disableNo
search_idYes
enabled_sourcesNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the load and does disclose the key behavioral traits: changes are asynchronous (~10 min for new hunters, ~30 min for budget-throttled ones, disabled hunters stop at next cycle), and enabled_sources is a full-list replacement. It does not mention required permissions, whether the search must be in a particular state, or what the call returns, leaving some gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the primary action and the parameter modes, then the timing caveat, then the alternative tool. No filler and nothing repeated from the schema.

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 4-parameter mutation tool with no annotations and no output schema, the description covers what changes, how long it takes, and which sibling to use instead. What it omits (auth requirements, effect when the search is inactive, result shape) are secondary but non-trivial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it distinguishes the incremental enable/disable pair from enabled_sources as a full replacement and points to sdr_list_hunters for valid source ids. Precedence if both enable and enabled_sources are supplied, and the semantics of search_id, remain unstated.

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 (enable/disable) and resource (hunters on a search), plus anchors it to the wizard's Hunters step. The sibling landscape has several hunter tools (sdr_configure_hunter, sdr_pause_hunter, sdr_list_hunters) and this description makes clear it is the bulk on/off switch.

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 routes the agent: use enable/disable lists for incremental changes, enabled_sources for a wholesale list replacement, and 'sdr_pause_hunter' when the goal is an immediate stop rather than a disable. The condition that selects each alternative is stated rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_set_person_groupMove a contact to Fit / Uncertain / Not a fitAInspect

Overrides the ICP verdict for one contact. Moving a free (precheck-skipped) contact to Fit charges 5 credits (402 if the balance is too low). Call sdr_preview_set_person_group first when moving to fits.

NameRequiredDescriptionDefault
idYes
groupYes
search_idYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations were provided, the description carries the full burden of behavioral disclosure. It excellently covers critical traits that impact usage: the cost ('charges 5 credits'), the condition under which the cost changes ('402 if the balance is too low'), and the operational prerequisite (calling the preview tool).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is highly efficient. The first sentence establishes the core function (overriding the ICP verdict), and the second sentence layers all critical usage constraints (financial, condition, and workflow) immediately afterward without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a financial transaction with workflow prerequisites (preview step) and potential system state changes (overriding ICP verdict), the description is maximally complete. It leaves no ambiguity regarding risk, cost, or method.

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?

While the description does not define the specific parameters (id, search_id, group), it provides semantic context for the target of the action: it applies to 'a free (precheck-skipped) contact.' This contextual framing adds meaningful constraints to the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool's purpose is crystal clear: to change the assigned group (Fit/Uncertain/Unfit) for a specific contact. The description effectively defines this action, and the title provides excellent quick context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides crucial usage guidelines by stating that the tool is for 'free (precheck-skipped) contact' and explicitly mandates calling 'sdr_preview_set_person_group first when moving to fits.' This is highly directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_signal_statsSignal stats by hunterBInspect

Read-only. KPI cards: fresh signals, signals and contacts by source over the last N days (1–90, default 30).

NameRequiredDescriptionDefault
daysNo
search_idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose read-only status and the aggregation window/default, which is useful. It does not disclose authorization needs, response shape, rate limits, or whether results are scoped to a search or hunter, leaving key behavior unspecified.

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 are front-loaded with read-only status and the metric list, with no filler. The terseness reflects missing scope details rather than structural verbosity.

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 two-parameter read-only stats tool with no annotations or output schema, the description is incomplete: it covers days and metric categories but omits the required search_id's meaning and return structure. Sibling differentiation and scope (search vs hunter) are also absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It documents days well (1–90, default 30), adding the default absent from the schema, but never mentions the required search_id or what UUID scope it represents, leaving one of two parameters—and the only required one—unexplained.

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 gives a concrete read-only stats resource and enumerates metrics (fresh signals, signals and contacts by source) over a bounded window. It does not distinguish this from analytics siblings like sdr_recent_signals, sdr_overview, sdr_hunter_daily, or sdr_daily_by_hunter, so it lands at 4 rather than 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?

Only 'Read-only' and 'KPI cards' imply dashboard-style aggregation; no when-to-use criteria, prerequisites, or alternatives are named. An agent has no guidance on choosing this over sdr_recent_signals, sdr_daily_by_hunter, or sdr_overview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_start_researchResearch a company website (New SDR wizard)AInspect

Starts the New SDR wizard for a company + website, exactly like the web app: reuses the company profile for the same domain or builds a hidden one (website deep scan, playbook; 16 credits), then runs the ICP research (1–3 min, not billed). Returns agent_id and either the research job or a setup state. Poll sdr_get_research until the job status is done, then call sdr_create_search with research_job_id. Only call after the user approved sdr_preview_start_research.

NameRequiredDescriptionDefault
forceNo
websiteYes
company_nameYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does a strong job: it discloses credit cost (16 credits), runtime (1–3 min), billing status (ICP research not billed), profile reuse for matching domains, hidden profile creation, and the shape of the return value. It does not explain permission requirements or the meaning of the force parameter, which keeps it just below full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient: it front-loads the action and then packs in cost, timing, return shape, polling instructions, and the prerequisite approval in a short sequence. Every sentence adds operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex multi-step workflow tool with no annotations and no output schema, the description is mostly complete: it explains cost, timing, returns, and the required follow-up calls. The main gap is the unexplained force parameter and lack of permission/auth context.

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 0%, so the description must compensate. It mentions company and website conceptually but gives no format or validation guidance, and it entirely omits the force parameter, leaving one of three parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: starting the New SDR research wizard for a company plus website. It also explains the wizard's internal behavior and distinguishes itself from related tools by naming sdr_preview_start_research, sdr_get_research, and sdr_create_search.

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?

It explicitly states the prerequisite ('Only call after the user approved sdr_preview_start_research') and gives the full follow-up sequence: poll sdr_get_research until done, then call sdr_create_search with the research_job_id. This leaves little ambiguity about when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sdr_update_outreach_contentEdit SDR outreach messagesCInspect

Outreach windows 2–3: email (mode ai/fixed/html, prompt, tone, ≤5 fixed variants with {{placeholders}}, per-step follow-ups, own-HTML steps, signature, auto-reply) and LinkedIn (invite on/off, ai/exact texts, follow-up, delay after accept, conversation rules, auto-reply delays, signature, Calendly). Partial; takes effect on new sends. Follow-up changes are blocked while an email sequence is already sending.

NameRequiredDescriptionDefault
emailNo
linkedinNo
search_idYes

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that updates are partial, take effect on new sends, and that follow-up changes are blocked during an active email sequence. It still omits permission requirements, whether the operation is destructive or reversible, and how validation failures are surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and avoids wasted prose, but it is a single dense sentence built from parenthetical lists. It is not front-loaded with a clear action, making it harder to scan than a short lead sentence followed by grouped details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex mutation tool with nested email and LinkedIn objects, no annotations, and no output schema. The description provides a useful overview of covered areas and one blocking rule, but it is not complete enough for safe invocation because it omits the required search_id, authentication/permission expectations, and merge semantics for partial updates.

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?

Reported schema description coverage is 0%, so the description must compensate heavily. It names many email and LinkedIn subfields and even notes the ≤5 variants limit and placeholder support, but it omits the required search_id entirely and leaves many boolean, timing, and mode parameters unexplained. It also does not clarify how partial object merging works.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as SDR outreach content for email and LinkedIn, and lists the kinds of settings that can be edited. However, it never states an explicit verb such as 'updates' and does not distinguish this tool from nearby siblings like sdr_save_outreach_settings or sdr_preview_outreach_content. The purpose is inferable but not stated with crisp action-oriented clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one important operational constraint: follow-up changes are blocked while an email sequence is already sending. It does not explain when to use this tool instead of sdr_get_outreach_content, sdr_preview_outreach_content, or sdr_save_outreach_settings, nor does it describe prerequisites such as needing an existing search_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_audienceSearch the people databaseAInspect

Search the people graph for prospects matching include AND exclude filters (countries, cities, industries, positions, company sizes, tags, company keywords, language, freshness, must-have-email/LinkedIn/phone/booking link). PREVIEW only — returns aggregate counts and a small sample. Does not save anything, does not contact anyone, does not spend credits. Next: save_audience with the same filters.

NameRequiredDescriptionDefault
cityNo
tagsNo
limitNoSample size (max 100)
citiesNo
countryNo
languageNoApproximate language segment by country set, e.g. "russian"
positionNo
countriesNoCountry names, e.g. ["United Kingdom","Germany"]
positionsNoJob titles / roles, e.g. ["CEO","Head of Sales"]
industriesNo
maxAgeDaysNoOnly people added within the last N days
searchModeNo
companySizeNo
companySizesNo
exactKeywordNoExact phrase (searchMode=exact)
mustHaveEmailNo
mustHavePhoneNo
semanticQueryNoFree-text description of the ideal person (searchMode=semantic)
excludedCitiesNo
companyKeywordsNoKeywords matched in company description / name / position
excludeCountriesNo
mustHaveLinkedinNo
excludedPositionsNo
excludedIndustriesNo
mustHaveBookingUrlNo
excludedCompanySizesNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does so well: it discloses that this is a read-only preview returning aggregate counts plus a small sample, and that nothing is persisted or credited. It stops short of noting rate limits, cost profile, or how the sample size relates to `limit`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, then the preview guarantee, then the next step. The long parenthetical filter list is dense but each item maps to real parameters rather than filler.

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?

It covers the return shape meaningfully for a tool with no output schema ('aggregate counts and a small sample'), which is the strongest part. However, for a 26-parameter search tool with 31% schema coverage, the absence of any guidance on searchMode selection or single-vs-plural field precedence leaves real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 31% across 26 parameters, so the description must compensate; it enumerates the filter families and states the include-AND-exclude logic, which is real added meaning. But it says nothing about `searchMode` and its coupling to `exactKeyword`/`semanticQuery`, and leaves most individual params undocumented.

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 ('search the people graph for prospects') plus the exact filter categories it accepts, and differentiates itself from the saving sibling by naming `save_audience` as the next step.

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 frames this as a preview/non-committal step ('does not save anything, does not contact anyone, does not spend credits') and routes to `save_audience` with the same filters. It doesn't distinguish itself from near-neighbours like `sdr_create_search` or `sdr_preview_search`, so the routing is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_campaign_emails_nowSend prepared emails now (REAL emails)AInspect

Send up to limit prepared emails immediately, ignoring the schedule. REAL emails to real people. Only after the user approved preview_send_campaign_emails_now.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
limitNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still carries the critical behavioral disclosure: this is an irreversible real-world send ('REAL emails to real people'), it bypasses the schedule, and it must be gated by prior user approval. It stops short of describing credit consumption, rate limits, or what happens when `limit` exceeds the number of prepared emails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the irreversible-send warning and the approval precondition front-loaded before any parameter detail. Every sentence 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 destructive send tool with no annotations and no output schema, the definition covers the essentials an agent needs: irreversibility, schedule override, the approval gate, and the send-count cap. Only secondary operational details (credit cost, partial-failure behavior) are absent.

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 50% — `id` is documented as a campaign UUID from list_campaigns, but `limit` has no schema description. The description conveys the meaning of `limit` ('send up to limit prepared emails') but not its bounds or what happens to unsent emails, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Send ... prepared emails'), the override behavior ('immediately, ignoring the schedule'), and scopes it by the `limit` parameter. It is clearly distinguishable from preview_send_campaign_emails_now and schedule_campaign_delivery 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?

Gives an explicit precondition — 'Only after the user approved preview_send_campaign_emails_now' — which simultaneously names the required prior tool and implies the when-not case. The 'ignoring the schedule' clause further routes the agent away from schedule_campaign_delivery for scheduled sends.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_linkedin_messageSend a LinkedIn message (REAL, 5 credits)AInspect

Send a REAL LinkedIn message in the chat; costs 5 credits, the AI stops messaging this contact (human takeover) and the CRM lead moves to Manager Dialog. Only after the user approved preview_send_linkedin_message.

NameRequiredDescriptionDefault
textYes
chat_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full load and does well: it discloses the 5-credit cost, the irreversible external effect ('REAL'), the side effect that the AI stops messaging and a human takes over, and the CRM stage transition to Manager Dialog. It omits failure modes, rate limits, and what happens if the contact is already under takeover, which keeps it from 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-loaded with the action and the 'REAL' flag, and every clause (cost, takeover, CRM move, approval gate) carries information. The dense semicolon-chained sentence packs four distinct facts together, which is slightly harder to scan than separate clauses.

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 2-parameter irreversible outbound-send tool with no annotations and no output schema, the description covers costs and side effects but leaves the agent without parameter sourcing guidance or any statement of what a successful/failed send returns. Adequate, but the chat_id provenance gap is a real omission for a tool with no schema help.

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 0%, so the description must explain both parameters and does not. 'In the chat' hints that chat_id refers to an existing LinkedIn conversation, but there is no guidance on where chat_id comes from (e.g. list_linkedin_conversations / get_linkedin_conversation) and no constraint on 'text' length, formatting, or media support.

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 ('Send a REAL LinkedIn message in the chat') and immediately distinguishes itself from the preview sibling and from campaign/telegram send tools by naming the actual external effect. An agent can tell what it does and what it is not without opening the 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?

Gives a hard precondition: 'Only after the user approved preview_send_linkedin_message', which names the required alternative tool and the approval gate. It does not cover adjacent cases (e.g. when to prefer takeover_linkedin_contact or campaign-thread replies), so it is clear context rather than exhaustive when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_telegram_messageSend a Telegram message as the operatorAInspect

Sends a REAL Telegram message from the bot to this person (human takeover). Only after preview_send_telegram_message and the user approved the exact text.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
chat_idYes
messageYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and usefully discloses that this performs a REAL external send during human takeover and requires exact-text approval. It does not cover permissions, rate limits, failure behavior, or whether delivery is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly written sentences with the core action and critical precondition front-loaded. Every phrase contributes useful information without repetition.

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?

It covers the most important safety context for a real outbound message, but with no annotations, no output schema, and low parameter coverage it remains incomplete on chat_id semantics and what a successful or failed send returns.

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%, so the description should compensate for undocumented parameters. It does not explain chat_id at all and only vaguely implies the message via 'exact text', leaving key parameter meaning to the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: sending a REAL Telegram message from the bot to a person. It also distinguishes the tool from its preview counterpart by naming preview_send_telegram_message and the approval requirement.

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?

It gives an explicit prerequisite: use only after preview_send_telegram_message and after the user approves the exact text. This clearly routes the agent away from calling it directly without preview or approval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_avatar_from_urlSet the agent's own photoAInspect

Upload a custom avatar photo (JPG, PNG or GIF, ≤5 MB) from a public image URL or base64. Replaces the preset face. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
image_urlNoPublic https URL of the image
image_base64NoBase64 or data: URL of the image (use instead of image_url)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose useful behavior: it overwrites the preset face, accepts only JPG/PNG/GIF up to 5 MB, and costs nothing. It omits permission requirements, reversibility, and what happens on invalid input or failed fetch, which matter for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action and constraints front-loaded; every clause (formats, size, source options, replacement effect, cost) 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 three-parameter, fully documented, non-destructive-setup tool with no output schema, the description covers format, size, source, and replacement semantics adequately. Only permission and failure-mode context is missing, which is a minor gap given schema completeness.

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, and the description adds genuinely new semantics beyond the schema: allowed image formats, the 5 MB cap, and the either/or choice between URL and base64 sourcing. It still doesn't clarify the id source, but the schema already points to list_agents.

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 (upload a custom avatar photo) and resource (agent's avatar), plus concrete format and size constraints. It doesn't explicitly distinguish itself from the sibling set_profile_avatar, so an agent must infer the agent-vs-user distinction from the 'id' parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (supply a URL or base64 to replace the preset face) but never states when to call this versus update_agent or set_profile_avatar, nor any prerequisites such as needing an existing agent id. The 'Free' note gives a mild cost signal but no decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_companySet company info (name / website / description)AInspect

Required before generate_agent_script will work. Set the company the agent represents — its name, website, and what it sells.

NameRequiredDescriptionDefault
idYes
company_nameYes
company_websiteYes
company_descriptionYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It usefully discloses the hard dependency on generate_agent_script, but says nothing about whether existing values are overwritten, whether the id must reference an existing agent, or what happens on partial/invalid input.

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 with the prerequisite front-loaded before the field list. No filler, though it is very sparse for a required-parameter mutation tool.

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 4-required-param, annotation-free mutation with no output schema and zero schema coverage, the description omits the id semantics and the set/overwrite behavior. The prerequisite is covered but the mutating contract is not.

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 0%, so the description must compensate. It names three of the four parameters (name, website, description) in natural language, but never explains the required `id` parameter or any format expectations such as website URL form.

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?

Names a specific verb (set) and resource (agent company info) and enumerates the three fields being written. The naming sits cleanly alongside the other set_agent_* siblings, though it does not explicitly contrast itself 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States a concrete ordering prerequisite — 'Required before generate_agent_script will work' — which tells the agent when this must be called. It stops short of naming alternatives for configuring the agent (e.g. update_agent) or noting any when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_contact_channelsSet the contacts the agent hands outAInspect

Set the meeting link, presentation link, email, phone, WhatsApp, Telegram and up to 10 custom links that the agent gives to visitors (also shown as screen cards). MERGE: only the channels you pass change; pass "" (or null for custom_links) to clear one. Write, free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
emailNo
phoneNo
telegramNo
whatsappNo
meeting_urlNoBooking link, e.g. Calendly (http/https)
custom_linksNoReplaces the whole custom link list; null or [] clears it
presentation_urlNoLink to a presentation/deck (http/https)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and discloses that this is a write operation, that it is free, that updates are merged rather than replaced, and how to clear a channel. It also notes custom links are limited to 10 and appear as screen cards, though it does not cover permission prerequisites or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the tool's purpose, then immediately follows with the critical merge/clear semantics. Every clause adds useful information without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no annotations and no output schema, the description gives an agent enough to invoke it correctly: which channels exist, merge behavior, clearing rules, and the custom-link cap. The main omission is that it does not mention the required agent id, though the schema documents that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning beyond the schema by naming each channel type and explaining merge/clear semantics, including empty-string clearing and null for custom_links. Schema coverage is only 50%, and the description does not mention the required id parameter, but it covers the semantically important parameters well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it sets the meeting link, presentation link, email, phone, WhatsApp, Telegram, and custom links that the agent gives to visitors. Enumeration of exact channel types distinguishes it from sibling setters like set_agent_company, set_agent_voice, and set_agent_integrations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the merge behavior, which is the key usage rule for this setter: only passed channels change, and passing an empty string or null clears a channel. It does not explicitly name alternatives such as update_agent or state when to avoid this tool, so it falls short of full alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_integrationsSet legacy integration flagsAInspect

Legacy flags on the agent (zoom_enabled, google_meet_enabled, website_embed_enabled). Channels are managed with the connection tools; this does not connect anything. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
zoom_enabledNo
google_meet_enabledNo
website_embed_enabledNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that this does not connect anything and that the operation is free, but omits permissions, reversibility, and whether omitted flags are left unchanged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero waste; the legacy flag scope is front-loaded and the connection exclusion follows immediately.

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 mutation tool with no annotations, no output schema, and partial schema coverage, the description adds useful context about legacy status and non-connection behavior. It still leaves gaps around permissions, reversibility, and the effect of omitted booleans.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low at 25% (only id is documented in the schema). The description names the three boolean flags and frames them as legacy, which partially compensates, but adds no further semantic detail about the flags or the id.

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?

Names the resource (agent) and the exact legacy flags, and explicitly distinguishes them from channel connections managed by connection tools. The description lacks an explicit verb, but the title supplies 'Set' and the scope is still clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an exclusion: channels are managed with connection tools and this does not connect anything. However, it gives no positive trigger for using legacy flags versus update_agent or set_agent_contact_channels.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_statusPause / resume / archive an agentCInspect

Change agent status. Allowed values: ACTIVE, PAUSED, ARCHIVED, DRAFT.

NameRequiredDescriptionDefault
idYes
statusYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about side effects: whether ARCHIVED is reversible, whether changing status interrupts running campaigns or conversations, or what permissions are needed. The only concrete behavior, the allowed values, merely duplicates the schema enum.

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, front-loaded sentences with no filler, so it is efficiently structured. It is arguably under-specified rather than over-long, which is a completeness problem rather than a conciseness one.

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 mutation tool with no annotations, no output schema, and 0% parameter documentation, the description should explain the consequences of each transition (especially archival) and the required identifier. It omits all of this, leaving the agent unable to predict side effects.

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 0%, so the description must compensate for both parameters. It enumerates the status values (already present as an enum in the schema) but says nothing about the 'id' parameter or the format of the agent identifier, leaving a real gap.

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 ('Change agent status'), and the title clarifies the intended transitions (pause/resume/archive). It does not explicitly differentiate itself from siblings like delete_agent or update_agent, 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?

There is no guidance on when to use this tool versus delete_agent, update_agent, or pause_campaign. The usage is only weakly implied by the title's mention of pause/resume/archive, with no conditions or alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_voiceTurn on / configure the website-widget voiceAInspect

Configure the voice of the agent's website widget exactly like the app's widget settings page and create/update the voice agent at the voice provider, so voice calls in the widget really work. Only the settings you pass change (the rest keep their saved values or the app defaults). voice_id is required the first time (list_voice_catalog). Takes up to ~1 min. Free to configure; widget voice calls cost 14 credits/min.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
llmNoModel: fast, balanced (default) or smart
rulesNoCommunication rules (plain text instructions for how the agent talks). Omit to keep the saved ones
speedNoSpeaking pace, 0.7-1.3 (1 = normal)
volumeNo
ambientNoBackground sound; "" = none
emotionNoDelivery: neutral, expressive (warm), calm, dynamic (energetic)
handbookNoBehaviour switches (only the ones you pass change)
voice_idNoVoice id from list_voice_catalog (e.g. "retell-Grace", "11labs-Adrian")
languagesNoRetell locales like ["en-US","uk-UA"]; more than one = multilingual (answers in the caller's language). [] or one locale = script language only
end_call_sNoHang up after this many seconds of silence
backchannelNoShort "mm-hm" acknowledgements while the person talks
screen_cardsNoShow interactive cards (buttons/forms) on screen during voice calls
denoising_modeNo
responsivenessNoHow fast the agent answers (1 = fastest)
expressive_modeNoOnly works for voices marked expressive in list_voice_catalog
reminder_secondsNoNudge a silent person after N seconds; 0 = off
dynamic_voice_speedNo
ambient_sound_volumeNo
backchannel_frequencyNo
dynamic_responsivenessNo
interruption_sensitivityNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden, and it delivers above-average disclosure: partial-update semantics, an external side effect (create/update the agent at the voice provider), a ~1 min execution time, zero configuration cost versus 14 credits/min for calls. It still doesn't cover failure modes (e.g. invalid voice_id, missing provider permission) or whether repeated calls are idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with the core action and its side effect front-loaded, then semantics, then cost/latency. Almost no waste, though the first sentence is a long run-on that could be split for faster parsing.

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 22-parameter mutation tool with a nested handbook object, no annotations and no output schema, the description covers the essentials an agent needs: patch semantics, the required-first-time parameter and its source tool, latency, and cost. Gaps remain around error/prerequisite conditions and what the tool returns on success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 68%, so the schema does much of the work, but the description adds cross-cutting meaning the schema can't express: omitted fields retain saved values/defaults, voice_id is mandatory on first configuration only, and rules can be omitted to keep existing text. The remaining undocumented params (handbook switches, denoising_mode, dynamic_* toggles) are left to the schema, which is acceptable at this coverage level.

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 (configure) plus resource (agent's website-widget voice) and adds the concrete side effect of provisioning the voice agent at the provider. The 'website widget' scoping clearly separates it from siblings like set_telegram_voice_settings and set_presentation_voice without needing to name them.

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 says voice_id is required the first time and routes the agent to list_voice_catalog, which is a genuine when/how prerequisite. It also clarifies patch semantics ('only the settings you pass change'). It does not state when to prefer setup_phone_agent or set_telegram_voice_calls instead, so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_presentation_ctaSet the presentation call-to-actionBInspect

The button viewers see: a lead form (fields) or a link. Only what you pass changes (fields replaces the whole field list). Leads land in list_narrator_leads. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
typeNo
fieldsNo
enabledNo
linkUrlNo
buttonTextNo
successMessageNo
linkOpenInNewTabNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries real weight and delivers: it discloses PATCH-style merge behavior ('only what you pass changes'), a destructive sub-behavior ('fields replaces the whole field list'), a downstream side effect (leads land in list_narrator_leads), and cost (free). It stops short of stating permission/ownership requirements or the 12-field cap already in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short fragments, zero filler, with the conceptual framing (what the button is) front-loaded ahead of the mutation semantics. Slightly telegraphic — 'Free.' and 'Leads land in list_narrator_leads.' are terse to the point of ambiguity about scope.

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?

A mutating, 8-parameter tool with no annotations and no output schema needs more than this. The patch semantics and lead-capture side effect are well covered, but the mode-dependent parameters and the required id are left to the schema, which describes almost none of them.

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 13% across 8 parameters, so the description must compensate and largely does not. It adds meaning for type (form vs link) and fields (whole-list replacement), but says nothing about linkUrl, buttonText, successMessage, enabled, or linkOpenInNewTab — including which parameters only apply in link mode.

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 explains what the artifact is ('the button viewers see') and that it takes one of two mutually exclusive shapes: a lead form built from fields, or a link. Combined with the title, an agent can tell this sets the presentation CTA, though the description itself never states the verb or the target resource (a presentation agent) 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?

It implies usage through the form-vs-link distinction but never says when to choose a form over a link, what prerequisites exist, or how it relates to set_presentation_slides / set_presentation_look / set_presentation_voice. The agent must infer its place in the presentation-configuration workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_presentation_lookSet the presentation look & behaviourAInspect

Theme, colours, corner radius, controls, autoplay, voice on/off, chat on/off, Modern look (background, glass, font, panel side, presenter bubble, voice visual), slide transition and button texts. Only what you pass changes. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
textsNo"" or null = default text
themeNo
designNo
modernNo
autoplayNo
textColorNo
transitionNo
buttonColorNo
chatEnabledNoViewers can chat
borderRadiusNo
showControlsNo
voiceEnabledNoViewers can listen/talk by voice
progressColorNo
backgroundColorNo
buttonTextColorNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses two useful traits the schema cannot: mutations are partial ("Only what you pass changes") and the call is free. It says nothing about permissions/ownership of the agent, reversibility of the change, or the fact that nested "modern" options only take effect under design=modern, which is a real behavioral caveat.

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 dense telegraphic list where each clause maps to an actual parameter, so nothing is padding. The two short sentences at the end ("Only what you pass changes. Free.") are placed last, whereas the partial-update rule would be more useful front-loaded.

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 16-parameter mutation with a nested object, no annotations, and no output schema, the description gives broad field coverage but omits the relationship between design and modern, the colour field taxonomy, and any confirmation of what is returned. Adequate to start a call, not complete enough to call confidently without reading the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 25% schema coverage for 16 parameters, the description compensates well by naming almost every input in human terms: "corner radius"→borderRadius, "controls"→showControls, "voice on/off"→voiceEnabled, "chat on/off"→chatEnabled, "Modern look (background, glass, font, panel side, presenter bubble, voice visual)"→modern.*, "button texts"→texts. It stops short of value semantics (hex colour formats, enum choices) and of noting which of the five colour fields map to backgroundColor/textColor/buttonColor/buttonTextColor/progressColor.

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 enumerates the concrete settings this tool controls (theme, colours, corner radius, controls, autoplay, voice/chat toggles, modern-look sub-options, transition, button texts), which makes the resource and effect identifiable at a glance. It does not explicitly name the neighbouring presentation tools (set_presentation_slides, set_presentation_cta, set_presentation_voice) to draw a boundary, though the enumerated field list implicitly separates it.

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?

"Only what you pass changes" is a genuine usage rule for partial updates, and "Free" tells the agent there is no credit cost to calling it. However, there is no statement of when to prefer this over set_presentation_voice/set_presentation_cta, no prerequisites (the id must come from list_agents, only visible in the schema), and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_presentation_slidesSave the presentation slidesAInspect

Save the slide deck — REPLACES all slides (add, remove, reorder, edit). Each slide: image (public URL or base64; JPG/PNG/WebP/GIF ≤5 MB; omit to keep the stored image of an existing slide id), extracted text and presenter script. PDF upload is not supported by the API: render the PDF pages to images first. Then write scripts with generate_slide_script and set_presentation_voice. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
slidesYes
pdf_nameNoName of the presentation, e.g. "Pitch deck.pdf"

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so well: it discloses the destructive replace-all semantics, the image formats and 5 MB limit, how omitting an image interacts with a retained slide id, and a hard API limitation (no PDF). These are exactly the behavioral facts an agent needs before a full overwrite call.

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?

Dense but front-loaded — the destructive REPLACES clause comes first where it matters most. Some of the clause-stacking ('...PDF upload is not supported by the API: render the PDF pages to images first. Then write scripts...') reads a bit crammed, but almost every sentence carries weight.

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 full-overwrite mutation with no annotations and no output schema, it covers constraints, formats, and next steps well. It's only slightly incomplete in not hinting at what the save returns or confirming cost/auth beyond 'Free'.

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 67%, and the description adds real meaning beyond it: image formats and size cap, the 'omit to keep the stored image of an existing slide id' rule, and what extracted text / narrator script represent. It doesn't clarify pdf_name or page_number, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb and resource ('Save the slide deck') and immediately defines the operation's scope: REPLACES all slides with add/remove/reorder/edit semantics. An agent can distinguish this write operation from generate_slide_script or set_presentation_voice without opening the 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?

Gives a clear workflow context ('Then write scripts with generate_slide_script and set_presentation_voice') and a when-not constraint ('PDF upload is not supported... render the PDF pages to images first'). It doesn't explicitly name when to prefer an alternative slide-writing tool, but the surrounding guidance is strong enough to route the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_presentation_voiceSet the presenter's voiceBInspect

The Slide Presenter's own voice and model (the website widget voice is not touched). Same settings as the app; only what you pass changes. Needs saved slides. Takes up to ~1 min. Free to configure; presentation voice costs 17 credits/min.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
llmNoModel: fast, balanced (default) or smart
rulesNoCommunication rules (plain text instructions for how the agent talks). Omit to keep the saved ones
speedNoSpeaking pace, 0.7-1.3 (1 = normal)
volumeNo
ambientNoBackground sound; "" = none
emotionNoDelivery: neutral, expressive (warm), calm, dynamic (energetic)
handbookNoBehaviour switches (only the ones you pass change)
voice_idNoVoice id from list_voice_catalog (e.g. "retell-Grace", "11labs-Adrian")
languagesNoRetell locales like ["en-US","uk-UA"]; more than one = multilingual (answers in the caller's language). [] or one locale = script language only
end_call_sNoHang up after this many seconds of silence
backchannelNoShort "mm-hm" acknowledgements while the person talks
screen_cardsNoShow interactive cards (buttons/forms) on screen during voice calls
denoising_modeNo
responsivenessNoHow fast the agent answers (1 = fastest)
expressive_modeNoOnly works for voices marked expressive in list_voice_catalog
reminder_secondsNoNudge a silent person after N seconds; 0 = off
dynamic_voice_speedNo
ambient_sound_volumeNo
backchannel_frequencyNo
dynamic_responsivenessNo
interruption_sensitivityNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a reasonable job: it discloses patch semantics ("only what you pass changes"), a prerequisite (saved slides), latency (~1 min), and the cost split (free to configure, 17 credits/min for presentation voice). It does not cover permissions, reversibility, or response shape, which keeps it off 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?

Four compact clauses, each carrying a distinct fact (scope, merge semantics, prerequisite, latency/cost), with the scope statement front-loaded. Slightly telegraphic style but no wasted sentences.

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?

There is no output schema and no annotations, and the tool has 22 parameters, so the description should do more. It adequately covers behavior, cost, and prerequisites, but leaves a third of the parameters unexplained and says nothing about what the call returns or confirms.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 68% across 22 parameters, and several (volume, denoising_mode, dynamic_voice_speed, backchannel_frequency, dynamic_responsiveness, interruption_sensitivity, ambient_sound_volume) have no description at all. The tool description adds no per-parameter guidance — no units, defaults, or interaction notes — so the undocumented params stay undocumented.

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 resource and scope: the Slide Presenter's own voice and model, explicitly excluding the website widget voice. This distinguishes it from set_agent_voice and widget-voice tools. The verb is implied by the tool name rather than restated, which is acceptable but keeps it 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Needs saved slides" gives a real prerequisite, and the widget-voice exclusion signals a boundary. However, it never explicitly says when to use this instead of set_presentation_slides, set_agent_voice, or set_telegram_voice_settings, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_profile_avatarSet my profile photoAInspect

Upload a JPG/PNG/GIF (≤5 MB) as the profile photo, from an https URL or base64.

NameRequiredDescriptionDefault
filenameNoe.g. me.png (required with content_base64)
image_urlNoPublic https image URL
content_base64No

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It discloses real constraints an agent needs — accepted MIME types, the 5 MB ceiling, and that the source must be https or base64 — but says nothing about whether an existing avatar is overwritten, what permissions/scope apply ('my' profile implies self-auth but isn't stated as a requirement), or how failures surface.

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 dense sentence that front-loads the action and the hard constraints (formats, size cap) before the input source options. Every clause carries information; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three optional parameters, no output schema, and no annotations, the description covers format, size, and source adequately but leaves out the things an agent most needs here: how the mutually exclusive source parameters are selected and the fact that filename is required in the base64 case. Adequate for a simple mutation, but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with content_base64 carrying no schema description at all, so the description does useful compensating work by stating the two mutually exclusive input modes (https URL vs base64). It still doesn't clarify that image_url and content_base64 are alternatives rather than combinable, nor that filename pairs specifically with the base64 path beyond what the schema already says.

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 gives a specific verb (upload/set) and resource (the profile photo) plus accepted formats and size cap, so the operation is unmistakable. It implicitly separates itself from set_agent_avatar_from_url by saying 'profile photo', but it never names that sibling explicitly, so sibling differentiation relies on inference.

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 usage context is implied by the resource name — this is the tool for your own profile picture, not an agent's. However, there is no explicit when/when-not guidance and no mention of the relevant neighbors update_profile (other profile fields) or set_agent_avatar_from_url (agent images), leaving the agent to infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_telegram_voice_callsTurn Telegram voice calls on/offAInspect

Show or hide the VOICE button of the agent's Telegram bot (voice calls in the mini app). Needs a connected bot. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
enabledYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses two real facts: the connected-bot prerequisite and that the operation is free. It does not say what happens if the bot is disconnected (error vs no-op) or how the toggle interacts with existing voice settings, leaving the mutation semantics partly opaque.

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, front-loaded with the action and resource, followed by prerequisite and cost. Every clause carries information; nothing is redundant.

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 low-complexity two-parameter toggle with no output schema, the description covers purpose, prerequisite, and pricing. It stops short of the details that would make it fully self-sufficient — failure behavior when no bot is connected and the relationship to the sibling settings tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'id' is documented in the schema as an agent UUID from list_agents, while 'enabled' is bare. The description's "show or hide" implicitly maps to enabled=true/false, which recovers the semantic of the undocumented parameter, but adds no format or default detail beyond that.

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 concrete verb pair (show/hide) and a concrete resource (the VOICE button of the agent's Telegram bot), with a parenthetical clarifying it governs voice calls in the mini app. An agent can distinguish it from reconfigure_telegram_bot, though not explicitly from the near-twin set_telegram_voice_settings.

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?

"Needs a connected bot" gives one prerequisite that gates usage, which is genuinely useful. However, there is no guidance on when to pick this over set_telegram_voice_settings or reconfigure_telegram_bot, so the agent must infer the boundary from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_telegram_voice_settingsSet the Telegram voiceAInspect

Voice and behaviour of the Telegram bot's voice calls (separate from the website widget): the same settings as set_agent_voice plus the mini app look (visual). Only what you pass changes. Needs a connected bot. Takes up to ~1 min. Free to configure; calls are billed per minute.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
llmNoModel: fast, balanced (default) or smart
rulesNoCommunication rules (plain text instructions for how the agent talks). Omit to keep the saved ones
speedNoSpeaking pace, 0.7-1.3 (1 = normal)
visualNoLook of the mini app during a call
volumeNo
ambientNoBackground sound; "" = none
emotionNoDelivery: neutral, expressive (warm), calm, dynamic (energetic)
handbookNoBehaviour switches (only the ones you pass change)
voice_idNoVoice id from list_voice_catalog (e.g. "retell-Grace", "11labs-Adrian")
languagesNoRetell locales like ["en-US","uk-UA"]; more than one = multilingual (answers in the caller's language). [] or one locale = script language only
end_call_sNoHang up after this many seconds of silence
backchannelNoShort "mm-hm" acknowledgements while the person talks
screen_cardsNoShow interactive cards (buttons/forms) on screen during voice calls
denoising_modeNo
responsivenessNoHow fast the agent answers (1 = fastest)
expressive_modeNoOnly works for voices marked expressive in list_voice_catalog
reminder_secondsNoNudge a silent person after N seconds; 0 = off
dynamic_voice_speedNo
ambient_sound_volumeNo
backchannel_frequencyNo
dynamic_responsivenessNo
interruption_sensitivityNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does it well: 'Only what you pass changes' declares partial-update semantics, plus prerequisite ('needs a connected bot'), latency ('~1 min'), and cost model ('free to configure; calls billed per minute'). It omits error behavior for invalid voice_id/locale values and whether changes affect in-flight 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?

Four short sentences, front-loaded with the object being configured, then prerequisite, update semantics, latency and cost. Every clause carries information and nothing repeats the schema.

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 23-parameter mutation tool with no annotations and no output schema, the description covers the things an agent must know before calling: connected-bot prerequisite, partial vs full update, one-minute propagation, and billing. The remaining gap is disambiguation from set_telegram_voice_calls, which is the highest-risk omission given the names.

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?

At 70% schema coverage the description only adds one concrete field-level note ('the mini app look (visual)') and otherwise delegates via 'the same settings as set_agent_voice'. Roughly seven parameters (volume, denoising_mode, dynamic_voice_speed, ambient_sound_volume, backchannel_frequency, dynamic_responsiveness, interruption_sensitivity) have no description anywhere, and the cross-reference does not fully close that gap.

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+resource ('Voice and behaviour of the Telegram bot's voice calls') and scopes it against the website widget and against set_agent_voice ('same settings as ... plus the mini app look'). It never distinguishes itself from the near-identically-named sibling set_telegram_voice_calls, which is the one alternative an agent is most likely to confuse it with.

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?

'Separate from the website widget' plus 'same settings as set_agent_voice' gives a usable routing rule, and 'Needs a connected bot' states the prerequisite explicitly. It stops short of naming when to prefer set_telegram_voice_calls or reconfigure_telegram_bot, so the boundary against the closest 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.

setup_phone_agentSet up the Voice Call channelAInspect

Create/update the agent's Voice Call channel like the app: attach one of YOUR numbers (list_phone_numbers), objective, script (generated if omitted), greeting, voice, pace, emotion, language, rules, inbound calls on/off, background sound, silence/reminder timings. Creates the phone voice agent at the provider and links the number (with accept_incoming the number starts answering real calls). Takes up to ~1 min. Free to set up; calls cost 25 credits/min. Only call after preview_setup_phone_agent and the user's approval.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
speedNo
emotionNo
languageNoauto = script language; multi = switch to the caller's language
voice_idNoFrom list_retell_voices / list_voice_catalog
call_scriptNo
voice_genderNo
ambient_soundNo
connection_idNoExisting PHONE_CALL channel; default = the agent's first one or a new one
call_objectiveNo
accept_incomingNoAnswer calls TO this number with an inbound agent
phone_number_idNoRequired the first time — from list_phone_numbers
greeting_messageNo
enable_backchannelNo
communication_rulesNo
end_call_silence_secondsNo
reminder_trigger_secondsNo
max_call_duration_secondsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it discloses that a real voice agent is provisioned at the provider, that accept_incoming makes the number answer real calls, that the operation can take ~1 minute, and that setup is free while calls cost 25 credits/min. It omits update semantics (what an existing channel loses when re-run) and any permission/auth or failure/rollback behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and packed with signal; the parenthetical "(generated if omitted)" and the cost/latency sentences all earn their place. It reads as one long comma-spliced enumeration, which is dense but not 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 an 18-param mutation tool with no annotations and no output schema, the description covers prerequisites, input sources, side effects, cost and duration. The main remaining gap is that with no output schema it never says what comes back (a connection/channel id?), which an agent would want before chaining calls.

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 only 33% with 18 parameters, so the description needs to compensate, and it largely does by naming the meaningful knobs in plain language (script "generated if omitted", inbound calls on/off, silence/reminder timings, pace, emotion, background sound). It adds real semantics for a few params but does not clarify the numeric ranges or the distinction between connection_id and phone_number_id.

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 pair and resource — "Create/update the agent's Voice Call channel" — and immediately enumerates the configuration surface (number, objective, script, voice, language, inbound, background sound, timings). This clearly separates it from preview_setup_phone_agent (the dry run) and from generic connection tools like create_agent_connection.

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 hard prerequisite chain — "Only call after preview_setup_phone_agent and the user's approval" — and routes the agent to list_phone_numbers and list_retell_voices for inputs. It does not explicitly say when a different tool should be used instead (e.g. create_agent_connection or set_agent_contact_channels, which could also touch a PHONE_CALL channel), leaving one ambiguity among many siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_workspace_member_permissionsSet a member's feature accessAInspect

Restrict what a (non-admin) member sees: an allow-list of features, or null for full access. "crm-contact-details" controls whether they see lead emails/phones. Admins only; the owner and admins cannot be restricted.

NameRequiredDescriptionDefault
user_idYesMember user_id from get_workspace
permissionsYesAllowed features, or null = full access

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does well: it discloses that this is a restrictive write, requires admin privileges, has an exception carve-out for owners/admins, and that null means unrestricted access. It stops short of saying whether the list fully replaces prior access or merges with it, which matters for a permissions mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core semantics, then the one non-obvious enum, then the access preconditions. No filler and every clause conveys information an agent needs before calling.

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 annotations and no output schema, this covers purpose, value semantics, and authorization limits well. The remaining gap is replacement vs. merge behavior on an existing allow-list, which an agent would want to know before overwriting a member's access.

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 the baseline is 3, but the description adds genuine value beyond the schema by explaining what the otherwise opaque enum value 'crm-contact-details' actually gates (lead emails/phones). The null/full-access explanation duplicates the schema's own text, so it earns no extra credit.

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 ('Restrict what a (non-admin) member sees') and immediately defines the core data shape: an allow-list of features, or null for full access. The scope is clear enough to distinguish it from role-management siblings like set_workspace_member_role, though it never names that sibling explicitly.

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 real applicability constraints: only non-admin members can be targeted, the caller must be an admin, and the owner and admins cannot be restricted. It does not mention the related preview_set_workspace_member_role flow or explicitly route the agent away from set_workspace_member_role, so the when-to-use picture is clear but not fully differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_workspace_member_rolePromote / demote a workspace adminAInspect

admin=true makes the member an admin (full access, can manage team and pipelines); false demotes to member. Owner only. Only call after the user approved preview_set_workspace_member_role.

NameRequiredDescriptionDefault
adminYes
user_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the privilege requirement, the privilege-escalation/de-escalation effect, and the approval-gated workflow. It does not describe the response or failure modes (e.g., what happens if the caller is not the owner), 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?

Three short sentences, front-loaded with the parameter effect, then the permission constraint, then the workflow gate. No filler and nothing repeated from structured fields.

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 and no annotations, so the description must stand alone; it covers effect, authorization, and sequencing. Missing only return-value expectations and error behavior, which an agent managing a privileged mutation would plausibly want.

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 0%, so the description must compensate; it fully explains the non-obvious parameter by giving meaning to both the true and false branches of 'admin'. 'user_id' is left entirely undocumented, though its meaning is self-evident from the name.

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 the concrete effect of the call: admin=true promotes a member to admin with full access (team and pipeline management), false demotes to member. The resource ('workspace member role') is carried mostly by the tool name rather than the prose, but the two-state effect is unambiguous and clearly distinct from the preview sibling.

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?

Gives an explicit prerequisite ('Owner only') and a hard usage gate ('Only call after the user approved preview_set_workspace_member_role'), naming the alternative tool that must precede it. An agent knows both who may call it and in what order.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_custom_audience_enrichmentStop a running enrichmentAInspect

Stop an in-progress enrichment after the current contact (stops further spending). Already-enriched contacts stay enriched and charged.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does substantial work: it discloses partial completion behavior (stops after the current contact), spending implications (stops further spending), and that already-enriched contacts remain enriched and charged. Missing idempotency or no-op behavior, but the key operational consequences are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loaded with the action and followed immediately by the important behavioral and billing consequences. No wasted text.

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 single-parameter stop action with no output schema, the description covers the important operational semantics: partial completion and cost impact. It leaves only minor gaps such as behavior when no enrichment is running.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single id parameter is already documented as the custom audience UUID. The description adds no parameter-specific meaning beyond that, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: stop an in-progress custom audience enrichment. The scope is precise enough to distinguish it from enrich_custom_audience and status-related siblings without opening the 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?

Makes clear it is for an enrichment that is already in progress and notes that stopping occurs after the current contact. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_campaign_statsRefresh campaign email countersAInspect

Pull the latest sent/opened/clicked/replied/bounced counters from the sending provider and store them. Max once per minute per campaign. No credits.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the burden well: it discloses an external provider call, a persisted write ('store them'), a per-campaign rate limit (once per minute), and that it consumes no credits. It omits what happens if the rate limit is hit and whether existing stored counters are overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the constraint, then the cost note. Nothing is wasted and every sentence contributes operational 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 one-parameter tool with side effects and no annotations or output schema, the description covers source, persistence, throttling, and cost. The only real gap is the return shape (does it return the refreshed counters or just an acknowledgement), which no schema supplies either.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `id` parameter is already documented as a campaign UUID from list_campaigns. The description adds only the notion that the counters apply 'per campaign', which is marginal 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 action and resource: pull sent/opened/clicked/replied/bounced counters from the sending provider and persist them. The 'refresh/store' framing implicitly separates it from read-only siblings like get_campaign_email_stats, 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?

'Max once per minute per campaign' implies the tool is for on-demand freshness rather than bulk reporting, but the description never says when to prefer this over get_campaign_email_stats or get_campaign_analytics, nor what happens on a too-frequent call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

takeover_campaign_threadTake over an AI email conversationBInspect

Stop the AI from replying in this conversation; a human continues (reply_in_campaign_thread). Nothing is sent.

NameRequiredDescriptionDefault
thread_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Nothing is sent' is a genuinely useful disclosure of negative space for a state-changing tool, confirming the takeover does not emit a message to the contact. It does not say whether the takeover is reversible, whether the AI can be re-enabled, or what permissions are needed.

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 short sentence with the action front-loaded, followed by the practical reassurance and the follow-up tool. There is little waste, though the parenthetical could be framed more explicitly as guidance.

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 one-parameter tool with no annotations and no output schema, the core behavior (halt AI replies, send nothing) is covered. Missing are how to reference the thread and whether the state change can be undone, which matter for an agent deciding to call it.

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?

The single parameter thread_id has 0% schema description coverage and the description never mentions it. The agent is left to infer the identifier format and where to obtain it (e.g., from list_campaign_threads or get_campaign_thread).

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 action (stop the AI from replying) on a specific resource (this conversation), and adds the human-continuation framing. It does not, however, distinguish itself from the sibling close_campaign_thread, which reads as a similar termination action, leaving the agent to infer the difference.

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 '(reply_in_campaign_thread)' points at the natural next step after takeover, which implies the use case. But there is no explicit when-to-use statement and no guidance on when close_campaign_thread would be preferred instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

takeover_linkedin_contactTake over a LinkedIn contactAInspect

Stop the AI from messaging this LinkedIn contact (outreach id from list_campaign_linkedin_outreach or list_linkedin_conversations); pending auto-replies are cancelled. Nothing is sent.

NameRequiredDescriptionDefault
outreach_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still discloses the important side effects: AI messaging is stopped, pending auto-replies are cancelled, and no message is sent. It does not cover permissions, reversibility, or how to hand the contact back to the AI, leaving some behavioral gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the action front-loaded, the ID source in parentheses, and side effects at the end. Every phrase adds information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no annotations or output schema, the description supplies the action, the input source, and the key outcomes. It is nearly complete, but could state whether the takeover is reversible or what the caller should expect afterward.

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 0%, so the description must carry the parameter meaning; it does by specifying that outreach_id comes from list_campaign_linkedin_outreach or list_linkedin_conversations. It stops short of documenting the exact ID format or field name in those responses.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Stop...messaging') and a precisely scoped resource ('this LinkedIn contact'), and the parenthetical names the two list tools that supply the outreach id. An agent can distinguish this contact-level takeover from message-sending or campaign-thread tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It makes the use case clear—stop AI outreach for a contact—and identifies where the required outreach_id comes from, which is the key prerequisite. It does not explicitly compare with siblings such as takeover_campaign_thread or send_linkedin_message, so it lacks full alternative/exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_agent_replyAsk the agent a test question (text)AInspect

Send a message to the agent and get its reply using its current script — a text test, nobody is contacted. Needs a generated script. Use history for a multi-turn test.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
historyNoEarlier turns, oldest first
messageYesWhat the visitor says

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does real work: it discloses that the reply comes from the agent's current script, that no real contact occurs, and that a script must exist first. It does not mention credit consumption or whether the test affects agent state, which are the remaining unknowns for a dry-run tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, zero filler, with the no-contact safety assurance placed early. Every sentence carries actionable 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 3-param dry-run tool with no output schema, the description covers the prerequisite, the side-effect profile, and the multi-turn mechanism. Only the shape of the reply and any cost implication are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so id, message and history are already documented. The description only adds that history is what enables a multi-turn test, which is a marginal restatement of the schema's "Earlier turns, oldest first".

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 (send a message to the agent, get its reply) and immediately scopes it as a text test that contacts nobody, which cleanly separates it from the phone/call testing siblings. An agent can pick this over phone_test_call 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a hard prerequisite ("Needs a generated script") and a conditional steering rule ("Use history for a multi-turn test"). It stops short of naming the phone alternative explicitly, so the text-vs-voice routing 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.

update_agentUpdate agent basicsAInspect

Change an agent's name, description, direction (purpose), voice gender or preset face. Only the fields you pass change. Company name/website/description → set_agent_company; contacts → set_agent_contact_channels. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
nameNo
genderNo
purposeNo
descriptionNo
avatar_presetNoPreset face avatar-1 … avatar-20

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden: it usefully discloses partial-update semantics and that the operation is free (credit cost is a real concern in this platform, cf. get_balance/get_credit_usage tools). However, it says nothing about permission requirements, whether changes are reversible, or whether altering voice gender/face affects in-flight calls or existing audio.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: fields first, semantics second, alternative routing third, with zero filler. Every clause earns its place and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no annotations and no output schema, the description covers the editable surface, partial-update behavior, cost, and sibling routing. It lacks failure/validation behavior and permission context, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only id and avatar_preset are documented), so the description must compensate — and it does, mapping 'purpose' to direction, 'gender' to voice gender, and 'avatar_preset' to preset face in plain terms. The enum values themselves (male/female, sales/support/info) are carried by the schema, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact editable fields (name, description, purpose, gender, preset face) and explicitly routes company and contact edits to their own sibling tools, so an agent can separate it from set_agent_company and set_agent_contact_channels. It doesn't draw a boundary against set_agent_voice or set_agent_avatar_from_url, which overlap with 'voice gender' and 'preset face', so sibling differentiation is incomplete.

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' establishes clear PATCH semantics for when to use it, and the two explicit redirects tell the agent when NOT to use it. The remaining overlap with set_agent_voice/set_agent_avatar_from_url is left unaddressed, so the guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_agent_connectionChange a channel's settingsAInspect

Change a channel: website widget look and behaviour (design, colours, button picture, invitation/auto-open, sounds, contact form and its wording, greetings, page navigation, voice view), name, website_url, Google Meet settings or phone texts. Only what you pass changes; widget texts and theme are merged. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
nameNo
website_urlNo
connection_idYesChannel (connection) id (UUID) — from list_agent_connections
widget_configNoWebsite widget settings (only what you pass changes; texts/theme are merged)
phone_call_configNoVoice Call texts only; number, voice and inbound are set with setup_phone_agent
google_meet_configNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral load. It usefully discloses merge semantics for widget texts/theme and the 'Free' cost profile (no credit spend), which are not annotation-derived. It says nothing about permissions, whether changes go live immediately, or how errors surface for a multi-branch 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?

One front-loaded sentence names the verb and resource before the long parenthetical inventory, so the agent gets the gist first. The widget list is dense and run-on, but every clause maps to a real schema area rather than padding.

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 nested, annotation-free mutation tool with no output schema, the description covers the major editable domains plus the key partial-update and merge rules. Residual gaps are the required-id sourcing and the boundary against sibling tools that own phone number/voice and Google Meet connection setup.

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?

At 57% schema coverage with 7 params and deep nesting, the description usefully enumerates the widget sub-surfaces (design, colours, button picture, invitation/auto-open, sounds, contact form wording, greetings, page navigation, voice view) that correspond to widget_config properties, and separates Meet settings from phone texts. The two required identifiers (id, connection_id) and their provenance are only in the schema, not the description.

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 opens with a specific verb+resource ('Change a channel') and then enumerates the concrete surfaces it covers (widget look/behaviour, name, website_url, Google Meet, phone texts), which lets an agent map it to the right schema branches without opening them. It does not name a sibling it is distinct from (e.g. create_agent_connection, setup_phone_agent), so differentiation is left to 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?

'Only what you pass changes' tells the agent this is a partial-update tool rather than a replace, which is real usage guidance. However, there is no explicit when-not-to-use, no pointer to a read tool (get_agent_connection) before editing, and no mention that phone number/voice/inbound belong to a different tool — that routing hint exists only inside the schema, not in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_agent_scriptEdit the agent's script stagesAInspect

Replace the script stages (rename, reorder, edit, add or remove stages) and optionally the tone, like the builder's script editor. Send the FULL list of stages you want; the full text is rebuilt from them. Get the current stages from get_agent (script_sections). Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
sectionsYesAll stages in order
email_scriptNoWritten-channel script (email/LinkedIn); omit to keep
script_styleNoTone; omit to keep the current one

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the key replacement behavior: the full text is rebuilt from the supplied full list, and optional fields are kept when omitted. It does not disclose permissions, reversibility, error behavior, or response details, leaving meaningful gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and efficient: the replacement operation, full-list requirement, source of current stages, and tone option are all stated without waste. Every sentence 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 mutation tool with no annotations or output schema, the description is reasonably complete: it explains the full-replacement model and how to get current data. It still omits return behavior and some operational constraints, keeping it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds important semantics about sections: the FULL list must be sent because the full text is rebuilt. It also reinforces optional tone behavior and points to get_agent for current stages.

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: replace script stages, with optional tone changes. It clearly distinguishes the operation from generation tools by emphasizing that the full list is sent and the full text is rebuilt.

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 clear usage context: send the FULL list of stages, and retrieve current stages from get_agent (script_sections). It does not explicitly compare against generate_agent_script or update_agent, so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaignUpdate campaign (wizard settings)AInspect

Change a campaign's name, description or any wizard setting (partial: send only what changes; settings are merged). agentId and branchId can be changed only while the campaign is a draft. Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. On a running campaign, changed email steps/delays are not applied once anything was sent (settings.smartleadSequencePending). No sending, no credits.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
nameNo
agentIdNoDraft only
branchIdNoDraft only; null = General
settingsNo
descriptionNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: merge semantics for partial updates, draft-only restrictions on agentId/branchId, the 'changed email steps/delays are not applied once anything was sent' caveat pointing at smartleadSequencePending, the paid-plan requirement for managed sender mode, and the explicit no-send/no-credit side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and constraints are front-loaded, which is good, but the long comma-delimited list of every settings key duplicates what the schema already declares and bloats the middle of the description. Splitting into short labeled sentences would make it far more scannable.

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 nested-parameter mutation tool with no output schema, the description covers the mutation semantics, the restrictions, and the key side-effect caveat. It does not say what the tool returns or how errors are surfaced, which leaves a minor gap.

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 50% and nested, so description must compensate; it does by enumerating the optional settings keys (including ones the schema leaves undocumented against the 50% figure) and explaining merge semantics and the draft-only rule. It omits a few schema fields (speedTier, trackLinks, stopOnNegative, clientEmailProvider) and largely restates the emailContent/linkedinContent shape, so not a full 5.

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?

Opens with a specific verb and resource ('Change a campaign's name, description or any wizard setting') and immediately states the scope, distinguishing it from create_campaign and update_campaign_discovery. The parenthetical 'partial: send only what changes; settings are merged' makes the mutation model unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage conditions: send only what changes, agentId/branchId only while draft, and 'No sending, no credits' to steer the agent away from send/launch tools. It never names a sibling alternative explicitly (e.g. update_campaign_discovery for discovery settings), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaign_discoveryEnable / change AI lead discovery (SPENDS CREDITS)AInspect

Turn on or adjust automatic lead discovery: it runs daily, SPENDS CREDITS up to daily_discovery_budget_credits and adds new leads to the campaign audience. Same args as preview_update_campaign_discovery; only after the user approved that preview. Disabling (enabled=false) needs no preview.

NameRequiredDescriptionDefault
idYesCampaign id (UUID) from list_campaigns
enabledNo
require_emailNo
search_sourceNo
max_leads_per_dayNo
apollo_search_configNo
max_total_discoveredNo
signal_search_configNo
search_interval_minutesNo
daily_discovery_budget_creditsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does well: it discloses credit spend bounded by daily_discovery_budget_credits, daily recurrence, lead creation in the audience, and the approval prerequisite. It does not say what happens to already-discovered leads or counters when the config is changed, or whether the budget is validated against remaining balance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the highest-stakes fact (SPENDS CREDITS), then the approval gate, then the disable exception. Zero filler.

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 10-parameter mutation with nested objects, no annotations and no output schema, the description covers the decision-critical behavior but leaves most parameters unexplained and says nothing about what a successful update returns or verifies. Adequate to decide whether to call it, thin for calling it correctly with non-default config.

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 only 10% across 10 parameters, so the description must compensate. It adds real meaning only for daily_discovery_budget_credits (spend cap) and enabled (false disables), and otherwise defers entirely via 'Same args as preview_update_campaign_discovery', leaving search_source, max_leads_per_day, both nested search configs, search_interval_minutes and max_total_discovered undocumented.

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?

Specific verb + resource: 'Turn on or adjust automatic lead discovery', with scope details (runs daily, adds leads to campaign audience, cost impact). It is clearly distinguished from the sibling preview_update_campaign_discovery, which the description names explicitly.

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?

Explicit gating rule: only call after the user approved the preview, and the named workaround for the exception ('Disabling (enabled=false) needs no preview'). An agent knows both when to use it and when it may skip the preview path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_crm_integration_settingsUpdate CRM integration settingsAInspect

What to sync and where: sync_conversations, sync_contacts, create_leads, auto_sync, pipeline_config (Kommo pipeline_id / stage_id / responsible_user_id from list_kommo_pipelines / list_kommo_users), field_mapping. Affects what is written into the external CRM — confirm with the user.

NameRequiredDescriptionDefault
providerYes
auto_syncNo
create_leadsNo
field_mappingNo
sync_contactsNo
pipeline_configNo
sync_conversationsNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does carry part of the burden and does disclose that changes flow into the external CRM and warrant user confirmation. However, it leaves the most consequential behaviors unstated: whether omitted fields are left untouched or reset, whether a partial update can break existing mappings, and what the response contains.

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 dense paragraph, front-loaded with the field list and ending on the safety caution — nothing is filler. The leading label phrase is a fragment rather than a sentence, which slightly weakens the opening.

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 7-parameter mutation with a nested object, zero schema descriptions, and no annotations or output schema, the description covers field names but not the ambiguity an agent actually faces: merge vs replace semantics, field_mapping format, and the required provider choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it names every settable field including the pipeline_config sub-keys and points at the sibling tools that supply those IDs. It omits the required 'provider' parameter (kommo/hubspot) and never explains the key/value shape or expected identifiers in field_mapping.

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 enumerates exactly which integration settings are configured (sync_conversations, sync_contacts, create_leads, auto_sync, pipeline_config, field_mapping) and scopes them to the external CRM, which separates it from internal siblings like crm_update_settings. The action verb itself is only implied by the title, since the body opens with the fragment 'What to sync and where:'.

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?

It gives a real prerequisite hint for pipeline_config values (from list_kommo_pipelines / list_kommo_users) and a caution to 'confirm with the user', which is genuine usage guidance for a mutation. It never says when to use this versus get_crm_integration, connect_crm_integration, or crm_update_settings, and does not say whether reading current settings first is expected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_custom_audience_contactEdit a contact in a custom audienceBInspect

Edit one contact of a custom audience (only the fields you pass change). No credits.

NameRequiredDescriptionDefault
idYesCustom audience id (UUID)
cityNo
emailNo
phoneNo
countryNo
websiteNo
positionNo
telegramNo
whatsappNo
full_nameNo
last_nameNo
contact_idYesContact id (UUID)
first_nameNo
company_nameNo
facebook_urlNo
linkedin_urlNo
instagram_urlNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that only passed fields change and that the operation costs no credits, but it omits permissions, error behavior when a contact is missing, validation behavior, and return/response details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact clauses and is front-loaded with the action and scope. The partial-update note and the 'No credits' note both add useful information without waste.

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 17-parameter mutation tool with no annotations, no output schema, and very low schema description coverage, the description is too sparse. It covers partial-update semantics and cost, but leaves parameter meanings, permissions, and failure behavior undocumented.

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 12%, with just the two required UUID fields documented. The description mentions partial updates but does not explain the other 15 optional contact fields or add meaning beyond their property names, so it does not compensate for the low schema coverage.

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: editing one contact in a custom audience. It also clarifies partial-update behavior, which helps distinguish it from bulk-add or delete siblings, though it does not explicitly name those alternatives.

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 phrase 'Edit one contact' implies this is for updating an existing custom-audience contact, and 'only the fields you pass change' implies partial updates. However, it gives no explicit when-to-use guidance against siblings like add_custom_audience_contacts, delete_custom_audience_contact, or get_custom_audience_contacts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_google_meet_settingsChange Google Meet settingsBInspect

Auto-join, minutes before start, greeting, language, meeting mode (voice only / presentation — needs slides). Only what you pass changes. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
languageNoMeeting language code, e.g. "en"
auto_joinNo
meeting_modeNopresentation = shares the agent's slides (needs slides)
greeting_messageNo
join_before_minutesNoJoin N minutes before start (default 1)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses partial-update semantics and the slides dependency for presentation mode, plus that the operation is free, but it omits prerequisites such as needing Google Meet connected and does not describe permissions or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and every phrase corresponds to a setting or behavior, with no filler. It is telegraphic rather than fully structured, which slightly reduces readability but keeps it appropriately 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 six-parameter mutation tool with no annotations and no output schema, the description covers the updated fields and partial-update behavior. However, it leaves out important operational context such as whether Google Meet must already be connected and what the caller should expect on success or failure.

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 67%, with descriptions for id, language, meeting_mode, and join_before_minutes. The tool description adds meaning by mapping the remaining settings and clarifying that presentation mode needs slides, which is useful context beyond the schema's enum label.

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 the settings that can be changed (auto-join, join timing, greeting, language, meeting mode) and the title/name identify it as an update operation. It is distinguishable from get_google_meet_settings and connect_google_meet, though the description itself does not explicitly say it updates an agent's Google Meet configuration.

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 explicit guidance about when to use this tool versus alternatives such as get_google_meet_settings or connect_google_meet. The phrase "Only what you pass changes" explains partial-update behavior but does not provide when/when-not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_linkedin_account_settingsUpdate LinkedIn account settingsAInspect

Change AI auto-replies, invite / follow-up pitch, CTA, signature, reply delays/limits for ONE LinkedIn account (applies to all campaigns and SDR processes using it). Send only changed fields. To switch AI replies off for a single campaign use update_campaign settings.linkedinAutoReplyDisabled. No credits.

NameRequiredDescriptionDefault
toneNo
enabledNoAI auto-replies on/off
agent_idNo
timezoneNo
account_idYes
invite_ctaNo
invite_toneNo
calendly_urlNoBooking link offered in replies
contact_infoNo
followup_ctaNo
invite_pitchNo
product_pitchNo
working_hoursNo
followup_pitchNo
signature_modeNo
signature_textNo
invites_enabledNo
followup_enabledNo
daily_reply_limitNo
signature_enabledNo
custom_instructionsNo
reply_delay_max_minutesNo
reply_delay_min_minutesNo
invite_custom_instructionsNo
followup_custom_instructionsNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the burden — and it discloses the two traits that matter most: blast radius (changes apply to all campaigns and SDR processes using the account) and cost (no credits). It omits permissions/auth requirements and whether invalid field combinations (e.g. min > max delay) are rejected, 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?

Four tight sentences with no filler; the scope and blast radius are front-loaded before the alternative-tool pointer. Slightly dense but every clause adds information.

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 25-parameter, nested-object mutation with no annotations and no output schema, the description covers selection and blast radius but says nothing about the response, prerequisite reads (get_linkedin_account_settings), or validation/limit interplay. Adequate, with visible gaps for such a wide tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 8% across 25 parameters (only 'enabled' and 'calendly_url' are annotated), so the description must compensate. It does group several concepts (pitches, CTAs, signature, delays/limits) but leaves many params — timezone, contact_info, working_hours, agent_id, custom_instructions, tone/signature_mode enums — unexplained, so it partially but not fully closes the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change/update) and resource (settings of ONE LinkedIn account) and enumerates the domains it touches: AI auto-replies, invite/follow-up pitch, CTA, signature, reply delays/limits. The 'ONE LinkedIn account' scope plus the explicit pointer to update_campaign cleanly separates it from the campaign-level sibling.

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?

Gives the key usage rule ('Send only changed fields' = partial update) and an explicit alternative with its condition: use update_campaign settings.linkedinAutoReplyDisabled to disable AI replies for a single campaign. That is exactly the when/when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_narrator_leadUpdate a presentation leadCInspect

Set a presentation lead's status (new / contacted / converted / spam) and notes. Free.

NameRequiredDescriptionDefault
idYesAgent id (UUID) — from list_agents
notesNo
statusNo
lead_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose cost ('Free'), which is real added context, but says nothing about partial vs full updates (e.g. does omitting notes overwrite it?), permissions, or whether the write is reversible.

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 compact sentence front-loads the action and enumerates the fields, with 'Free.' as a separate cost note. Nothing is padded, though the brevity contributes to the missing guidance rather than pure economy.

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?

Placeholder.

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% — only `id` is documented (and only as 'from list_agents'). The description covers status values and notes but is silent on `lead_id`, which is required and undocumented in both schema and description; the agent must guess whether it comes from list_narrator_leads.

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?

Uses a specific verb ('Set') and names the exact mutable fields (status, notes) on a presentation lead, and it enumerates the allowed status values. It does not distinguish this from the CRM lead tools (crm_update_lead) that appear in the sibling list, so the agent may hesitate between near-identical 'lead' vocabularies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus crm_update_lead, list_narrator_leads, or delete_narrator_lead. There is no mention of prerequisites, of whether the lead must already exist, or of how a narrator lead differs from a CRM lead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_notification_preferencesUpdate my notification preferencesBInspect

Turn personal notifications on/off. Turning them off means the human stops being alerted (e.g. low credits, meetings) — confirm with the user first.

NameRequiredDescriptionDefault
credit_alertsNo
meeting_remindersNo
email_notificationsNo
in_app_notificationsNo
analytics_emails_enabledNoPeriodic analytics report emails

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description appropriately discloses the human impact of turning notifications off and warns to confirm first. It still leaves out mutation semantics such as whether omitted booleans remain unchanged, partial-update behavior, reversibility, and permission requirements.

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 main action and followed by the critical warning. There is no wasted text, and the confirmation instruction is placed where it is most useful.

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 mutation tool with five parameters, no annotations, no output schema, and low schema description coverage, the description is too thin. It explains the high-level effect but not enough about update semantics or parameter-specific behavior for reliable invocation.

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 20% across five boolean parameters, so the description should compensate but largely does not. It mentions 'low credits' and 'meetings' as examples, but does not map these to `credit_alerts` or `meeting_reminders`, nor explain `email_notifications`, `in_app_notifications`, or `analytics_emails_enabled`.

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/resource pair ('Turn personal notifications on/off') and names the user-facing effect. It is distinguishable from the sibling `get_notification_preferences`, but it does not explicitly route the agent between reading and updating preferences.

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?

It gives a clear usage constraint for disabling notifications ('confirm with the user first') and examples of affected alerts. However, it does not say when to use this versus `get_notification_preferences` or other notification-related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_profileUpdate my profileAInspect

Change first_name, last_name, company_name, position of the API key owner. (Email, password and 2FA are UI-only.)

NameRequiredDescriptionDefault
positionNo
last_nameNo
first_nameNo
company_nameNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden alone; it does disclose the useful negative scope (email/password/2FA cannot be changed here). However it never says whether this is a partial update (all four params are optional), whether omitted fields are left untouched, or what authorization/response behavior to expect for a mutation.

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, zero filler, with the writable-field list front-loaded and the caveat immediately after. Every clause carries information an agent would otherwise have to guess.

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 simple four-optional-param mutation with no output schema, the description covers which fields are changeable and which are not, but leaves the update semantics (partial vs. replace) and success behavior unstated. Adequate to invoke, incomplete to invoke confidently.

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 0%, and the description names all four parameters by exact key, which compensates for the missing schema docs at a basic level. It adds no meaning beyond the names — no format, no per-field rules, no indication of how partial omission is handled — so it lands at minimum-viable rather than strong.

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 concrete verb ('Change') plus the exact resource fields (first_name, last_name, company_name, position) and scopes them to the API key owner's own profile. This clearly separates it from adjacent tools like get_profile or set_profile_avatar, though it never names a sibling 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 implied rather than stated, but the parenthetical '(Email, password and 2FA are UI-only.)' is a genuine exclusion that stops the agent from attempting unsupported fields. There is no explicit 'use this instead of X' routing, which is the missing piece.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_custom_audienceCreate a custom audience from a fileAInspect

Create a custom audience from a CSV/XLSX/XLS/TSV/TXT file given as base64 or an https URL. Parsing runs in the background: poll get_custom_audience until status is "ready". No credits (enrichment is a separate, paid step).

NameRequiredDescriptionDefault
nameNoAudience name (default: file name)
file_urlNoPublic https URL to fetch the file from (≤10 MB). Use this OR content_base64.
filenameNoFile name WITH extension (decides the type). Required with content_base64.
column_mappingNo{ "<column index>": "<field>" } from preview_custom_audience_file (suggestedMapping / fieldOptions). Omit for auto-detect.
content_base64NoFile content, base64 (≤ ~7 MB). Use this OR file_url.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses the key non-obvious behavior that parsing runs in the background requiring a poll, and the billing consequence (no credits for this call). It omits the failure/error behavior and permission requirements, keeping it from 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?

Three tightly packed sentences, front-loaded with the core action and follow-up operational facts. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no annotations and no output schema, the description supplies the critical async/polling and credit-model context an agent needs to invoke it correctly. Remaining details (column mapping sourcing, size limits) are adequately covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reinforces file formats and the two input methods but adds no syntax or constraints beyond what the schema already documents; the schema, not the description, carries column_mapping and size limits.

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 (Create) and resource (custom audience) scoped to file ingestion, and lists the accepted formats (CSV/XLSX/XLS/TSV/TXT) plus both input methods (base64 or https URL). It does not explicitly differentiate from the sibling create_custom_audience, so it falls just 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: parsing is asynchronous, so the agent should poll get_custom_audience until status is 'ready', and it clarifies the credit model (no credits here, enrichment is separate/paid). It lacks an explicit comparison to create_custom_audience or preview_custom_audience_file, so no exclusion guidance.

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. 2 tool updates
    • Changedcreate_campaign2 fields changed
      • changedInput schema / properties / settings / properties / workingHours / description
        Previous value: -"[startHour, endHour] in the campaign timezone (default [9,18])."New value: +"[startHour, endHour] in the campaign timezone (default [9,18]). Two integers: start 0-23, end 1-24."
      • changedInput schema / properties / settings / properties / workingHours / items
        Previous value: -[
        -  {
        -    "maximum": 23,
        -    "minimum": 0,
        -    "type": "integer"
        -  },
        -  {
        -    "maximum": 24,
        -    "minimum": 1,
        -    "type": "integer"
        -  }
        -]New value: +{
        +  "maximum": 24,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedupdate_campaign2 fields changed
      • changedInput schema / properties / settings / properties / workingHours / description
        Previous value: -"[startHour, endHour] in the campaign timezone (default [9,18])."New value: +"[startHour, endHour] in the campaign timezone (default [9,18]). Two integers: start 0-23, end 1-24."
      • changedInput schema / properties / settings / properties / workingHours / items
        Previous value: -[
        -  {
        -    "maximum": 23,
        -    "minimum": 0,
        -    "type": "integer"
        -  },
        -  {
        -    "maximum": 24,
        -    "minimum": 1,
        -    "type": "integer"
        -  }
        -]New value: +{
        +  "maximum": 24,
        +  "minimum": 0,
        +  "type": "integer"
        +}
  2. 7 tool updates
    • Changedarchive_campaign1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Campaign id (UUID) from list_campaigns"
    • Changeddisconnect_telegram_bot1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
    • Changedlist_agent_presentations1 field changed
      • addedInput schema / properties / include_images
        Added value: +{
        +  "description": "Add slide image URLs",
        +  "type": "boolean"
        +}
    • Addedpreview_archive_campaign
    • Addedpreview_connect_whatsapp_account
    • Addedpreview_disconnect_telegram_bot
    • Addedpreview_setup_phone_agent
  3. 302 tool updates
    • Addedactivate_campaign_linkedin
    • Addedactivate_campaign_phone
    • Addedadd_agent_document
    • Addedadd_campaign_linkedin_account
    • Addedadd_custom_audience_contacts
    • Addedcancel_meeting
    • Addedcancel_workspace_invitation
    • Addedclose_campaign_thread
    • Addedconnect_client_mailbox
    • Addedconnect_content_account
    • Addedconnect_crm_integration
    • Changedconnect_google_meet6 fields changed
      • addedInput schema / properties / auto_join
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / greeting_message
        Added value: +{
        +  "maxLength": 1000,
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / join_before_minutes
        Added value: +{
        +  "description": "Join N minutes before start (default 1)",
        +  "maximum": 30,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "Meeting language code, e.g. \"en\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / meeting_mode
        Added value: +{
        +  "description": "presentation = shares the agent's slides (needs slides)",
        +  "enum": [
        +    "voice_only",
        +    "presentation"
        +  ],
        +  "type": "string"
        +}
    • Addedconnect_whatsapp_account
    • Changedcreate_agent6 fields changed
      • addedInput schema / properties / avatar_preset
        Added value: +{
        +  "description": "Preset face avatar-1 … avatar-20 (male: 1,4,6,8,10-15; female: 2,3,5,7,9,16-20). For your own photo use set_agent_avatar_from_url afterwards",
        +  "pattern": "^avatar-([1-9]|1[0-9]|20)$",
        +  "type": "string"
        +}
      • changedInput schema / properties / description / description
        Previous value: -"A short description of the agent itself (1-2 sentences, what it does)"New value: +"1-2 sentences about what the agent does"
      • addedInput schema / properties / gender
        Added value: +{
        +  "description": "Voice/face gender (default female)",
        +  "enum": [
        +    "male",
        +    "female"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Agent's display name (e.g. 'Sales agent for Acme')"New value: +"Agent's display name, e.g. 'Anna from Acme'"
      • addedInput schema / properties / purpose
        Added value: +{
        +  "description": "sales = sales agent, support = customer support, info = information assistant",
        +  "enum": [
        +    "sales",
        +    "support",
        +    "info"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "description"
        -]New value: +[
        +  "name"
        +]
    • Addedcreate_agent_connection
    • Changedcreate_campaign7 fields changed
      • addedInput schema / properties / agentId / description
        Added value: +"Sales agent id (list_agents). Required before launch."
      • addedInput schema / properties / audienceId / description
        Added value: +"Campaign audience id"
      • addedInput schema / properties / branchId
        Added value: +{
        +  "description": "CRM branch id for replies; null = General",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / customAudienceId
        Added value: +{
        +  "description": "Instead of audienceId: id of a READY custom audience (uploaded CSV/CRM list); an audience is created from it",
        +  "type": "string"
        +}
      • changedInput schema / properties / settings / additionalProperties
        Previous value: -{}New value: +true
      • addedInput schema / properties / settings / properties
        Added value: +{
        +  "autoResponseDelayMinutes": {
        +    "description": "Delay before the AI email auto-reply (default 10).",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "autoResponseEnabled": {
        +    "description": "AI answers email replies automatically (default true).",
        +    "type": "boolean"
        +  },
        +  "campaignDurationDays": {
        +    "description": "Planned duration in days (default 30).",
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "ccEmail": {
        +    "description": "Address put in CC of outgoing emails.",
        +    "type": "string"
        +  },
        +  "channels": {
        +    "description": "Channels the campaign uses (default ['email']).",
        +    "items": {
        +      "enum": [
        +        "email",
        +        "linkedin",
        +        "phone_call"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "clientEmailProvider": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "google",
        +          "microsoft"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "description": "Informational provider of own mailboxes."
        +  },
        +  "customInstructions": {
        +    "description": "Communication Rules: CTA, links, promises, what never to say. Overrides prompt defaults in emails, follow-ups, AI auto-replies and LinkedIn. Also sets the informal/formal form of address (e.g. ти/Ви, du/Sie) when the rules say so.",
        +    "maxLength": 6000,
        +    "type": "string"
        +  },
        +  "dailyEmailLimit": {
        +    "description": "Emails per day; the app keeps it equal to dailyLimit.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "dailyLimit": {
        +    "description": "New contacts emailed per day. Must not exceed sender capacity (list_sender_emails / list_client_mailboxes). Default 200.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "dailyLinkedinLimit": {
        +    "description": "Campaign-wide LinkedIn invites per day across ALL its accounts (hard limit). Each account also has its own warm-up cap.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "emailContent": {
        +    "additionalProperties": true,
        +    "description": "Email content (wizard step 4). On a running campaign a change to steps/delays is NOT applied once anything was sent; see settings.smartleadSequencePending in get_campaign.",
        +    "properties": {
        +      "followUps": {
        +        "description": "Follow-ups after the first email (max 7).",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "body": {
        +              "description": "Fixed mode: body.",
        +              "maxLength": 20000,
        +              "type": "string"
        +            },
        +            "delayDays": {
        +              "description": "Days after the previous email.",
        +              "maximum": 90,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "prompt": {
        +              "description": "AI mode: writing rules for this follow-up.",
        +              "maxLength": 4000,
        +              "type": "string"
        +            },
        +            "subject": {
        +              "description": "Fixed mode: subject.",
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "delayDays"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 7,
        +        "type": "array"
        +      },
        +      "htmlSteps": {
        +        "description": "HTML mode: one entry per email; delayDays = days after the previous email (not on the first).",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "delayDays": {
        +              "maximum": 90,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "html": {
        +              "type": "string"
        +            },
        +            "subject": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subject",
        +            "html"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "mode": {
        +        "description": "ai = AI writes each email from the prompt; fixed = your text with {{first_name}}-style placeholders; html = your own HTML steps.",
        +        "enum": [
        +          "ai",
        +          "fixed",
        +          "html"
        +        ],
        +        "type": "string"
        +      },
        +      "prompt": {
        +        "description": "AI writing rules for the first email.",
        +        "type": "string"
        +      },
        +      "tone": {
        +        "enum": [
        +          "formal",
        +          "casual",
        +          "friendly"
        +        ],
        +        "type": "string"
        +      },
        +      "variants": {
        +        "description": "Fixed mode: up to 5 A/B variants of the first email.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "body": {
        +              "type": "string"
        +            },
        +            "subject": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subject",
        +            "body"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 5,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "mode"
        +    ],
        +    "type": "object"
        +  },
        +  "emailSenderMode": {
        +    "description": "managed = Vendo warmed pool (PAID PLAN REQUIRED to launch); client_owned = the workspace's own mailboxes (connect_client_mailbox). Default managed.",
        +    "enum": [
        +      "managed",
        +      "client_owned"
        +    ],
        +    "type": "string"
        +  },
        +  "emailSignature": {
        +    "description": "HTML signature appended to emails ('' = no signature).",
        +    "type": "string"
        +  },
        +  "excludeWeekends": {
        +    "description": "Do not send on Saturday/Sunday (default true).",
        +    "type": "boolean"
        +  },
        +  "followUpInterval": {
        +    "description": "Legacy: days between follow-ups, used only when emailContent.followUps is empty (default 3).",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "linkedinAutoReplyDisabled": {
        +    "description": "Switch LinkedIn AI auto-replies OFF for this campaign only (per-account settings: update_linkedin_account_settings).",
        +    "type": "boolean"
        +  },
        +  "linkedinContent": {
        +    "additionalProperties": true,
        +    "description": "LinkedIn content (wizard step 5).",
        +    "properties": {
        +      "followup_delay_minutes": {
        +        "description": "Delay of the first message after the invite is accepted.",
        +        "maximum": 43200,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "followup_exact_text": {
        +        "description": "Fixed first message after connect.",
        +        "maxLength": 1500,
        +        "type": "string"
        +      },
        +      "invite_exact_text": {
        +        "description": "Fixed connection note (LinkedIn sends max 200 chars).",
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "invite_prompt": {
        +        "description": "AI rules for the connection note (also used for the form of address).",
        +        "type": "string"
        +      },
        +      "invite_tone": {
        +        "$ref": "#/properties/settings/properties/emailContent/properties/tone"
        +      },
        +      "mode": {
        +        "enum": [
        +          "ai",
        +          "fixed"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "mode"
        +    ],
        +    "type": "object"
        +  },
        +  "maxFollowUps": {
        +    "description": "Legacy: number of follow-ups when emailContent.followUps is empty (default 3).",
        +    "maximum": 7,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "notifyEmails": {
        +    "description": "Addresses notified when a lead replies.",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "selectedLinkedinAccountIds": {
        +    "description": "LinkedIn accounts used by this campaign (ids from list_linkedin_accounts). Empty = all connected accounts at launch.",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "senderEmailIds": {
        +    "description": "Restrict sending to these sender ids from list_sender_emails (empty = auto-assign at launch).",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "speedTier": {
        +    "enum": [
        +      "conservative",
        +      "balanced",
        +      "aggressive"
        +    ],
        +    "type": "string"
        +  },
        +  "stopOnNegative": {
        +    "description": "Saved like the app (currently not read by the sender).",
        +    "type": "boolean"
        +  },
        +  "timezone": {
        +    "description": "IANA timezone of the sending window, e.g. Europe/London (default).",
        +    "type": "string"
        +  },
        +  "trackLinks": {
        +    "description": "Saved like the app (currently not read by the sender).",
        +    "type": "boolean"
        +  },
        +  "trackOpens": {
        +    "description": "Insert the open-tracking pixel.",
        +    "type": "boolean"
        +  },
        +  "workingHours": {
        +    "description": "[startHour, endHour] in the campaign timezone (default [9,18]).",
        +    "items": [
        +      {
        +        "maximum": 23,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      {
        +        "maximum": 24,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    ],
        +    "maxItems": 2,
        +    "minItems": 2,
        +    "type": "array"
        +  }
        +}
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "audienceId"
        -]New value: +[
        +  "name"
        +]
    • Addedcreate_custom_audience
    • Addedcreate_referral_link
    • Addedcreate_widget_test_page
    • Changedcrm_add_comment2 fields changed
      • addedInput schema / properties / body / maxLength
        Added value: +8000
      • addedInput schema / properties / mentions
        Added value: +{
        +  "description": "User ids to @mention",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedcrm_add_lead_to_branch
    • Changedcrm_communication_cards2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit
        Added value: +{
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Addedcrm_create_branch
    • Changedcrm_create_calendar_event9 fields changed
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "#RRGGBB",
        +  "pattern": "^#[0-9a-fA-F]{6}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / end_at
        Added value: +{
        +  "description": "ISO datetime, after start_at (default start + 1 h)",
        +  "type": "string"
        +}
      • removedInput schema / properties / ends_at
        Removed value: -{
        -  "description": "ISO datetime",
        -  "type": "string"
        -}
      • addedInput schema / properties / lead_id
        Added value: +{
        +  "description": "Link the event to a CRM lead",
        +  "type": "string"
        +}
      • removedInput schema / properties / notes
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / start_at
        Added value: +{
        +  "description": "ISO datetime",
        +  "type": "string"
        +}
      • removedInput schema / properties / starts_at
        Removed value: -{
        -  "description": "ISO datetime",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "starts_at"
        -]New value: +[
        +  "title",
        +  "start_at"
        +]
    • Changedcrm_create_lead7 fields changed
      • addedInput schema / properties / assigned_user_id
        Added value: +{
        +  "description": "Owner — user id from crm_list_workspace_members (default: you)",
        +  "type": "string"
        +}
      • addedInput schema / properties / avatar_url
        Added value: +{
        +  "description": "Full http(s) URL",
        +  "type": "string"
        +}
      • addedInput schema / properties / branch_ids
        Added value: +{
        +  "description": "Pipelines to place the lead in: \"general\" and/or branch ids (default General)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / facebook_url
        Added value: +{
        +  "description": "Full http(s) URL",
        +  "type": "string"
        +}
      • addedInput schema / properties / instagram_url
        Added value: +{
        +  "description": "Full http(s) URL",
        +  "type": "string"
        +}
      • addedInput schema / properties / linkedin_url / description
        Added value: +"Full http(s) URL"
      • addedInput schema / properties / notes
        Added value: +{
        +  "maxLength": 8000,
        +  "type": "string"
        +}
    • Changedcrm_create_stage3 fields changed
      • addedInput schema / properties / branch
        Added value: +{
        +  "description": "\"general\" (default) or a branch id",
        +  "type": "string"
        +}
      • addedInput schema / properties / color / description
        Added value: +"#RRGGBB"
      • addedInput schema / properties / is_terminal
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcrm_get_branch
    • Addedcrm_get_lead_branches
    • Addedcrm_get_lead_document
    • Addedcrm_import_leads
    • Addedcrm_list_all_branches
    • Addedcrm_list_lead_documents
    • Changedcrm_list_leads6 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "ISO date — created from",
        +  "type": "string"
        +}
      • addedInput schema / properties / owner
        Added value: +{
        +  "description": "Assigned user id",
        +  "type": "string"
        +}
      • addedInput schema / properties / range / description
        Added value: +"Omit for all time"
      • addedInput schema / properties / range / enum
        Added value: +[
        +  "24h",
        +  "7d",
        +  "30d",
        +  "90d",
        +  "180d",
        +  "1y"
        +]
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "linkedin_outreach_reply",
        +  "linkedin_inbound",
        +  "linkedin_manual",
        +  "email_reply_real",
        +  "widget_chat",
        +  "widget_voice",
        +  "widget_form",
        +  "narrator_form",
        +  "telegram_message",
        +  "whatsapp_message",
        +  "phone_call_interested",
        +  "meeting_booked",
        +  "crm_integration_inbound",
        +  "manual"
        +]
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "ISO date — created to",
        +  "type": "string"
        +}
    • Changedcrm_list_notifications1 field changed
      • removedInput schema / properties / limit
        Removed value: -{
        -  "type": "number"
        -}
    • Changedcrm_list_stages2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / branch
        Added value: +{
        +  "description": "\"general\" (default) or a branch id",
        +  "type": "string"
        +}
    • Addedcrm_move_lead_to_branch
    • Addedcrm_preview_email_to_lead
    • Addedcrm_promote_contact_to_lead
    • Addedcrm_reorder_stages
    • Addedcrm_send_email_to_lead
    • Addedcrm_update_branch
    • Changedcrm_update_calendar_event8 fields changed
      • addedInput schema / properties / color
        Added value: +{
        +  "description": "#RRGGBB",
        +  "pattern": "^#[0-9a-fA-F]{6}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / end_at
        Added value: +{
        +  "description": "ISO datetime",
        +  "type": "string"
        +}
      • removedInput schema / properties / ends_at
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / lead_id
        Added value: +{
        +  "description": "Lead id, or null to unlink",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedInput schema / properties / notes
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / start_at
        Added value: +{
        +  "description": "ISO datetime",
        +  "type": "string"
        +}
      • removedInput schema / properties / starts_at
        Removed value: -{
        -  "type": "string"
        -}
    • Changedcrm_update_lead3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "ISO code, e.g. USD",
        +  "maxLength": 3,
        +  "type": "string"
        +}
      • addedInput schema / properties / linkedin_url
        Added value: +{
        +  "description": "Full http(s) URL",
        +  "type": "string"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Replaces the tag list",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedcrm_update_settings12 fields changed
      • removedInput schema / properties / analytics_emails_enabled
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedInput schema / properties / default_date_range
        Added value: +{
        +  "enum": [
        +    "24h",
        +    "7d",
        +    "30d",
        +    "90d",
        +    "180d",
        +    "1y",
        +    "all"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / excluded_agent_ids
        Added value: +{
        +  "description": "Agents whose conversations never create leads (ids from crm_list_workspace_agents). Replaces the list.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excluded_linkedin_account_ids
        Added value: +{
        +  "description": "From crm_list_linkedin_accounts. Replaces the list.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excluded_sources
        Added value: +{
        +  "description": "Lead sources to ignore, e.g. [\"widget_form\"]. Replaces the list.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / notify_email
        Added value: +{
        +  "description": "Send CRM notifications by email",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / notify_in_app
        Added value: +{
        +  "description": "Show CRM notifications in the bell",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / notify_mention
        Added value: +{
        +  "type": "boolean"
        +}
      • removedInput schema / properties / notify_new_reply
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedInput schema / properties / notify_reassigned
        Added value: +{
        +  "type": "boolean"
        +}
      • removedInput schema / properties / notify_stage_change
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedInput schema / properties / stale_alert_days
        Added value: +{
        +  "maximum": 90,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedcrm_update_stage2 fields changed
      • addedInput schema / properties / color / description
        Added value: +"#RRGGBB"
      • addedInput schema / properties / is_terminal
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedcrm_upload_lead_document
    • Changeddeep_scan_agent6 fields changed
      • addedInput schema / properties / auto_update
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Re-scan automatically",
        +  "properties": {
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "interval": {
        +      "enum": [
        +        "daily",
        +        "weekly",
        +        "biweekly",
        +        "monthly",
        +        "quarterly"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "enabled",
        +    "interval"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / company_name / description
        Added value: +"Defaults to the agent's company_name"
      • addedInput schema / properties / company_website / description
        Added value: +"Defaults to the agent's company_website"
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / persist
        Added value: +{
        +  "description": "Save the result onto the agent (default true)",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "company_name",
        -  "company_website"
        -]New value: +[
        +  "id"
        +]
    • Addeddelete_agent_connection
    • Addeddelete_app_notification
    • Addeddelete_crm_branch
    • Addeddelete_crm_lead_document
    • Addeddelete_custom_audience
    • Addeddelete_custom_audience_contact
    • Addeddelete_narrator_lead
    • Addeddisconnect_client_mailbox
    • Addeddisconnect_content_account
    • Addeddisconnect_crm_integration
    • Changeddisconnect_google_meet1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
    • Addeddisconnect_whatsapp_account
    • Addedduplicate_campaign
    • Addedenrich_custom_audience
    • Addedexport_custom_audience_csv
    • Changedgenerate_agent_description4 fields changed
      • addedInput schema / properties / company_name
        Added value: +{
        +  "description": "Defaults to the agent's company_name",
        +  "type": "string"
        +}
      • addedInput schema / properties / company_website
        Added value: +{
        +  "description": "Defaults to the agent's company_website",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / target_language
        Added value: +{
        +  "description": "Write in this language, e.g. \"Ukrainian\"",
        +  "type": "string"
        +}
    • Addedgenerate_agent_page_descriptions
    • Changedgenerate_agent_script3 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / purpose / description
        Added value: +"Defaults to the agent's direction"
      • addedInput schema / properties / script_style / description
        Added value: +"Tone"
    • Addedgenerate_knowledge_from_url
    • Addedgenerate_phone_script
    • Addedgenerate_slide_script
    • Addedgenerate_support_script
    • Addedgenerate_transition_phrases
    • Addedget_agent_connection
    • Addedget_agent_connection_stats
    • Addedget_agent_job
    • Addedget_agents_dashboard
    • Addedget_analytics_agents
    • Addedget_analytics_sdr
    • Addedget_app_notifications_unread_count
    • Addedget_audience_set_contact
    • Changedget_campaign1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Campaign id (UUID) from list_campaigns"
    • Addedget_campaign_activity
    • Addedget_campaign_analytics
    • Addedget_campaign_discovery
    • Addedget_campaign_email
    • Addedget_campaign_email_stats
    • Addedget_campaign_linkedin_stats
    • Addedget_campaign_live_status
    • Addedget_campaign_monitor
    • Addedget_campaign_phone_stats
    • Addedget_campaign_pulse
    • Addedget_campaign_thread
    • Addedget_connection_analytics
    • Addedget_conversation_recordings
    • Changedget_credit_transactions1 field changed
      • addedInput schema / properties / type / description
        Added value: +"Transaction type, e.g. SUBSCRIPTION_GRANT, PURCHASE, FREE_TRIAL, BONUS, REFUND, EMAIL_OUTREACH, LINKEDIN_INVITE, LINKEDIN_MESSAGE, SDR_CONTACT, PHONE_CALL, VOICE_MINUTE, TEXT_MESSAGE, AUDIENCE_ENRICHMENT, AUDIENCE_SET_CONTACT, DISCOVERY_ENRICH, ASSISTANT_MESSAGE, SCRIPT_GENERATION, IMAGE_GENERATION"
    • Changedget_credit_usage_by_type4 fields changed
      • addedInput schema / properties / from / description
        Added value: +"ISO date, start of range"
      • addedInput schema / properties / limit
        Added value: +{
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / to / description
        Added value: +"ISO date, end of range (date-only = inclusive)"
    • Addedget_crm_integration
    • Addedget_crm_integration_logs
    • Addedget_custom_audience
    • Addedget_custom_audience_contacts
    • Addedget_custom_audience_enrichment
    • Addedget_google_meet_analytics
    • Addedget_google_meet_settings
    • Addedget_linkedin_account_settings
    • Addedget_linkedin_conversation
    • Addedget_meeting
    • Addedget_meeting_transcript
    • Changedget_narrator_analytics4 fields changed
      • addedInput schema / properties / date_from
        Added value: +{
        +  "description": "From (YYYY-MM-DD or ISO 8601)",
        +  "type": "string"
        +}
      • addedInput schema / properties / date_to
        Added value: +{
        +  "description": "To (YYYY-MM-DD or ISO 8601)",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / view
        Added value: +{
        +  "enum": [
        +    "summary",
        +    "period"
        +  ],
        +  "type": "string"
        +}
    • Addedget_notification_preferences
    • Addedget_phone_channel_stats
    • Addedget_planner_events
    • Addedget_presentation
    • Addedget_presentation_embed_code
    • Changedget_pricing2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Only prices in this currency",
        +  "enum": [
        +    "USD",
        +    "GBP",
        +    "EUR"
        +  ],
        +  "type": "string"
        +}
    • Addedget_profile
    • Addedget_referral_overview
    • Addedget_referral_share_card
    • Addedget_supported_currencies
    • Changedget_telegram_analytics3 fields changed
      • addedInput schema / properties / date_from
        Added value: +{
        +  "description": "From (YYYY-MM-DD or ISO 8601)",
        +  "type": "string"
        +}
      • addedInput schema / properties / date_to
        Added value: +{
        +  "description": "To (YYYY-MM-DD or ISO 8601)",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
    • Addedget_telegram_chat
    • Changedget_widget_embed_code9 fields changed
      • addedInput schema / properties / background_color
        Added value: +{
        +  "description": "Button only",
        +  "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
        +  "type": "string"
        +}
      • addedInput schema / properties / border_radius
        Added value: +{
        +  "description": "Button only (px)",
        +  "maximum": 50,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / connection_id
        Added value: +{
        +  "description": "Channel (connection) id (UUID) — from list_agent_connections",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / modal_primary_color
        Added value: +{
        +  "$ref": "#/properties/background_color",
        +  "description": "Button only: colour of the chat window it opens"
        +}
      • addedInput schema / properties / size
        Added value: +{
        +  "description": "Button only",
        +  "enum": [
        +    "small",
        +    "medium",
        +    "large"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Button only: label (default \"Talk to Assistant\")",
        +  "type": "string"
        +}
      • addedInput schema / properties / text_color
        Added value: +{
        +  "$ref": "#/properties/background_color",
        +  "description": "Button only"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "connection_id"
        +]
    • Addedget_workspace
    • Addedinvite_workspace_member
    • Changedlaunch_campaign2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Campaign id (UUID) from list_campaigns"
      • addedInput schema / properties / linkedin_account_ids
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedlist_agent_jobs
    • Changedlist_agent_presentations1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
    • Addedlist_app_notifications
    • Addedlist_campaign_discovered_leads
    • Addedlist_campaign_email_leads
    • Addedlist_campaign_emails
    • Addedlist_campaign_linkedin_accounts
    • Addedlist_campaign_linkedin_outreach
    • Addedlist_campaign_phone_calls
    • Addedlist_campaign_replies
    • Addedlist_campaign_threads
    • Changedlist_campaigns2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / include_archived
        Added value: +{
        +  "description": "Also return archived campaigns",
        +  "type": "boolean"
        +}
    • Addedlist_client_mailboxes
    • Addedlist_connection_conversations
    • Addedlist_content_accounts
    • Addedlist_crm_integrations
    • Addedlist_custom_audiences
    • Addedlist_google_meet_history
    • Addedlist_kommo_pipelines
    • Addedlist_kommo_users
    • Changedlist_linkedin_accounts2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / detailed
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedlist_linkedin_conversations
    • Addedlist_meeting_agents
    • Addedlist_meetings
    • Changedlist_narrator_leads4 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / limit
        Added value: +{
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "enum": [
        +    "new",
        +    "contacted",
        +    "converted",
        +    "spam"
        +  ],
        +  "type": "string"
        +}
    • Addedlist_phone_calls
    • Addedlist_phone_numbers
    • Addedlist_referred_users
    • Addedlist_sender_emails
    • Addedlist_telegram_chats
    • Addedlist_voice_catalog
    • Addedlist_whatsapp_accounts
    • Addedmark_all_app_notifications_read
    • Addedmark_app_notification_read
    • Addedphone_test_call
    • Addedprepare_campaign_audience_from_custom
    • Addedprepare_campaign_emails
    • Addedpreview_activate_campaign_linkedin
    • Addedpreview_activate_campaign_phone
    • Changedpreview_agent_email1 field changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id"
    • Addedpreview_campaign_email
    • Addedpreview_campaign_linkedin_followup
    • Addedpreview_campaign_linkedin_invite
    • Addedpreview_cancel_meeting
    • Addedpreview_custom_audience_file
    • Changedpreview_deep_scan2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / persist
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedpreview_delete_agent_connection
    • Addedpreview_delete_crm_branch
    • Addedpreview_delete_crm_lead_document
    • Addedpreview_delete_custom_audience
    • Addedpreview_delete_custom_audience_contact
    • Addedpreview_delete_narrator_lead
    • Addedpreview_disconnect_client_mailbox
    • Addedpreview_disconnect_content_account
    • Addedpreview_disconnect_crm_integration
    • Addedpreview_disconnect_google_meet
    • Addedpreview_disconnect_whatsapp_account
    • Addedpreview_enrich_custom_audience
    • Addedpreview_invite_workspace_member
    • Changedpreview_launch_campaign2 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Campaign id (UUID) from list_campaigns"
      • addedInput schema / properties / linkedin_account_ids
        Added value: +{
        +  "description": "Override which LinkedIn accounts get activated (default: settings.selectedLinkedinAccountIds, else all connected)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedpreview_linkedin_account_messages
    • Addedpreview_phone_test_call
    • Addedpreview_remove_agent_from_meeting
    • Addedpreview_remove_workspace_member
    • Addedpreview_reply_in_campaign_thread
    • Addedpreview_reply_to_campaign_email
    • Addedpreview_schedule_campaign_delivery
    • Addedpreview_send_campaign_emails_now
    • Addedpreview_send_linkedin_message
    • Addedpreview_send_telegram_message
    • Addedpreview_set_workspace_member_role
    • Addedpreview_update_campaign_discovery
    • Changedreassign_crm_lead4 fields changed
      • addedInput schema / properties / assignee_user_id
        Added value: +{
        +  "description": "New owner — a user id from crm_list_workspace_members",
        +  "type": "string"
        +}
      • removedInput schema / properties / owner_id
        Removed value: -{
        -  "description": "New owner — a member id from crm_list_workspace_members",
        -  "type": "string"
        -}
      • addedInput schema / properties / reason
        Added value: +{
        +  "maxLength": 255,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "owner_id"
        -]New value: +[
        +  "id",
        +  "assignee_user_id"
        +]
    • Addedreconfigure_telegram_bot
    • Addedreconnect_client_mailbox
    • Addedrefresh_campaign_email_reply
    • Addedremove_agent_document
    • Addedremove_agent_from_meeting
    • Addedremove_campaign_linkedin_account
    • Addedremove_workspace_member
    • Addedrename_custom_audience
    • Addedreply_in_campaign_thread
    • Addedreply_to_campaign_email
    • Addedretry_campaign_email_preparation
    • Changedsave_audience18 fields changed
      • addedInput schema / properties / filters / properties / cities
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / companyKeywords
        Added value: +{
        +  "description": "Keywords matched in company description / name / position",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / companySizes
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "startup",
        +      "small",
        +      "medium",
        +      "large",
        +      "enterprise"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / countries
        Added value: +{
        +  "description": "Country names, e.g. [\"United Kingdom\",\"Germany\"]",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / exactKeyword
        Added value: +{
        +  "description": "Exact phrase (searchMode=exact)",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / excludeCountries
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / excludedCities
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / excludedCompanySizes
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "startup",
        +      "small",
        +      "medium",
        +      "large",
        +      "enterprise"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / excludedIndustries
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / excludedPositions
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / language
        Added value: +{
        +  "description": "Approximate language segment by country set, e.g. \"russian\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / maxAgeDays
        Added value: +{
        +  "description": "Only people added within the last N days",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / filters / properties / position
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / positions
        Added value: +{
        +  "description": "Job titles / roles, e.g. [\"CEO\",\"Head of Sales\"]",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / filters / properties / searchMode
        Added value: +{
        +  "enum": [
        +    "keyword",
        +    "exact",
        +    "semantic"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / semanticQuery
        Added value: +{
        +  "description": "Free-text description of the ideal person (searchMode=semantic)",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / tags
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / name / description
        Added value: +"Audience name (auto-generated when omitted)"
    • Addedsave_kommo_credentials
    • Changedsave_scan_data10 fields changed
      • addedInput schema / properties / auto_update
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "interval": {
        +      "enum": [
        +        "daily",
        +        "weekly",
        +        "biweekly",
        +        "monthly",
        +        "quarterly"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "enabled",
        +    "interval"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / company_name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / company_website
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / contacts
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "addresses": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "emails": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "phones": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / directors
        Added value: +{
        +  "description": "Team / management",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "email": {
        +        "type": "string"
        +      },
        +      "linkedin": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "phone": {
        +        "type": "string"
        +      },
        +      "position": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "position"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / employee_count
        Added value: +{
        +  "type": [
        +    "number",
        +    "string"
        +  ]
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / pricing
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / social_links
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "booking": {
        +      "type": "string"
        +    },
        +    "calendly": {
        +      "type": "string"
        +    },
        +    "facebook": {
        +      "type": "string"
        +    },
        +    "instagram": {
        +      "type": "string"
        +    },
        +    "linkedin": {
        +      "type": "string"
        +    },
        +    "telegram": {
        +      "type": "string"
        +    },
        +    "twitter": {
        +      "type": "string"
        +    },
        +    "whatsapp": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "company_name",
        +  "company_website"
        +]
    • Addedscan_agent_website
    • Addedschedule_campaign_delivery
    • Addedsdr_bulk_delete_people
    • Addedsdr_company_detail
    • Changedsdr_company_heat3 fields changed
      • changedInput schema / properties / limit / maximum
        Previous value: -200New value: +500
      • addedInput schema / properties / offset
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / search_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
    • Addedsdr_configure_hunter
    • Changedsdr_create_search21 fields changed
      • addedInput schema / properties / agent_id / $ref
        Added value: +"#/properties/research_job_id"
      • addedInput schema / properties / agent_id / description
        Added value: +"Company profile id (legacy path, or must match the research's)"
      • removedInput schema / properties / agent_id / type
        Removed value: -"string"
      • addedInput schema / properties / company_size
        Added value: +{
        +  "description": "e.g. \"11–50 employees\"; written into icp_summary as \"Preferred company size: …\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / competitor_pages
        Added value: +{
        +  "description": "Competitor LinkedIn page URLs (Competitor Engagement and Competitor Switching hunters)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 30,
        +  "type": "array"
        +}
      • addedInput schema / properties / decision_roles
        Added value: +{
        +  "description": "Decision-maker job titles; used by Decision-maker matching and Website profile hunters",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • changedInput schema / properties / enabled_sources / description
        Previous value: -"E.g. ['linkedin_jobs', 'connected_people']. Paid sources (ai_web_hunter, g2_reviews, tech_stack) are off by default."New value: +"Hunters to run. Omitted on create = all 24, exactly like the web wizard (includes paid engines and opt-in hunters)."
      • addedInput schema / properties / enabled_sources / items / description
        Added value: +"Hunter source id (see sdr_list_hunters)"
      • addedInput schema / properties / enabled_sources / items / enum
        Added value: +[
        +  "linkedin_jobs",
        +  "linkedin_company",
        +  "linkedin_activity",
        +  "ai_web_hunter",
        +  "social_signal_hunter",
        +  "crunchbase_rss",
        +  "hn_hiring",
        +  "g2_reviews",
        +  "tech_stack",
        +  "connected_people",
        +  "email_enricher",
        +  "linkedin_engagement",
        +  "linkedin_job_change",
        +  "linkedin_competitor_followers",
        +  "cross_pool",
        +  "people_pool",
        +  "github_issues",
        +  "adzuna_jobs",
        +  "corporate_registries",
        +  "web_news_radar",
        +  "web_pulse_hunter",
        +  "google_places",
        +  "web_profile",
        +  "local_listings"
        +]
      • addedInput schema / properties / generation_model
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / generation_reasoning
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / icp_summary / description
        Added value: +"\"Who buys\". The decision-makers sentence and company-size line are added automatically."
      • addedInput schema / properties / languages
        Added value: +{
        +  "description": "Outreach languages; written into icp_summary",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / linkedin_search_queries
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "location_hint": {
        +        "type": "string"
        +      },
        +      "query": {
        +        "type": "string"
        +      },
        +      "rationale": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "query"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • addedInput schema / properties / offer_summary / description
        Added value: +"\"What you sell\""
      • addedInput schema / properties / research_job_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "Activate hunters right away (default true)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / target_cities
        Added value: +{
        +  "description": "Optional cities inside target_regions (use sdr_find_cities). Empty = whole countries.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "admin1": {
        +        "type": "string"
        +      },
        +      "admin1_code": {
        +        "type": "string"
        +      },
        +      "country": {
        +        "description": "ISO-2 country code; must be one of target_regions",
        +        "maxLength": 2,
        +        "minLength": 2,
        +        "type": "string"
        +      },
        +      "lat": {
        +        "type": "number"
        +      },
        +      "lng": {
        +        "type": "number"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "country",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • changedInput schema / properties / target_regions / description
        Previous value: -"ISO-2 country codes the search targets, e.g. ['GB', 'US']."New value: +"ISO-2 countries or US states as CC:SUB, e.g. ['GB','US:FL']. At least one."
      • removedInput schema / required
        Removed value: -[
        -  "name",
        -  "agent_id"
        -]
    • Addedsdr_daily_by_hunter
    • Addedsdr_delete_person
    • Changedsdr_delete_search1 field changed
      • addedInput schema / properties / id / format
        Added value: +"uuid"
    • Addedsdr_events
    • Addedsdr_export_companies_csv
    • Changedsdr_export_personas_to_audience8 fields changed
      • addedInput schema / properties / fit_segment
        Added value: +{
        +  "enum": [
        +    "fit",
        +    "fit_uncertain",
        +    "all",
        +    "uncertain",
        +    "unfit",
        +    "unchecked"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / ids / items / $ref
        Added value: +"#/properties/search_id"
      • removedInput schema / properties / ids / items / type
        Removed value: -"string"
      • addedInput schema / properties / name / description
        Added value: +"Name of the new audience"
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • addedInput schema / properties / name / minLength
        Added value: +1
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • changedInput schema / required
        Previous value: -[
        -  "search_id"
        -]New value: +[
        +  "search_id",
        +  "name"
        +]
    • Addedsdr_find_cities
    • Changedsdr_get_person_detail4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Person (persona) id"New value: +"Contact id"
      • addedInput schema / properties / id / format
        Added value: +"uuid"
      • addedInput schema / properties / search_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "search_id"
        +]
    • Addedsdr_get_research
    • Addedsdr_get_research_audience
    • Addedsdr_hunter_daily
    • Addedsdr_hunter_detail
    • Addedsdr_icp_qa_autocorrect
    • Addedsdr_icp_qa_history
    • Addedsdr_icp_qa_rollback
    • Addedsdr_icp_qa_run
    • Addedsdr_icp_review
    • Addedsdr_icp_review_run
    • Changedsdr_launch_outreach15 fields changed
      • addedInput schema / properties / branch_id
        Added value: +{
        +  "description": "CRM branch for replies: a branch id from crm_list_branches, or null/'general' for General",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / client_email_provider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "google",
        +        "microsoft"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedInput schema / properties / daily_email_limit / maximum
        Added value: +500
      • addedInput schema / properties / daily_email_limit / minimum
        Added value: +1
      • addedInput schema / properties / daily_linkedin_limit / maximum
        Added value: +200
      • addedInput schema / properties / daily_linkedin_limit / minimum
        Added value: +1
      • addedInput schema / properties / email_sender_mode
        Added value: +{
        +  "description": "managed = Vendo sender pool (paid plans only); client_owned = the workspace's own connected mailboxes",
        +  "enum": [
        +    "managed",
        +    "client_owned"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_weekends
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / icp_segment
        Added value: +{
        +  "description": "Who to contact: fit (Fit + unchecked, default), fit_uncertain, all; legacy: uncertain, unfit, unchecked",
        +  "enum": [
        +    "fit",
        +    "fit_uncertain",
        +    "all",
        +    "uncertain",
        +    "unfit",
        +    "unchecked"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • addedInput schema / properties / selected_linkedin_account_ids
        Added value: +{
        +  "description": "Ids from sdr_get_outreach → linkedin_accounts; empty = every connected account in status OK",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / sender_mode
        Removed value: -{
        -  "enum": [
        -    "managed",
        -    "client_owned"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA time zone, e.g. Europe/London",
        +  "type": "string"
        +}
      • addedInput schema / properties / work_end_hour
        Added value: +{
        +  "maximum": 23,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / work_start_hour
        Added value: +{
        +  "maximum": 23,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedsdr_learning_insights2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / search_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
    • Addedsdr_linkedin_connect_link
    • Addedsdr_list_outreach_processes
    • Changedsdr_list_personas6 fields changed
      • addedInput schema / properties / group
        Added value: +{
        +  "enum": [
        +    "fits",
        +    "uncertain",
        +    "unfit",
        +    "unchecked"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / min_relevance / maximum
        Added value: +100
      • addedInput schema / properties / min_relevance / minimum
        Added value: +0
      • changedInput schema / properties / min_relevance / type
        Previous value: -"string"New value: +"integer"
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • addedInput schema / properties / source
        Added value: +{
        +  "description": "Hunter source id (see sdr_list_hunters)",
        +  "enum": [
        +    "linkedin_jobs",
        +    "linkedin_company",
        +    "linkedin_activity",
        +    "ai_web_hunter",
        +    "social_signal_hunter",
        +    "crunchbase_rss",
        +    "hn_hiring",
        +    "g2_reviews",
        +    "tech_stack",
        +    "connected_people",
        +    "email_enricher",
        +    "linkedin_engagement",
        +    "linkedin_job_change",
        +    "linkedin_competitor_followers",
        +    "cross_pool",
        +    "people_pool",
        +    "github_issues",
        +    "adzuna_jobs",
        +    "corporate_registries",
        +    "web_news_radar",
        +    "web_pulse_hunter",
        +    "google_places",
        +    "web_profile",
        +    "local_listings"
        +  ],
        +  "type": "string"
        +}
    • Addedsdr_materialize_research
    • Addedsdr_overview
    • Changedsdr_pause_hunter3 fields changed
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • changedInput schema / properties / source / description
        Previous value: -"hunter source id, e.g. linkedin_jobs, google_places, people_pool"New value: +"Hunter source id (see sdr_list_hunters)"
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "linkedin_jobs",
        +  "linkedin_company",
        +  "linkedin_activity",
        +  "ai_web_hunter",
        +  "social_signal_hunter",
        +  "crunchbase_rss",
        +  "hn_hiring",
        +  "g2_reviews",
        +  "tech_stack",
        +  "connected_people",
        +  "email_enricher",
        +  "linkedin_engagement",
        +  "linkedin_job_change",
        +  "linkedin_competitor_followers",
        +  "cross_pool",
        +  "people_pool",
        +  "github_issues",
        +  "adzuna_jobs",
        +  "corporate_registries",
        +  "web_news_radar",
        +  "web_pulse_hunter",
        +  "google_places",
        +  "web_profile",
        +  "local_listings"
        +]
    • Changedsdr_pause_search1 field changed
      • addedInput schema / properties / id / format
        Added value: +"uuid"
    • Addedsdr_people_group_counts
    • Changedsdr_persona_stats2 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "enum": [
        +    7,
        +    14,
        +    28
        +  ],
        +  "type": "number"
        +}
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
    • Addedsdr_preview_bulk_delete_people
    • Addedsdr_preview_delete_person
    • Changedsdr_preview_delete_search1 field changed
      • addedInput schema / properties / id / format
        Added value: +"uuid"
    • Changedsdr_preview_launch_outreach13 fields changed
      • addedInput schema / properties / branch_id
        Added value: +{
        +  "description": "CRM branch for replies: a branch id from crm_list_branches, or null/'general' for General",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / client_email_provider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "google",
        +        "microsoft"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedInput schema / properties / daily_email_limit
        Added value: +{
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / daily_linkedin_limit
        Added value: +{
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / email_sender_mode
        Added value: +{
        +  "description": "managed = Vendo sender pool (paid plans only); client_owned = the workspace's own connected mailboxes",
        +  "enum": [
        +    "managed",
        +    "client_owned"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_weekends
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / icp_segment
        Added value: +{
        +  "description": "Who to contact: fit (Fit + unchecked, default), fit_uncertain, all; legacy: uncertain, unfit, unchecked",
        +  "enum": [
        +    "fit",
        +    "fit_uncertain",
        +    "all",
        +    "uncertain",
        +    "unfit",
        +    "unchecked"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • addedInput schema / properties / selected_linkedin_account_ids
        Added value: +{
        +  "description": "Ids from sdr_get_outreach → linkedin_accounts; empty = every connected account in status OK",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / sender_mode
        Removed value: -{
        -  "enum": [
        -    "managed",
        -    "client_owned"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA time zone, e.g. Europe/London",
        +  "type": "string"
        +}
      • addedInput schema / properties / work_end_hour
        Added value: +{
        +  "maximum": 23,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / work_start_hour
        Added value: +{
        +  "maximum": 23,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedsdr_preview_run_now3 fields changed
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • changedInput schema / properties / source / description
        Previous value: -"Name of one specific hunter, or omit to run all enabled. E.g. 'linkedin_jobs', 'ai_web_hunter', 'connected_people'."New value: +"Hunter source id; cross_pool and people_pool run automatically and cannot be started by hand"
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "linkedin_jobs",
        +  "linkedin_company",
        +  "linkedin_activity",
        +  "ai_web_hunter",
        +  "social_signal_hunter",
        +  "crunchbase_rss",
        +  "hn_hiring",
        +  "g2_reviews",
        +  "tech_stack",
        +  "connected_people",
        +  "email_enricher",
        +  "linkedin_engagement",
        +  "linkedin_job_change",
        +  "linkedin_competitor_followers",
        +  "github_issues",
        +  "adzuna_jobs",
        +  "corporate_registries",
        +  "web_news_radar",
        +  "web_pulse_hunter",
        +  "google_places",
        +  "web_profile",
        +  "local_listings"
        +]
    • Addedsdr_preview_set_person_group
    • Addedsdr_preview_start_research
    • Changedsdr_recent_signals1 field changed
      • addedInput schema / properties / search_id
        Added value: +{
        +  "format": "uuid",
        +  "type": "string"
        +}
    • Changedsdr_resume_hunter3 fields changed
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • addedInput schema / properties / source / description
        Added value: +"Hunter source id (see sdr_list_hunters)"
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "linkedin_jobs",
        +  "linkedin_company",
        +  "linkedin_activity",
        +  "ai_web_hunter",
        +  "social_signal_hunter",
        +  "crunchbase_rss",
        +  "hn_hiring",
        +  "g2_reviews",
        +  "tech_stack",
        +  "connected_people",
        +  "email_enricher",
        +  "linkedin_engagement",
        +  "linkedin_job_change",
        +  "linkedin_competitor_followers",
        +  "cross_pool",
        +  "people_pool",
        +  "github_issues",
        +  "adzuna_jobs",
        +  "corporate_registries",
        +  "web_news_radar",
        +  "web_pulse_hunter",
        +  "google_places",
        +  "web_profile",
        +  "local_listings"
        +]
    • Changedsdr_resume_search1 field changed
      • addedInput schema / properties / id / format
        Added value: +"uuid"
    • Changedsdr_run_now3 fields changed
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
      • addedInput schema / properties / source / description
        Added value: +"Hunter source id; cross_pool and people_pool run automatically and cannot be started by hand"
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "linkedin_jobs",
        +  "linkedin_company",
        +  "linkedin_activity",
        +  "ai_web_hunter",
        +  "social_signal_hunter",
        +  "crunchbase_rss",
        +  "hn_hiring",
        +  "g2_reviews",
        +  "tech_stack",
        +  "connected_people",
        +  "email_enricher",
        +  "linkedin_engagement",
        +  "linkedin_job_change",
        +  "linkedin_competitor_followers",
        +  "github_issues",
        +  "adzuna_jobs",
        +  "corporate_registries",
        +  "web_news_radar",
        +  "web_pulse_hunter",
        +  "google_places",
        +  "web_profile",
        +  "local_listings"
        +]
    • Addedsdr_run_state
    • Addedsdr_save_outreach_settings
    • Addedsdr_search_hunters
    • Addedsdr_set_hunters
    • Addedsdr_set_person_group
    • Changedsdr_signal_stats3 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "maximum": 90,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / properties / days_back
        Removed value: -{
        -  "maximum": 90,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
    • Addedsdr_start_research
    • Changedsdr_update_outreach_content3 fields changed
      • addedInput schema / properties / email
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "auto_reply_delay_minutes": {
        +      "maximum": 120,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "auto_reply_enabled": {
        +      "type": "boolean"
        +    },
        +    "followup_interval_days": {
        +      "maximum": 90,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "followups": {
        +      "description": "Per-step follow-ups; delay counts from the previous email",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "body": {
        +            "type": "string"
        +          },
        +          "delay_days": {
        +            "maximum": 90,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "prompt": {
        +            "type": "string"
        +          },
        +          "subject": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "delay_days"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 7,
        +      "type": "array"
        +    },
        +    "followups_enabled": {
        +      "type": "boolean"
        +    },
        +    "html_steps": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "delay_days": {
        +            "type": "integer"
        +          },
        +          "html": {
        +            "type": "string"
        +          },
        +          "subject": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "subject",
        +          "html"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "type": "array"
        +    },
        +    "max_followups": {
        +      "maximum": 7,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "mode": {
        +      "description": "ai = model writes each email from prompt; fixed = variants; html = html_steps",
        +      "enum": [
        +        "ai",
        +        "fixed",
        +        "html"
        +      ],
        +      "type": "string"
        +    },
        +    "prompt": {
        +      "type": "string"
        +    },
        +    "signature_enabled": {
        +      "type": "boolean"
        +    },
        +    "signature_text": {
        +      "type": "string"
        +    },
        +    "tone": {
        +      "enum": [
        +        "formal",
        +        "casual",
        +        "friendly"
        +      ],
        +      "type": "string"
        +    },
        +    "validation_note_enabled": {
        +      "type": "boolean"
        +    },
        +    "variants": {
        +      "description": "Fixed texts, rotated per recipient. Placeholders: {{first_name}} {{last_name}} {{full_name}} {{company_name}} {{position}} {{city}} {{country}}",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "body": {
        +            "type": "string"
        +          },
        +          "subject": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "subject",
        +          "body"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 5,
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / linkedin
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "auto_reply_enabled": {
        +      "type": "boolean"
        +    },
        +    "calendly_url": {
        +      "type": "string"
        +    },
        +    "conversation_rules": {
        +      "description": "What we want from these conversations: goal, CTA, links. Applied to AI invites, follow-ups and smart replies.",
        +      "maxLength": 3000,
        +      "type": "string"
        +    },
        +    "followup_cta": {
        +      "type": "string"
        +    },
        +    "followup_delay_minutes": {
        +      "description": "Minutes between accepted invite and first message",
        +      "maximum": 20160,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "followup_enabled": {
        +      "type": "boolean"
        +    },
        +    "followup_exact_text": {
        +      "type": "string"
        +    },
        +    "followup_mode": {
        +      "enum": [
        +        "ai",
        +        "exact"
        +      ],
        +      "type": "string"
        +    },
        +    "followup_prompt": {
        +      "type": "string"
        +    },
        +    "invite_enabled": {
        +      "type": "boolean"
        +    },
        +    "invite_exact_text": {
        +      "type": "string"
        +    },
        +    "invite_mode": {
        +      "enum": [
        +        "ai",
        +        "exact"
        +      ],
        +      "type": "string"
        +    },
        +    "invite_prompt": {
        +      "type": "string"
        +    },
        +    "invite_tone": {
        +      "enum": [
        +        "formal",
        +        "casual",
        +        "friendly"
        +      ],
        +      "type": "string"
        +    },
        +    "reply_delay_max_minutes": {
        +      "maximum": 120,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "reply_delay_min_minutes": {
        +      "maximum": 60,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "signature_enabled": {
        +      "type": "boolean"
        +    },
        +    "signature_mode": {
        +      "enum": [
        +        "first_message",
        +        "every_message"
        +      ],
        +      "type": "string"
        +    },
        +    "signature_text": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / search_id / format
        Added value: +"uuid"
    • Changedsdr_update_search16 fields changed
      • addedInput schema / properties / company_size
        Added value: +{
        +  "description": "e.g. \"11–50 employees\"; written into icp_summary as \"Preferred company size: …\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / competitor_pages
        Added value: +{
        +  "description": "Competitor LinkedIn page URLs (Competitor Engagement and Competitor Switching hunters)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 30,
        +  "type": "array"
        +}
      • addedInput schema / properties / decision_roles
        Added value: +{
        +  "description": "Decision-maker job titles; used by Decision-maker matching and Website profile hunters",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / enabled_sources
        Added value: +{
        +  "description": "Hunters to run. Omitted on create = all 24, exactly like the web wizard (includes paid engines and opt-in hunters).",
        +  "items": {
        +    "description": "Hunter source id (see sdr_list_hunters)",
        +    "enum": [
        +      "linkedin_jobs",
        +      "linkedin_company",
        +      "linkedin_activity",
        +      "ai_web_hunter",
        +      "social_signal_hunter",
        +      "crunchbase_rss",
        +      "hn_hiring",
        +      "g2_reviews",
        +      "tech_stack",
        +      "connected_people",
        +      "email_enricher",
        +      "linkedin_engagement",
        +      "linkedin_job_change",
        +      "linkedin_competitor_followers",
        +      "cross_pool",
        +      "people_pool",
        +      "github_issues",
        +      "adzuna_jobs",
        +      "corporate_registries",
        +      "web_news_radar",
        +      "web_pulse_hunter",
        +      "google_places",
        +      "web_profile",
        +      "local_listings"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / exclude_keywords
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / hot_threshold
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / icp_summary
        Added value: +{
        +  "description": "\"Who buys\". The decision-makers sentence and company-size line are added automatically.",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / format
        Added value: +"uuid"
      • addedInput schema / properties / industry_keywords
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / linkedin_search_queries
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "location_hint": {
        +        "type": "string"
        +      },
        +      "query": {
        +        "type": "string"
        +      },
        +      "rationale": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "query"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • addedInput schema / properties / offer_summary
        Added value: +{
        +  "description": "\"What you sell\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / relevant_topics
        Added value: +{
        +  "additionalProperties": {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / signal_weights
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / target_cities
        Added value: +{
        +  "description": "Optional cities inside target_regions (use sdr_find_cities). Empty = whole countries.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "admin1": {
        +        "type": "string"
        +      },
        +      "admin1_code": {
        +        "type": "string"
        +      },
        +      "country": {
        +        "description": "ISO-2 country code; must be one of target_regions",
        +        "maxLength": 2,
        +        "minLength": 2,
        +        "type": "string"
        +      },
        +      "lat": {
        +        "type": "number"
        +      },
        +      "lng": {
        +        "type": "number"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "country",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • addedInput schema / properties / target_regions
        Added value: +{
        +  "description": "ISO-2 countries or US states as CC:SUB, e.g. ['GB','US:FL']. At least one.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedsearch_audience18 fields changed
      • addedInput schema / properties / city
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / companyKeywords
        Added value: +{
        +  "description": "Keywords matched in company description / name / position",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / companySize
        Added value: +{
        +  "enum": [
        +    "startup",
        +    "small",
        +    "medium",
        +    "large",
        +    "enterprise"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / countries / description
        Added value: +"Country names, e.g. [\"United Kingdom\",\"Germany\"]"
      • addedInput schema / properties / country
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / exactKeyword / description
        Added value: +"Exact phrase (searchMode=exact)"
      • addedInput schema / properties / excludeCountries
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludedCities
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludedCompanySizes
        Added value: +{
        +  "items": {
        +    "enum": [
        +      "startup",
        +      "small",
        +      "medium",
        +      "large",
        +      "enterprise"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludedIndustries
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / excludedPositions
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "Approximate language segment by country set, e.g. \"russian\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / description
        Added value: +"Sample size (max 100)"
      • addedInput schema / properties / maxAgeDays
        Added value: +{
        +  "description": "Only people added within the last N days",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / mustHaveBookingUrl
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / position
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / positions / description
        Added value: +"Job titles / roles, e.g. [\"CEO\",\"Head of Sales\"]"
      • addedInput schema / properties / semanticQuery / description
        Added value: +"Free-text description of the ideal person (searchMode=semantic)"
    • Addedsend_campaign_emails_now
    • Addedsend_linkedin_message
    • Addedsend_telegram_message
    • Changedset_agent_avatar_from_url4 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / image_base64
        Added value: +{
        +  "description": "Base64 or data: URL of the image (use instead of image_url)",
        +  "type": "string"
        +}
      • changedInput schema / properties / image_url / description
        Previous value: -"Publicly reachable HTTPS image URL"New value: +"Public https URL of the image"
      • changedInput schema / required
        Previous value: -[
        -  "id",
        -  "image_url"
        -]New value: +[
        +  "id"
        +]
    • Changedset_agent_contact_channels4 fields changed
      • addedInput schema / properties / custom_links
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "label": {
        +            "maxLength": 60,
        +            "type": "string"
        +          },
        +          "note": {
        +            "description": "When the agent should share it",
        +            "maxLength": 200,
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Replaces the whole custom link list; null or [] clears it"
        +}
      • changedInput schema / properties / id / description
        Previous value: -"Agent id"New value: +"Agent id (UUID) — from list_agents"
      • changedInput schema / properties / meeting_url / description
        Previous value: -"Booking link, e.g. Calendly"New value: +"Booking link, e.g. Calendly (http/https)"
      • addedInput schema / properties / presentation_url
        Added value: +{
        +  "description": "Link to a presentation/deck (http/https)",
        +  "type": "string"
        +}
    • Addedset_agent_integrations
    • Changedset_agent_voice26 fields changed
      • addedInput schema / properties / ambient
        Added value: +{
        +  "description": "Background sound; \"\" = none",
        +  "enum": [
        +    "",
        +    "coffee-shop",
        +    "call-center",
        +    "convention-hall"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / ambient_sound_volume
        Added value: +{
        +  "maximum": 2,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / backchannel
        Added value: +{
        +  "description": "Short \"mm-hm\" acknowledgements while the person talks",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / backchannel_frequency
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / denoising_mode
        Added value: +{
        +  "enum": [
        +    "noise-cancellation",
        +    "noise-and-background-speech-cancellation"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / dynamic_responsiveness
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / dynamic_voice_speed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / emotion
        Added value: +{
        +  "description": "Delivery: neutral, expressive (warm), calm, dynamic (energetic)",
        +  "enum": [
        +    "neutral",
        +    "expressive",
        +    "calm",
        +    "dynamic"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / end_call_s
        Added value: +{
        +  "description": "Hang up after this many seconds of silence",
        +  "maximum": 120,
        +  "minimum": 10,
        +  "type": "number"
        +}
      • addedInput schema / properties / expressive_mode
        Added value: +{
        +  "description": "Only works for voices marked expressive in list_voice_catalog",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / handbook
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Behaviour switches (only the ones you pass change)",
        +  "properties": {
        +    "ai_disclosure": {
        +      "type": "boolean"
        +    },
        +    "conversational_personality": {
        +      "type": "boolean"
        +    },
        +    "echo_verification": {
        +      "type": "boolean"
        +    },
        +    "high_empathy": {
        +      "type": "boolean"
        +    },
        +    "natural_filler_words": {
        +      "type": "boolean"
        +    },
        +    "scope_boundaries": {
        +      "type": "boolean"
        +    },
        +    "speech_normalization": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / interruption_sensitivity
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • removedInput schema / properties / language
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / languages
        Added value: +{
        +  "description": "Retell locales like [\"en-US\",\"uk-UA\"]; more than one = multilingual (answers in the caller's language). [] or one locale = script language only",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / llm
        Added value: +{
        +  "description": "Model: fast, balanced (default) or smart",
        +  "enum": [
        +    "fast",
        +    "balanced",
        +    "smart"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / reminder_seconds
        Added value: +{
        +  "description": "Nudge a silent person after N seconds; 0 = off",
        +  "maximum": 120,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / responsiveness
        Added value: +{
        +  "description": "How fast the agent answers (1 = fastest)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / rules
        Added value: +{
        +  "description": "Communication rules (plain text instructions for how the agent talks). Omit to keep the saved ones",
        +  "maxLength": 8000,
        +  "type": "string"
        +}
      • addedInput schema / properties / screen_cards
        Added value: +{
        +  "description": "Show interactive cards (buttons/forms) on screen during voice calls",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / speech_speed
        Removed value: -{
        -  "type": "number"
        -}
      • addedInput schema / properties / speed
        Added value: +{
        +  "description": "Speaking pace, 0.7-1.3 (1 = normal)",
        +  "maximum": 1.3,
        +  "minimum": 0.7,
        +  "type": "number"
        +}
      • addedInput schema / properties / voice_id
        Added value: +{
        +  "description": "Voice id from list_voice_catalog (e.g. \"retell-Grace\", \"11labs-Adrian\")",
        +  "type": "string"
        +}
      • removedInput schema / properties / voice_temperature
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / voice_type
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / volume
        Added value: +{
        +  "maximum": 2,
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Addedset_presentation_cta
    • Addedset_presentation_look
    • Addedset_presentation_slides
    • Addedset_presentation_voice
    • Addedset_profile_avatar
    • Addedset_telegram_voice_calls
    • Addedset_telegram_voice_settings
    • Addedset_workspace_member_permissions
    • Addedset_workspace_member_role
    • Addedsetup_phone_agent
    • Addedstop_custom_audience_enrichment
    • Addedsync_campaign_stats
    • Addedtakeover_campaign_thread
    • Addedtakeover_linkedin_contact
    • Addedtest_agent_reply
    • Changedupdate_agent8 fields changed
      • addedInput schema / properties / avatar_preset
        Added value: +{
        +  "description": "Preset face avatar-1 … avatar-20",
        +  "pattern": "^avatar-([1-9]|1[0-9]|20)$",
        +  "type": "string"
        +}
      • removedInput schema / properties / company_description
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / company_name
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / company_website
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / description
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / gender
        Added value: +{
        +  "enum": [
        +    "male",
        +    "female"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Agent id (UUID) — from list_agents"
      • addedInput schema / properties / purpose
        Added value: +{
        +  "enum": [
        +    "sales",
        +    "support",
        +    "info"
        +  ],
        +  "type": "string"
        +}
    • Addedupdate_agent_connection
    • Addedupdate_agent_script
    • Changedupdate_campaign5 fields changed
      • addedInput schema / properties / agentId
        Added value: +{
        +  "description": "Draft only",
        +  "type": "string"
        +}
      • addedInput schema / properties / branchId
        Added value: +{
        +  "description": "Draft only; null = General",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / id / description
        Added value: +"Campaign id (UUID) from list_campaigns"
      • changedInput schema / properties / settings / additionalProperties
        Previous value: -{}New value: +true
      • addedInput schema / properties / settings / properties
        Added value: +{
        +  "autoResponseDelayMinutes": {
        +    "description": "Delay before the AI email auto-reply (default 10).",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "autoResponseEnabled": {
        +    "description": "AI answers email replies automatically (default true).",
        +    "type": "boolean"
        +  },
        +  "campaignDurationDays": {
        +    "description": "Planned duration in days (default 30).",
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "ccEmail": {
        +    "description": "Address put in CC of outgoing emails.",
        +    "type": "string"
        +  },
        +  "channels": {
        +    "description": "Channels the campaign uses (default ['email']).",
        +    "items": {
        +      "enum": [
        +        "email",
        +        "linkedin",
        +        "phone_call"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "clientEmailProvider": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "google",
        +          "microsoft"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "description": "Informational provider of own mailboxes."
        +  },
        +  "customInstructions": {
        +    "description": "Communication Rules: CTA, links, promises, what never to say. Overrides prompt defaults in emails, follow-ups, AI auto-replies and LinkedIn. Also sets the informal/formal form of address (e.g. ти/Ви, du/Sie) when the rules say so.",
        +    "maxLength": 6000,
        +    "type": "string"
        +  },
        +  "dailyEmailLimit": {
        +    "description": "Emails per day; the app keeps it equal to dailyLimit.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "dailyLimit": {
        +    "description": "New contacts emailed per day. Must not exceed sender capacity (list_sender_emails / list_client_mailboxes). Default 200.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "dailyLinkedinLimit": {
        +    "description": "Campaign-wide LinkedIn invites per day across ALL its accounts (hard limit). Each account also has its own warm-up cap.",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "emailContent": {
        +    "additionalProperties": true,
        +    "description": "Email content (wizard step 4). On a running campaign a change to steps/delays is NOT applied once anything was sent; see settings.smartleadSequencePending in get_campaign.",
        +    "properties": {
        +      "followUps": {
        +        "description": "Follow-ups after the first email (max 7).",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "body": {
        +              "description": "Fixed mode: body.",
        +              "maxLength": 20000,
        +              "type": "string"
        +            },
        +            "delayDays": {
        +              "description": "Days after the previous email.",
        +              "maximum": 90,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "prompt": {
        +              "description": "AI mode: writing rules for this follow-up.",
        +              "maxLength": 4000,
        +              "type": "string"
        +            },
        +            "subject": {
        +              "description": "Fixed mode: subject.",
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "delayDays"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 7,
        +        "type": "array"
        +      },
        +      "htmlSteps": {
        +        "description": "HTML mode: one entry per email; delayDays = days after the previous email (not on the first).",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "delayDays": {
        +              "maximum": 90,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "html": {
        +              "type": "string"
        +            },
        +            "subject": {
        +              "maxLength": 500,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subject",
        +            "html"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 20,
        +        "type": "array"
        +      },
        +      "mode": {
        +        "description": "ai = AI writes each email from the prompt; fixed = your text with {{first_name}}-style placeholders; html = your own HTML steps.",
        +        "enum": [
        +          "ai",
        +          "fixed",
        +          "html"
        +        ],
        +        "type": "string"
        +      },
        +      "prompt": {
        +        "description": "AI writing rules for the first email.",
        +        "type": "string"
        +      },
        +      "tone": {
        +        "enum": [
        +          "formal",
        +          "casual",
        +          "friendly"
        +        ],
        +        "type": "string"
        +      },
        +      "variants": {
        +        "description": "Fixed mode: up to 5 A/B variants of the first email.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "body": {
        +              "type": "string"
        +            },
        +            "subject": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "subject",
        +            "body"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 5,
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "mode"
        +    ],
        +    "type": "object"
        +  },
        +  "emailSenderMode": {
        +    "description": "managed = Vendo warmed pool (PAID PLAN REQUIRED to launch); client_owned = the workspace's own mailboxes (connect_client_mailbox). Default managed.",
        +    "enum": [
        +      "managed",
        +      "client_owned"
        +    ],
        +    "type": "string"
        +  },
        +  "emailSignature": {
        +    "description": "HTML signature appended to emails ('' = no signature).",
        +    "type": "string"
        +  },
        +  "excludeWeekends": {
        +    "description": "Do not send on Saturday/Sunday (default true).",
        +    "type": "boolean"
        +  },
        +  "followUpInterval": {
        +    "description": "Legacy: days between follow-ups, used only when emailContent.followUps is empty (default 3).",
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "linkedinAutoReplyDisabled": {
        +    "description": "Switch LinkedIn AI auto-replies OFF for this campaign only (per-account settings: update_linkedin_account_settings).",
        +    "type": "boolean"
        +  },
        +  "linkedinContent": {
        +    "additionalProperties": true,
        +    "description": "LinkedIn content (wizard step 5).",
        +    "properties": {
        +      "followup_delay_minutes": {
        +        "description": "Delay of the first message after the invite is accepted.",
        +        "maximum": 43200,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "followup_exact_text": {
        +        "description": "Fixed first message after connect.",
        +        "maxLength": 1500,
        +        "type": "string"
        +      },
        +      "invite_exact_text": {
        +        "description": "Fixed connection note (LinkedIn sends max 200 chars).",
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "invite_prompt": {
        +        "description": "AI rules for the connection note (also used for the form of address).",
        +        "type": "string"
        +      },
        +      "invite_tone": {
        +        "$ref": "#/properties/settings/properties/emailContent/properties/tone"
        +      },
        +      "mode": {
        +        "enum": [
        +          "ai",
        +          "fixed"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "mode"
        +    ],
        +    "type": "object"
        +  },
        +  "maxFollowUps": {
        +    "description": "Legacy: number of follow-ups when emailContent.followUps is empty (default 3).",
        +    "maximum": 7,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "notifyEmails": {
        +    "description": "Addresses notified when a lead replies.",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "selectedLinkedinAccountIds": {
        +    "description": "LinkedIn accounts used by this campaign (ids from list_linkedin_accounts). Empty = all connected accounts at launch.",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "senderEmailIds": {
        +    "description": "Restrict sending to these sender ids from list_sender_emails (empty = auto-assign at launch).",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "speedTier": {
        +    "enum": [
        +      "conservative",
        +      "balanced",
        +      "aggressive"
        +    ],
        +    "type": "string"
        +  },
        +  "stopOnNegative": {
        +    "description": "Saved like the app (currently not read by the sender).",
        +    "type": "boolean"
        +  },
        +  "timezone": {
        +    "description": "IANA timezone of the sending window, e.g. Europe/London (default).",
        +    "type": "string"
        +  },
        +  "trackLinks": {
        +    "description": "Saved like the app (currently not read by the sender).",
        +    "type": "boolean"
        +  },
        +  "trackOpens": {
        +    "description": "Insert the open-tracking pixel.",
        +    "type": "boolean"
        +  },
        +  "workingHours": {
        +    "description": "[startHour, endHour] in the campaign timezone (default [9,18]).",
        +    "items": [
        +      {
        +        "maximum": 23,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      {
        +        "maximum": 24,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    ],
        +    "maxItems": 2,
        +    "minItems": 2,
        +    "type": "array"
        +  }
        +}
    • Addedupdate_campaign_discovery
    • Addedupdate_crm_integration_settings
    • Addedupdate_custom_audience_contact
    • Addedupdate_google_meet_settings
    • Addedupdate_linkedin_account_settings
    • Addedupdate_narrator_lead
    • Addedupdate_notification_preferences
    • Addedupdate_profile
    • Addedupdate_referral_link
    • Addedupload_custom_audience
  4. 3 tool updates
    • Addedcrm_list_branches
    • Changedcrm_list_leads1 field changed
      • addedInput schema / properties / branch
        Added value: +{
        +  "type": "string"
        +}
    • Changedcrm_stats2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / branch
        Added value: +{
        +  "type": "string"
        +}
  5. 4 tool updates
    • Addedsdr_learning_recompute
    • Addedsdr_list_hunters
    • Addedsdr_pause_hunter
    • Addedsdr_resume_hunter
  6. 1 tool update
    • Changedcrm_reply_to_lead2 fields changed
      • removedInput schema / properties / channel
        Removed value: -{
        -  "enum": [
        -    "email",
        -    "linkedin"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / subject
        Removed value: -{
        -  "type": "string"
        -}
  7. 1 tool update
    • Changedcrm_reply_to_lead2 fields changed
      • addedInput schema / properties / channel
        Added value: +{
        +  "enum": [
        +    "email",
        +    "linkedin"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / subject
        Added value: +{
        +  "type": "string"
        +}
  8. 149 tool updates
    • First observedarchive_campaign
    • First observedbuy_audience_set
    • First observedconnect_google_meet
    • First observedconnect_linkedin_account
    • First observedconnect_telegram_bot
    • First observedcreate_agent
    • First observedcreate_campaign
    • First observedcrm_add_comment
    • First observedcrm_communication_cards
    • First observedcrm_communication_history
    • First observedcrm_communication_thread
    • First observedcrm_create_calendar_event
    • First observedcrm_create_lead
    • First observedcrm_create_stage
    • First observedcrm_delete_calendar_event
    • First observedcrm_enrich_from_linkedin
    • First observedcrm_get_conversation
    • First observedcrm_get_lead
    • First observedcrm_get_settings
    • First observedcrm_list_calendar_events
    • First observedcrm_list_leads
    • First observedcrm_list_linkedin_accounts
    • First observedcrm_list_notifications
    • First observedcrm_list_stages
    • First observedcrm_list_workspace_agents
    • First observedcrm_list_workspace_members
    • First observedcrm_mark_all_notifications_read
    • First observedcrm_mark_notification_read
    • First observedcrm_move_lead
    • First observedcrm_reply_to_lead
    • First observedcrm_stats
    • First observedcrm_update_calendar_event
    • First observedcrm_update_lead
    • First observedcrm_update_settings
    • First observedcrm_update_stage
    • First observeddeep_scan_agent
    • First observeddelete_agent
    • First observeddelete_campaign
    • First observeddelete_crm_lead
    • First observeddelete_crm_stage
    • First observeddisconnect_google_meet
    • First observeddisconnect_linkedin_account
    • First observeddisconnect_telegram_bot
    • First observedduplicate_agent
    • First observedgenerate_agent_description
    • First observedgenerate_agent_script
    • First observedget_agent
    • First observedget_agent_plan_limits
    • First observedget_audience
    • First observedget_audience_set
    • First observedget_audience_set_contacts
    • First observedget_balance
    • First observedget_balance_full
    • First observedget_campaign
    • First observedget_credit_transactions
    • First observedget_credit_usage_by_agent
    • First observedget_credit_usage_by_type
    • First observedget_credit_usage_for_agent
    • First observedget_credit_usage_for_agent_connections
    • First observedget_credit_usage_monthly
    • First observedget_invoices
    • First observedget_narrator_analytics
    • First observedget_pricing
    • First observedget_sdr_email_capacity
    • First observedget_subscription
    • First observedget_subscription_limits
    • First observedget_telegram_analytics
    • First observedget_telegram_bot_info
    • First observedget_widget_embed_code
    • First observedlaunch_audience_set
    • First observedlaunch_campaign
    • First observedlist_agent_connections
    • First observedlist_agent_presentations
    • First observedlist_agents
    • First observedlist_agents_with_stats
    • First observedlist_audience_sets
    • First observedlist_audiences
    • First observedlist_campaigns
    • First observedlist_google_meet_meetings
    • First observedlist_linkedin_accounts
    • First observedlist_narrator_leads
    • First observedlist_retell_voices
    • First observedpause_campaign
    • First observedpause_channel
    • First observedpreview_agent_email
    • First observedpreview_buy_audience_set
    • First observedpreview_deep_scan
    • First observedpreview_delete_agent
    • First observedpreview_delete_campaign
    • First observedpreview_delete_crm_lead
    • First observedpreview_delete_crm_stage
    • First observedpreview_disconnect_linkedin_account
    • First observedpreview_launch_audience_set
    • First observedpreview_launch_campaign
    • First observedpreview_linkedin_followup
    • First observedpreview_linkedin_invite
    • First observedpreview_reconnect_linkedin_account
    • First observedreassign_crm_lead
    • First observedreconnect_linkedin_account
    • First observedresume_channel
    • First observedsave_audience
    • First observedsave_scan_data
    • First observedscan_website_quick
    • First observedsdr_activate_search
    • First observedsdr_activity_feed
    • First observedsdr_company_heat
    • First observedsdr_create_search
    • First observedsdr_delete_outreach
    • First observedsdr_delete_search
    • First observedsdr_export_people_csv
    • First observedsdr_export_personas_to_audience
    • First observedsdr_generate_agent_signal_profile
    • First observedsdr_get_agent_signal_profile
    • First observedsdr_get_outreach
    • First observedsdr_get_outreach_content
    • First observedsdr_get_person_detail
    • First observedsdr_get_search
    • First observedsdr_health
    • First observedsdr_launch_outreach
    • First observedsdr_learning_insights
    • First observedsdr_list_personas
    • First observedsdr_list_searches
    • First observedsdr_outreach_summary
    • First observedsdr_pause_outreach
    • First observedsdr_pause_search
    • First observedsdr_persona_stats
    • First observedsdr_preview_delete_outreach
    • First observedsdr_preview_delete_search
    • First observedsdr_preview_launch_outreach
    • First observedsdr_preview_outreach_content
    • First observedsdr_preview_run_now
    • First observedsdr_preview_search
    • First observedsdr_recent_signals
    • First observedsdr_regenerate_search
    • First observedsdr_resume_outreach
    • First observedsdr_resume_search
    • First observedsdr_run_now
    • First observedsdr_run_states
    • First observedsdr_signal_stats
    • First observedsdr_update_outreach_content
    • First observedsdr_update_search
    • First observedsearch_audience
    • First observedset_agent_avatar_from_url
    • First observedset_agent_company
    • First observedset_agent_contact_channels
    • First observedset_agent_status
    • First observedset_agent_voice
    • First observedupdate_agent
    • First observedupdate_campaign

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Buying-intent judgement for AI agents: three judges decide whether the author of any post or message is a real buyer, and draft a reply you approve.
    19 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    GTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.
    21
    195 npm
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources