HelpWell
Server Details
HelpWell by Workado, LLC connects AI assistants to your help desk, knowledge base, help docs, live chat support, contacts, email marketing and marketing automation for SaaS. Triage support tickets, draft replies and articles, review performance, and prepare newsletters and onboarding journeys. OAuth limits access to your approved workspace and permissions. Email delivery uses your Resend setup; Stripe workflows depend on your configured integration. Learn more at https://helpwell.ai.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 216 tools
With 216 tools, many share overlapping domains: multiple article tools (list_articles, search_articles, read_article, read_article_source), multiple settings getters (get_workspace_settings, get_product, get_help_center_settings), and several email domain actions (add_mail_domain, register_mail_domain, reuse_resend_domain, verify_mail_domain, check_mail_domain). While descriptions are detailed, the sheer volume and similar patterns make misselection likely.
Mostly consistent snake_case with a verb_noun pattern (get_, list_, create_, update_, delete_, etc.), but a few exceptions like settings_link and report_summary break the verb-first convention. Overall predictable and readable, so minor deviations.
216 tools is far beyond the recommended range, creating an overwhelming surface that no agent can navigate efficiently. This extreme mismatch warrants the lowest score.
The surface covers a vast domain (support, help center, email, journeys, AI, settings) and includes many lifecycle operations, but missing deletes for products, collections, segments, and contacts, and no get_ for some entities, leave minor gaps. Agents can often work around these via archive or merge, but not always.
Available Tools
216 toolsaccept_held_replyAccept a held emailed replyADestructiveInspect
An emailed reply that failed sender checks is held as a note. Accepting it makes it the customer's message in the conversation and reopens it. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | The held message id from get_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent. The description goes beyond them by describing the concrete effect (promotes the held note to the customer's message and reopens the conversation) and the admin-only restriction. It still doesn't say whether the action is reversible or whether the held note is removed, which matters 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the object being acted on and followed immediately by the effect and the permission gate. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, full schema coverage, and no output schema, the description covers the essential context: what a held reply is, what accepting does, and who may do it. The only real gap is the absence of any statement about reversibility or the fate of the original note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single messageId parameter is already documented as coming from get_conversation. The description's mention of a reply 'held as a note' gives useful context about which id to pass but adds no format or sourcing detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (accept) and resource (held emailed reply) and explains the resulting state change: the note becomes the customer's message and the conversation reopens. It does not explicitly name the sibling dismiss_held_reply as the opposite action, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the setup sentence (a reply held because it failed sender checks), and 'Admins only' adds a permission prerequisite. However, it never states when not to use it or points to dismiss_held_reply as the alternative, 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.
add_help_center_domainAdd a help center domainAInspect
Connect a domain of the customer's own, like help.acme.com, to a hosted product's help center. Returns the CNAME and TXT records required at their DNS provider. DNS verification is a separate action.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | Like help.acme.com. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-destructive/non-idempotent profile, so the bar is lower. The description adds genuinely useful context beyond them: the call returns CNAME and TXT records the customer must place at their DNS provider, and verification is not part of this call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the return payload, then the workflow boundary. Every sentence conveys 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.
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 carries the return-value burden by naming the CNAME/TXT records. For a two-parameter additive tool with full schema coverage and annotations, this is nearly complete, though it does not say what happens if the domain is already connected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented (including the help.acme.com example, which the description merely repeats). The description adds no format, constraint, or hostname-validation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (connect) and resource (a customer domain to a hosted product's help center), with a concrete example (help.acme.com). It implicitly distinguishes itself from the similar-sounding add_mail_domain/add_redirect siblings by scoping to the help center.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence 'DNS verification is a separate action' tells the agent this tool does not complete the workflow and routes the verification step elsewhere. It does not explicitly name check_help_center_domain or state when not to use it versus add_mail_domain, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mail_domainAdd an email domainAInspect
Add one domain to the workspace's Resend account (or reuse it if it is there) for the chosen purposes. Returns the required DNS records. Domain verification is a separate action.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Like acme.com or news.acme.com. | |
| region | No | Resend region. Default us-east-1. | |
| purposes | Yes | What the domain is for: support (sends support replies), marketing (sends newsletters and journey email), replies (receives customer replies). | |
| tracking | No | Open and click tracking. Default on for a marketing-only domain. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring non-readOnly, non-destructive, non-idempotent and closed-world, the description adds real context beyond them: it discloses the return payload (DNS records, valuable since there is no output schema), that verification is deferred to a separate action, and that an existing domain is reused. It does not mention auth/connection requirements or what happens to an existing domain's purpose configuration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, followed by the return value and the verification caveat. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no output schema, the description covers the essential gaps: what is created, that DNS records come back, and that verification is out of scope. It is only marginally short on failure/precondition behavior and how it differs from register/reuse siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — name examples, region enum with default, purposes enum with per-value meanings and tracking default are all documented in the schema. The description only restates 'one domain' and 'the chosen purposes', adding no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb+resource: adds one domain to the workspace's Resend account for chosen purposes. It does not explicitly distinguish itself from close siblings like register_mail_domain or reuse_resend_domain, which handle the same resource — the phrase 'or reuse it if it is there' actually blurs the boundary with reuse_resend_domain rather than clarifying it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one useful routing cue — 'Domain verification is a separate action' — steering the agent toward verify_mail_domain afterward. But it offers no guidance on when to prefer this over register_mail_domain or reuse_resend_domain, and no prerequisites (e.g., Resend connection required) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_noteAdd an internal noteAInspect
Add an internal note to a conversation. The customer never sees it. Mention teammates by user id to notify them.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The note text. | |
| mentions | No | User ids of teammates to notify. | |
| requestId | No | Optional UUID that makes the call safe to repeat: the same id never posts twice. Left out, a new one is used. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not destructive, not idempotent). The description adds genuinely useful audience context ('the customer never sees it'), but it says nothing about the idempotency behavior that the schema only hints at via requestId, nor about permissions or notification side effects beyond mentions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and scope. The visibility sentence earns its place; the mentions sentence is slightly redundant against the schema but still brief and on-point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, well-documented four-parameter mutation with clear annotations and no output schema, the description covers what and audience. It is close to complete; only the when-to-use routing against reply_to_conversation and save_reply_draft is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the requestId repeat-safety semantics. The description's mention guidance ('Mention teammates by user id to notify them') largely restates the existing mentions parameter description, adding no new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add an internal note to a conversation') and distinguishes itself from the reply-family siblings by making clear the customer never sees it. It never names a sibling like reply_to_conversation or save_reply_draft explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer 'use this when you want an internal-only annotation rather than a customer-facing reply.' There is no when-to-use statement, no exclusions, and no named alternative among the many conversation-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_playbook_ruleAdd a playbook ruleAInspect
Add a rule to a product's playbook, the approved guidance its AI agent follows. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The rule, up to 12,000 characters. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a write operation that is non-destructive, non-idempotent, and closed-world. The description adds one meaningful behavioral detail beyond annotations: the admin-only authorization requirement. It does not address the implications of non-idempotency (e.g., creating duplicate rules) or describe 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It defines the resource, explains the domain term 'playbook', and states the key access constraint all in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter write tool with full schema coverage and annotations covering the safety profile, the description supplies enough context to call it correctly: purpose, admin restriction, and playbook definition. The main remaining gap is that it does not route the agent to 'update_playbook_rule' when modifying an existing rule.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well documented by the schema. The description adds no additional syntax, format, or constraint details for 'productId' or 'content' beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and resource ('rule to a product's playbook') and even defines what a playbook is. It does not explicitly name the sibling 'update_playbook_rule' or otherwise differentiate itself from it, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ('Admins only') but does not say when to use this tool versus alternatives such as update_playbook_rule, nor does it provide any when-not-to-use guidance. Usage is implied by the tool name and purpose, not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_redirectAdd a help center redirectAIdempotentInspect
Send an old help center address (a full URL or a path) on to one of this product's articles, so old links keep working. A new rule for an address already mapped replaces it.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The old address, e.g. https://help.example.com/articles/123. | |
| slug | Yes | The article it should go to. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false; the description usefully adds the upsert semantics ('a new rule for an address already mapped replaces it'), which explains the practical consequence of an overlapping write. It does not mention permissions or validation failures, but the annotation coverage keeps the bar low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states what the tool does and why, the second front-loads the replacement behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with full schema coverage and annotations covering safety and idempotency, the description supplies the missing behavioral piece (replacement of existing mappings). Return values are not explained, but no output schema exists and the tool's outcome is self-evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% so the baseline is 3, and the description adds real meaning beyond the schema by clarifying that 'from' accepts either a full URL or a bare path. It adds nothing about productId or slug, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('send an old help center address on to one of this product's articles') and scopes it to help center redirects, which is clearly distinct from siblings like remove_redirect and list_redirects. An agent knows exactly what this creates 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use ('so old links keep working'), implying the migration/legacy-URL scenario. It does not name alternatives such as list_redirects to check existing mappings or remove_redirect to undo, so it stops short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_mail_layoutSet up email domains in one stepAInspect
Add the email domains in one step. "recommended": support from the root domain, marketing from news., replies on reply.. "single": everything on mail. (for a Resend plan with few domains). Returns the DNS records to add.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | The company domain, like acme.com. | |
| layout | Yes | ||
| region | No | Resend region. Default us-east-1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=false, so the agent knows this mutates state but is not flagged destructive. The description adds that the call returns DNS records to add, which is useful behavioral context absent from the annotations. It does not address non-idempotency (what happens on repeat calls) or interaction with already-existing domains, leaving a real gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact – three short sentences, with the core action front-loaded. The phrase "in one step" duplicates the title and the quoting style around the layout keywords is slightly awkward, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description correctly covers the return value (DNS records). Layout semantics are well covered, but for a non-idempotent mutation tool the description is silent on limits, repeat-call behavior, and how it interacts with pre-existing domains or the sibling add/verify tools – a moderate completeness gap rather than a fatal one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: root and region are documented in the schema, but layout is a bare enum with values only. The description carries the semantic burden for layout by explaining what each preset actually configures (root/news./reply. vs everything on mail.), which the schema cannot convey. Region's meaning remains schema-only, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: it adds email domains in one step using a preset layout. It implicitly distinguishes itself from single-domain siblings like add_mail_domain or register_mail_domain by emphasizing the one-step/batch nature, but it never names those alternatives explicitly, so sibling differentiation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives real usage context for choosing between layouts ("recommended" for a full setup, "single" for a Resend plan with few domains), which is genuinely helpful. However, it offers no guidance on when to use this tool versus add_mail_domain/register_mail_domain, nor any prerequisites (e.g., domain already verified, existing domains present).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_code_updatePublish a code updateADestructiveInspect
Publish one proposed article update from Code updates, as drafted or with your edited Markdown. The article is saved like an editor save and goes live.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The proposal id from get_code_updates. | |
| proposed | No | The whole article file to publish instead, front matter included. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds real context beyond that by stating the article 'is saved like an editor save and goes live,' which tells the agent the effect is a production publish. It does not disclose whether the live article is overwritten, whether the action is reversible, or whether confirmation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core action and its effect are front-loaded. Every clause earns its place by clarifying scope and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a mutation tool whose schema is fully documented and whose annotations carry the safety hints. Still, for a destructive publish with no output schema, it omits what happens to the previously live article and whether the publish can be undone, which an agent should know before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented; the description's mention of 'as drafted or with your edited Markdown' maps loosely to the optional 'proposed' field but adds no syntax or format detail beyond the schema's 'whole article file ... front matter included.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (publish) and resource (one proposed article update from Code updates), and clarifies the two modes of operation (as drafted, or with your edited Markdown). An agent can distinguish this from edit_code_update, discard_code_update, and decide_code_update_batch 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'publish one proposed article update,' and the outcome ('goes live') hints at when the agent would want this rather than editing. However, it never names the alternatives (edit_code_update, discard_code_update, decide_code_update_batch) or states preconditions/exclusions, 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.
approve_training_proposalApprove a training proposalADestructiveInspect
Approve a pending proposal, optionally with edited guidance text, so it joins the product's playbook the AI agent follows. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| proposed | No | Edited guidance to approve instead of the proposed text. | |
| proposalId | Yes | The id from list_training_proposals. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation risk is covered structurally. The description adds genuine context on top: the effect is permanent (the guidance becomes part of the agent's playbook), approval is restricted to admins, and an optional replacement text can be supplied instead of the proposed one. Repeat-call or error behavior is still unstated, keeping this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action, then the effect, then the permission constraint. Every clause carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema but full annotation coverage, the description supplies the effect, the auth requirement, and the optional-override behavior an agent needs before calling it. Only the return/confirmation behavior and failure modes are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema; the baseline is 3. The description's phrase 'optionally with edited guidance text' corroborates the optional 'proposed' override but adds no format, length, or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Approve a pending proposal') plus the outcome ('joins the product's playbook the AI agent follows'), which is far more informative than the title alone. It does not, however, name the sibling it is distinguished from (e.g. dismiss_training_proposal or list_training_proposals), so the agent must infer the boundary from the domain wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'pending proposal' and 'Admins only' imply the applicable context and a prerequisite, but there is no explicit when-to-use/when-not statement and no named alternative such as dismiss_training_proposal for rejecting a proposal. 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.
archive_articleArchive a help articleADestructiveIdempotentInspect
Take a help article out of the help center and away from the agent, keeping it and its history. update_article with status "published" brings it back. Articles are not deleted from here.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The article slug, including its collection, e.g. "billing/download-invoices" (from list_articles). | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and idempotentHint=true; the description usefully reframes that by explaining the article and its history are preserved and the action is reversible via update_article. That is real context beyond the annotations. It stops short of mentioning permission requirements or the resulting article state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the effect front-loaded before the reversal path and the 'not deleted' clarification. Nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param mutation with no output schema, the description covers the key agent questions: what changes, what is retained, and how to reverse it. It could note whether article versions/history remain listable after archiving, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — slug (including collection) and productId are both documented in the schema, including provenance ('from list_articles', 'from list_products'). The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Take a help article out of the help center') and immediately narrows the effect: removed from public help center AND away from the AI agent, while retaining the article and its history. It explicitly distinguishes itself from deletion ('Articles are not deleted from here'), so an agent can separate it from any destructive/trash semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear reversal path — 'update_article with status "published" brings it back' — which tells the agent both when this tool is appropriate and how to undo it. It doesn't spell out prerequisites or a case where a different tool is preferred, but the 'not deleted from here' note implicitly rules out the delete interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_conversationAssign a conversationBDestructiveIdempotentInspect
Give a conversation to a teammate (their user id), hand it back to the AI agent ("ai"), or leave it with the team unassigned (null).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | A teammate user id, "ai", or null for unassigned. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, covering the safety profile. The description adds no behavioral context beyond the annotation, such as whether the assigned teammate is notified, whether existing assignment is replaced, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and lists the possible assignment targets compactly. Every clause earns its place, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with complete schema coverage and annotations that communicate the safety profile, the description gives enough to understand the tool's core purpose. The main gap is the absence of when-to-use guidance, but overall it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the meaning of "ai" and null. The description restates the same semantics without adding new format or syntax details, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (give/assign) and resource (conversation), and enumerates the three possible assignment targets: teammate, AI agent, or unassigned. This is clear and unambiguous, but it does not explicitly differentiate the tool from siblings like update_conversation or reply_to_conversation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what values can be passed for the assignment target, but it provides no guidance on when to use this tool versus alternatives such as update_conversation, merge_conversations, or snooze_conversation. There are no prerequisites, conditions, or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_knowledge_baseBuild the knowledge base from codeAInspect
Start building the product's knowledge base from its connected GitHub repositories, on the workspace's model and within the build budget. Drafts reach Code updates for review as they are written.
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | Optional: what the product is, in a sentence. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, non-idempotent, closed-world), so the bar is lower. The description adds real context beyond that: work happens asynchronously ('Drafts reach Code updates for review as they are written'), is bounded by a build budget, and runs on the workspace model. It stops short of saying whether the call blocks or how progress is polled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and no filler. The second sentence about drafts arriving is dense but each clause earns its place; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, no-output-schema build tool, the description tells the agent where results land (Code updates for review), which resolves the main 'what happens next' question. It omits duration/blocking behavior and any link to the approval tools that consume the drafts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both productId and about are already documented and baseline is 3. The description mentions the repo source, model, and budget but adds no syntax or meaning for the two declared parameters (e.g., whether `about` influences extraction quality).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (build/start building) and resource (the product's knowledge base) with its source (connected GitHub repositories), which separates it from siblings like retry_product_setup or approve_code_update. Sibling differentiation is present implicitly via the Code updates workflow, but it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the prerequisites it names (connected GitHub repos, workspace model, build budget) rather than stated as an explicit when-to-use rule. There is no guidance on when NOT to run it, or how it relates to approve_code_update / decide_code_update_batch as follow-on steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_newsletterCancel a scheduled newsletterADestructiveInspect
Stops a scheduled or sending newsletter; email not yet handed to the provider is not sent.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavior beyond that: cancellation is not atomic - mail already handed to the provider cannot be recalled, only unsent mail is suppressed. It still doesn't say whether the cancel is reversible or what error states look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and its scope, followed by the one behavioral caveat that matters. No padding or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description plus annotations cover the essentials: what it does, what states it applies to, and the partial-cancellation caveat. Missing only secondary details such as reversibility and permission requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema coverage, and the schema description even points to list_newsletters as the id source. The description adds no additional meaning about campaignId, so the baseline 3 for full schema coverage is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (stops) plus the resource (newsletter) and narrows the applicable states to 'scheduled or sending', which cleanly separates it from create_newsletter, schedule_newsletter, update_newsletter and preview_newsletter 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'scheduled or sending' gives clear context for when the tool applies, so an agent knows it should not be used on a draft or an already-sent campaign. It stops short of naming alternatives or stating exclusions explicitly (e.g. what to do for a draft, or whether update_newsletter is the right path instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_teammate_roleChange a teammate's roleADestructiveIdempotentInspect
Change a teammate's role. A viewer's open conversations go back to the queue. The workspace always keeps an owner.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | owner: everything, including the team and billing; admin: settings and automation; agent: conversations and contacts; viewer: read only. | |
| userId | Yes | The teammate id from list_team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes beyond them by disclosing real side effects: a viewer's open conversations return to the queue, and the workspace always retains an owner. It omits whether the change is immediate/irreversible in other respects or what happens to in-flight assignments for other roles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and immediately followed by the two most important behavioral constraints. No preamble or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema and covering annotations, the description supplies the key side effects and the owner-invariant. Remaining gaps are permission requirements and error behavior for the last-owner case, which are minor given the annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the role enum is fully documented in the schema, so the description is not required to carry parameter meaning. It adds no additional semantics about userId or role, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change) and resource (a teammate's role), which is readily distinguished from invite_teammate, remove_teammate, and list_team in the sibling set. It is clear, but it never explicitly names those neighboring tools, so differentiation relies on the reader's inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use or when-not-to-use guidance and no prerequisites (e.g., which roles may perform this change, whether a teammate must first be invited). The only workflow hint, 'The teammate id from list_team,' lives in the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_help_center_domainCheck a help center domainAIdempotentInspect
Check a custom help center domain now: its DNS records, certificate and whether it is live.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Help center domain (from list_help_center_domains) id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and (notably) readOnlyHint=false, so the safety profile is supplied. The description adds that the operation inspects DNS, certificate, and liveness, and 'now' implies a freshly triggered live probe rather than a cached read - context that helps explain why readOnlyHint is false. It does not disclose latency, rate limits, or what happens if the domain is misconfigured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: verb, resource, and the three things inspected. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter check tool with annotations and no output schema, the description covers purpose and the substance of the result (DNS, certificate, live status), which is enough for an agent to call it correctly. It stops short of describing the result shape or error behavior on failure, which is a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%; the schema itself documents that domainId comes from list_help_center_domains. The description adds no syntax, format, or ID-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.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('check') plus specific resource ('a custom help center domain'), and it enumerates what is inspected: DNS records, certificate, and live status. It is distinguishable from check_mail_domain/verify_mail_domain by resource, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word 'now' suggests an on-demand re-check of a domain that has already been added (via add_help_center_domain) or is being troubleshot. There is no explicit when-to-use statement, no prerequisite, and no mention of alternative tools like list_help_center_domains or the mail-domain equivalents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_mail_domainCheck an email domainAIdempotentInspect
Re-read an email domain's status from Resend and look up its DNS records again, without asking Resend to verify.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Email domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (idempotent, non-destructive, not open-world), and the description adds the important detail that this is a refresh-and-DNS-lookup rather than a verification trigger. This explains why readOnlyHint is false despite the 're-read' framing — it re-fetches and stores state — though it doesn't state side effects on cached status explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action, ending with the discriminating clause. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does convey what the call produces (refreshed status plus DNS records). It could note whether this changes the domain's verification state or when a refresh is warranted, but for a one-parameter refresh tool it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Email domain id.'), so the schema carries the parameter burden. The description adds no format, prefix, or sourcing detail beyond the schema, which is the expected baseline for a fully covered single-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs and resource: re-read the domain's status from Resend and re-look-up its DNS records. It also distinguishes itself from verify_mail_domain with the clause 'without asking Resend to verify', so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative constraint 'without asking Resend to verify' implicitly selects this tool over the verify_mail_domain sibling for a non-mutating refresh. It gives clear context but never states explicitly when to prefer a plain refresh over a verification, so it stops 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.
check_newsletterCheck a newsletter before sendingBRead-onlyIdempotentInspect
The send pre-flight: sender, audience counts after consent, suppressions and the frequency cap, email setup readiness, and every content and link check. canSend says whether it can be scheduled.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds useful behavioral detail by listing the checks performed and surfacing the canSend decision field, but says nothing about cost, latency, or what happens if checks fail beyond the boolean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the pre-flight framing and then a compact enumeration of check categories. Every clause earns its place, though the final sentence is slightly clipped and relies on the reader to infer what canSend contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining returns, and it only names one field (canSend) out of what is clearly a multi-part check result. The input side is fully covered by the schema, but an agent cannot tell the shape or granularity of the diagnostic output it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ("Newsletter id from list_newsletters."), so the schema fully documents it. The description adds no additional meaning about campaignId, which is the correct baseline of 3 when structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (a send pre-flight for a newsletter) and enumerates exactly what it evaluates: sender, post-consent audience counts, suppressions, frequency cap, email setup readiness, and content/link checks. It is clearly distinguishable from nearby siblings like get_newsletter_results or preview_newsletter, though it never explicitly contrasts 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"The send pre-flight" implies the tool is used before scheduling or sending, and the closing line ties canSend to schedulability, so the usage context is inferable. However, it never states when to use this versus preview_newsletter, count_newsletter_audience, send_test_newsletter, or schedule_newsletter, and offers no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_contactsCount contactsARead-onlyIdempotentInspect
How many contacts match a search, segment, product or email status (all contacts when none is given).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Name or email contains this. | |
| productId | No | Only this product's contacts (from list_products). | |
| segmentId | No | Only people in this segment (from list_segments). | |
| emailStatus | No | Only contacts with this email status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds one genuinely useful behavioral fact: the no-filter case counts the entire contact base. It says nothing about cost, latency or result precision on a large workspace.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and scope, with the default behavior in a compact parenthetical. No filler and nothing an agent must skip past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a filterable count tool with zero required params, 100% schema coverage and no output schema, the description covers the essential ambiguity (what happens with no filters). Minor gaps remain: it does not state that it returns a single integer or how multiple filters combine.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (search, productId, segmentId, emailStatus with its enum) is already documented, including where IDs come from. The description's enumeration of 'search, segment, product or email status' merely restates those same axes without adding format or combination semantics (e.g. whether filters AND together).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count) and resource (contacts) with the filter axes spelled out, so the agent immediately knows this returns a number rather than records. It does not name the sibling it competes with (search_contacts, count_duplicate_contacts), so the differentiation is implied 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb — use this when you need a count rather than the contacts themselves — and it clarifies the no-filter default ('all contacts when none is given'). However, it never says when to prefer count_contacts over search_contacts or count_duplicate_contacts, and lists no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_duplicate_contactsCount duplicate contactsARead-onlyIdempotentInspect
How many contacts share an email address with another contact.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds a genuinely useful semantic detail by defining what counts as a duplicate (shared email address), but says nothing about the shape of the result or whether pairs vs contacts are counted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that delivers the whole definition with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter count tool with no output schema, the description defines the metric well enough to call correctly. The only minor gap is that the return shape (a single integer vs grouped counts) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to compensate for, and it correctly avoids inventing filtering options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Defines a specific metric: the count of contacts that share an email address with another contact. An agent can tell it apart from count_contacts (which counts all contacts) and from merge_duplicate_contacts, though it does not explicitly name those siblings as the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the implied use case (quantifying duplicate overlap) but gives no explicit when-to-use, no when-not, and never points to the closely related siblings list_merge_candidates or merge_duplicate_contacts. An agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_newsletter_audienceCount a newsletter audienceARead-onlyIdempotentInspect
How many addresses an audience (segments, tags, filters, exclusions) would reach now, after consent and suppressions: eligible, in scope, not subscribed, suppressed and at the frequency cap. Nothing is saved.
| Name | Required | Description | Default |
|---|---|---|---|
| audience | No | Who it goes to: contacts in ANY (match "any") or ALL (match "all") of the included segments, tags and filters, minus the excluded ones. Nothing included means every contact of the product. Consent and suppressions are always applied on top. | |
| productId | No | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral substance beyond that: the count is applied after consent and suppressions and is broken into eligible, in-scope, not-subscribed, suppressed, and frequency-cap categories, and confirms nothing is persisted. It does not describe the return shape, but annotations raise the bar lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the answer (count of addresses) in a single compact sentence, with the 'Nothing is saved' clause placed last to reinforce the non-persisting behavior. The middle enumeration of count categories is dense but informative; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only count tool with a deeply nested schema and no output schema, the description conveys the counting basis, the suppressions/consent layer, and the category breakdown. It is nearly complete, though without an output schema the exact return shape (single number vs. per-category breakdown) remains ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (audience, productId) are documented in depth in the schema itself, so the baseline is 3. The description names the audience inputs (segments, tags, filters, exclusions) but adds no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('how many addresses an audience would reach now') and clarifies the counting basis (segments, tags, filters, exclusions). It is clearly a counting tool, but it never distinguishes itself from close siblings like count_contacts, check_newsletter, or preview_newsletter, so an agent must infer which counter applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'would reach now' and 'Nothing is saved', signalling a dry-run/pre-flight estimate, which is useful context. However, there is no explicit when-to-use guidance and no routing to alternatives (count_contacts, preview_newsletter, get_newsletter_results), so the agent is left to infer the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_articleCreate a help articleAInspect
Write a new help article in a hosted product, saved as the editor saves it and indexed for search and the agent at once. It is a draft unless status is "published". Name an existing collection by id or title, or a new one to start it. Pass gapId when the article answers an unanswered question: the question is then marked drafted.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The article in Markdown, without front matter. | |
| gapId | No | The unanswered question it answers, from list_gaps. | |
| title | Yes | The article title, as readers see it. | |
| status | No | Defaults to "draft". | |
| productId | Yes | Product id from list_products. | |
| collection | Yes | A collection id or title from list_articles, or the name of a new one. | |
| description | No | One line shown under the title in lists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=false), and the description adds real behavioral context: the article defaults to a draft unless status is 'published', it is indexed for search and the agent, and passing gapId marks the question drafted. It omits any auth/permission requirements, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, with the draft-default and collection/gapId details following logically. Dense but every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter creation tool with no output schema, the description covers the creation semantics, default status, collection targeting, and the gapId side effect. It leaves the 'description' field and product scoping unaddressed, but nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: collection accepts an id, an existing title, or a new name, and gapId has the side effect of marking the question drafted. The 'description' parameter is left unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Write a new help article in a hosted product'), and 'new' implicitly distinguishes it from update_article. It does not explicitly name a sibling alternative, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional guidance for one path ('Pass gapId when the article answers an unanswered question') and the default status behavior, but offers no when-to-use-this-vs-alternatives guidance against draft_article_from_conversation or update_article. 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.
create_changelog_entryCreate a changelog entryAInspect
Write a changelog entry. It is a draft unless status is "published", which shows it on the public changelog and in the widget.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The entry in Markdown. | |
| tags | No | ||
| title | Yes | ||
| status | No | Defaults to "draft". | |
| summary | No | One line shown in lists. | |
| version | No | A version label, e.g. "2.4". | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, and the description still adds real behavioral context: the entry is a draft by default and only 'published' status exposes it on the public changelog and widget. That public-visibility side effect is exactly the kind of consequence an agent needs before setting status. It omits auth/permission requirements and whether publishing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the consequential status behavior immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter creation tool with no output schema, the description covers the publishing side effect but not the required parameters (productId, title) or the return value an agent would need an entry id for later update/delete. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so the schema documents most fields. The description adds genuine meaning for 'status' by explaining what 'published' actually does (public changelog + widget visibility), which goes beyond the schema's bare 'Defaults to draft'. It says nothing about body, tags, version, or summary, so moderate value only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Write a changelog entry'), so the action is unambiguous. It does not, however, differentiate itself from close siblings like update_changelog_entry, draft_changelog_from_releases, or delete_changelog_entry, leaving that disambiguation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use or when-not-to-use guidance and never names an alternative such as update_changelog_entry (for modifying an existing entry) or draft_changelog_from_releases (for AI-assisted drafting). An agent must infer usage purely from the verb 'write'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionCreate a help center collectionAInspect
Start a new collection in the help center, with its title and optional description and icon, before any article is filed in it. Its id (the first part of its articles' slugs) is made from the title.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | A Lucide icon name, e.g. "credit-card". | |
| title | Yes | The collection title readers see. | |
| productId | Yes | Product id from list_products. | |
| visibility | No | identified: only signed-in customers see it. Defaults to public. | |
| description | No | One line under the title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false and idempotent=false, so the safety profile is covered. The description adds a genuinely non-obvious behavioral trait: the collection id is derived from the title and becomes the first segment of article slugs, which has real consequences for later article URLs. It does not address permissions or visibility defaults, so it stops 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the action, then the accepted fields, then the ordering constraint and the id-derivation rule. Nothing is padded and nothing is repeated from the structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool the description covers purpose, fields and the slug/id rule, and with no output schema it need not explain returns. However it omits the required productId linkage and whether the new collection is immediately live versus draft, leaving gaps an agent would want before creating one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented in the schema and the baseline is 3. The description names title, description and icon but adds no meaning for productId or the visibility enum beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a new collection in the help center') and immediately scopes it with the fields it accepts and the ordering constraint ('before any article is filed in it'). An agent can distinguish this from update_collection or create_article 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before any article is filed in it' implies the sequencing use case, but the description never names alternatives (create_product, update_collection) or states when a collection is the right container versus, say, a product. 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.
create_contactAdd a contactAInspect
Adds one contact to a product by email (or fills in an existing contact with that address). Marketing consent stays unknown; recording a real opt-in is a separate action requiring its source. Suppressed addresses are not added.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| tags | No | Tag names. | |
| Yes | Email address. | ||
| productId | Yes | Product id from list_products. | |
| attributes | No | Custom fields that already exist in Settings → Fields and events (unknown names are ignored), plus country and company. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), but the description adds real behavioral value beyond them: consent remains unknown, suppressed addresses are rejected, and an existing contact with the same address is filled in rather than duplicated. It does not mention permissions or what the call returns, but for an annotated mutation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler, with the core create/upsert behavior front-loaded before the consent and suppression caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a nested attributes object, the description covers the behavioral edge cases an agent most needs (consent state, suppression, upsert). Missing only return-value expectations and any permission requirements, which keeps it short of full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% (4 of 5 properties documented, only 'name' bare), so the schema already carries most parameter meaning. The description adds only indirect parameter insight — that no consent parameter exists here and that opt-in needs a separate action — without clarifying any parameter's format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds one contact to a product by email') and immediately distinguishes its behavior from a plain create by noting the upsert case ('or fills in an existing contact with that address'), which separates it from update_contact and search_contacts 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context and implicit exclusions: suppressed addresses are not added, and opt-in recording 'is a separate action requiring its source' (pointing away from set_contact_consent). It stops short of explicitly naming the alternative tools or stating when a caller should prefer update_contact over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_email_templateSave an email as a templateBInspect
Saves an existing newsletter (campaignId) as a reusable template, or a full email document.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | No | ||
| document | No | Or a complete email document. | |
| campaignId | No | The newsletter to save as a template. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds that the source can be a campaign or a raw document, but says nothing about what happens on duplicate names, required permissions, or reversibility of a saved template.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the primary use case (saving an existing newsletter) and appends the secondary mode. Efficient with no filler, though the trailing 'or a full email document' is slightly loose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 5 params, a nested object, 40% schema coverage, and no output schema, the description resolves the main dual-mode ambiguity but omits return-value expectations and leaves several parameters unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description should compensate. It reinforces the campaignId ('existing newsletter') and document ('full email document') semantics, but those already carry schema descriptions, and it adds nothing for name, category, or description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (saves) and resource (template) and clarifies that the source can be either an existing newsletter via campaignId or a full email document. This distinguishes it from create_newsletter (which makes newsletters) and update_email_template, though it doesn't 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'or a full email document' clause implies the two supported input modes, giving some usage signal, but there is no explicit when-to-use guidance, no when-not, and no reference to alternatives like create_saved_reply or update_email_template.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_journeyCreate a journey draftAInspect
Saves a new draft journey from a full definition. It stays a draft until publish_journey. A recipe or generate_journey is usually a simpler start.
| Name | Required | Description | Default |
|---|---|---|---|
| definition | Yes | The journey document: { name, description, trigger (one of: ticket.created, ticket.escalated, ticket.closed, ticket.reopened, ticket.tagged, ticket.unresolved, ticket.rated, customer.replied, human.replied, chat.started, chat.answer_rated, contact.subscribed, contact.created, contact.updated, contact.tagged, custom.event, page.visited, login.succeeded, login.failed, email.delivered, email.opened, email.clicked, stripe.customer.created, stripe.customer.updated, stripe.checkout.completed, stripe.subscription.created, stripe.subscription.updated, stripe.subscription.cancelled, stripe.subscription.trial_ending, stripe.subscription.product_status, stripe.invoice.paid, stripe.invoice.payment_failed, stripe.charge.refunded, form.submitted, form.confirmed, contact.enriched, segment.entered, segment.left, article.viewed, article.rated, search.failed, roadmap.idea, roadmap.voted, roadmap.shipped, changelog.viewed, survey.answered, journey.entered, journey.completed, journey.converted, date.reached, manual.enrolled), triggers?: [{ event, ... }], productId, stopOnReply, reentry: always|once|after_completion, entry?: conditions, goal?, settings?: { quietHours, timeZone, emailCap }, steps: [...] }. Steps (1 to 50, each may have an id): { type: "wait", minutes }, { type: "email", campaignId } (a ready journey email), { type: "tag", tag }, { type: "remove_tag", tag }, { type: "set_attribute", ... }, { type: "branch", conditions, yes, no }, { type: "wait_event", ... }, { type: "message", ... }, { type: "note", body }, { type: "notify", ... }, { type: "exit" }, among others. Existing journey documents include the full step configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, but the description still adds lifecycle context annotations cannot express: the created journey remains a draft until publish_journey is called. It omits validation failure behavior and whether repeated calls create duplicates, but the draft-state disclosure is genuinely useful beyond the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, front-loaded with the action and followed by the lifecycle constraint and the routing advice in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers what it produces, its lifecycle state, and sibling routing, which is enough to call it correctly given the richly documented schema. It would be stronger if it noted whether the definition is validated or what happens on an invalid step definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'definition' parameter is documented in exhaustive detail (trigger enums, step types, step count bounds). The phrase 'a full definition' adds only a hint that an existing complete journey document can be reused, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Saves a new draft journey') and immediately names the sibling that advances it ('publish_journey') plus the two lighter-weight alternatives ('a recipe or generate_journey'). An agent can distinguish this from create_journey_from_recipe, generate_journey, and publish_journey 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from this tool when a recipe or generate_journey would suffice, which is real selection guidance. It stops short of stating the condition under which a hand-authored full definition is actually required (e.g. custom step types like branch/wait_event), so the 'when to use this one' side 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.
create_journey_from_recipeCreate a journey from a recipeAInspect
Copies a recipe into a new draft journey. Its email steps start empty and require ready email content before the journey can be published.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe id from list_journey_recipes. | |
| productId | No | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, non-idempotent write. The description adds value beyond them by disclosing the output is a draft (not published), that email steps are created empty, and that ready email content is required before publication – real workflow context. It does not say whether repeated calls create duplicate journeys or what auth is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, and the core action is front-loaded before the publishing caveat. Nothing is redundant with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity two-parameter tool with no output schema, the description covers the action, the resulting state (draft), and the publication prerequisite. It omits only follow-up details such as the returned journey identifier or next steps, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (recipe, productId) are already documented with their source list tools. The description adds no syntax, format, or selection guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Copies a recipe into a new draft journey.' The 'from a recipe' framing implicitly separates it from create_journey and generate_journey, but no sibling is named explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the recipe id must come from list_journey_recipes (per the schema) and the second sentence hints at a downstream prerequisite to publish. There is no explicit when-to-use-this-vs-create_journey guidance, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_newsletterCreate a newsletter draftAInspect
Saves a new newsletter draft from plain fields (subject, title, introduction, sections, button). Nothing is sent. This action uses the supplied content without AI generation or template selection.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Optional: a full HTML body instead of the blocks (it is sanitized; the brand header, address and unsubscribe footer are added). | |
| name | Yes | Internal name. | |
| title | Yes | The headline. | |
| ctaUrl | Yes | Button link (https). | |
| layout | No | ||
| eyebrow | No | Small line above the title. | |
| signoff | No | Closing line. | |
| subject | Yes | Subject line. | |
| audience | No | Who it goes to: contacts in ANY (match "any") or ALL (match "all") of the included segments, tags and filters, minus the excluded ones. Nothing included means every contact of the product. Consent and suppressions are always applied on top. | |
| ctaLabel | Yes | Button label. | |
| sections | No | Body sections, each with a heading and body text. | |
| subjectB | No | Optional second subject for an A/B test (half the audience gets each). | |
| preheader | No | Preview text after the subject. | |
| productId | No | Product id from list_products. | |
| introduction | Yes | Opening paragraph(s). {{first_name}} and other merge tags work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds that nothing is sent (draft-only) and that content is used verbatim with no AI generation or template selection — real behavioral context beyond the annotations. It stops short of noting auth/consent implications or limits on repeated calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler, with the core action front-loaded and the draft-only/no-AI caveats immediately following. Every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with a nested audience object and no output schema, the description covers the essential semantics (draft, no send, no AI). It omits any mention of audience targeting or productId, but those are documented thoroughly in the schema, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 93%, so the schema already documents nearly every parameter, including the rich nested audience filters. The description only lists a handful of content fields (subject, title, introduction, sections, button) and adds no syntax or format detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Saves a new newsletter draft from plain fields") and enumerates the content fields it consumes, so the agent knows exactly what it produces. It also distinguishes its behavior from AI/template-driven siblings ("without AI generation or template selection"), though it never names generate_newsletter explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Nothing is sent" and "without AI generation or template selection" imply this is the tool for author-supplied content versus AI drafting, and that a send step is separate. However, no sibling is named and there is no explicit when-to-use/when-not statement or prerequisite guidance, leaving the alternative-selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_proactive_messageCreate a proactive messageAInspect
Saves a new chat message, pop-up or banner as a draft. Visitors see nothing until publish_proactive_message. write_proactive_message_copy can draft the words.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | What counts as success: { event (a journey trigger name such as page.visited, or null), name (for custom.event), days, stop: stop showing it to people who reached it }. | |
| kind | Yes | ||
| name | Yes | Internal name. | |
| pages | No | Page paths: { include: ["/pricing", "/docs/**"], exclude: [] }. No includes means every page. | |
| content | No | By kind. chat: { text (markdown, at most 300 chars, {{first_name}} works), sender: {type:"agent"} | {type:"member",userId} | {type:"team",name}, display: "bubble"|"messenger", buttons: [{label, action: url|chat|article|dismiss|reply, value}], replyable }. popup: { slides: [{ title, text, button: {label, action, value} | null, media: null }], size: small|medium|large, layout: top|side|background, dismissible }. banner: { text (at most 120 chars), position: top|bottom, style: inline|floating, tone: accent|neutral|warning, cta: { type: none|link|button, label, url }, dismissible }. | |
| trigger | No | Popups and banners only: when it shows. { type: "load" } | { type: "delay", seconds } | { type: "scroll", percent } | { type: "exit" } | { type: "time_on_page", seconds } | { type: "inactivity", seconds } | { type: "click", selector } | { type: "event", name } | { type: "manual" }. | |
| audience | No | Who sees it: { who: all|identified|anonymous|journey ("journey" only when a journey sends it), device: any|desktop|mobile, utm: {source, medium, campaign}, conditions: rules on contact fields }. | |
| priority | No | Higher shows first. | |
| schedule | No | { start, end }: ISO dates or null. | |
| frequency | No | { repeat: once|session|days, days (for "days"), skipIfChatted: skip people who chatted in the last day }. | |
| productId | No | One product, or null for every product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag a non-readonly, non-idempotent, non-destructive mutation, so the safety profile is covered. The description adds crucial context beyond that: it is a draft, visitors see nothing until publish. It omits return shape and any permission limits, but the key behavioral trait 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the draft scoping front-loaded and the sibling pointers following. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter creation tool with no output schema, the description covers purpose, lifecycle (draft vs published) and the copy-drafting alternative, while the rich schema handles the parameter detail. Output/return values are not described, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 91% and the properties already explain content, trigger, audience, goal, frequency and schedule in detail. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Saves a new chat message, pop-up or banner as a draft") and immediately distinguishes the three message kinds. It also implicitly differentiates from publish_proactive_message and write_proactive_message_copy, so an agent can place it in the create/draft slot without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly signals the create-as-draft flow and names two alternatives with their roles: publish_proactive_message to make it visible, write_proactive_message_copy to draft the wording. No explicit when-not-to-use or preconditions, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productCreate a productAInspect
Add a product to the workspace. "hosted" (the default) gives it a HelpWell-hosted help center, widget and knowledge base, set up before this returns; "connected" is for a self-hosted install that connects to HelpWell. Returns the new product id and its setup status.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default hosted. | |
| name | Yes | Product name, as customers see it. | |
| siteUrl | No | The product website, like https://acme.com. Allowed to load the widget. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description adds genuine context beyond them: hosted mode is fully provisioned 'before this returns' (a synchronous, potentially slow side effect) and the call yields a product id plus setup status. It does not mention failure/retry behavior, but retry_product_setup exists as evidence that setup can fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the mode semantics, then the return value. Three sentences, all earning their place. The middle sentence is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must and does say what comes back ('the new product id and its setup status'). Combined with annotations covering safety and a fully documented schema, an agent has what it needs. The absence of explicit failure/retry guidance is the only gap, and retry_product_setup exists as a sibling signal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns a step above by explaining what 'hosted' and 'connected' actually mean operationally, which the schema only hints at with 'Default hosted.' It does not add anything for name or siteUrl, but those are self-documenting in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a product to the workspace') and immediately elaborates on the two creation modes, which is exactly what separates it from get_product/list_products/update_product. An agent can tell 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the hosted-vs-connected distinction, which is effectively a usage decision, but it never states when to reach for create_product versus siblings like update_product or retry_product_setup, nor any preconditions (e.g. whether a workspace can hold multiple products). Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_saved_replyCreate a saved replyAInspect
Save a reply the team can insert in the composer. Use {{first_name}}, {{agent_name}} and {{product}}, with a fallback after a bar: {{first_name | there}}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The reply text, up to 8,000 characters. | |
| tags | No | ||
| title | Yes | Short name, up to 120 characters. | |
| shared | No | Shared with the team (default true), or personal to you. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent write, so the safety profile is covered. The description adds genuinely new operational detail: the supported merge variables ({{first_name}}, {{agent_name}}, {{product}}) and the pipe fallback syntax, which an agent cannot learn from the schema or annotations and which directly affects how the body must be authored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The purpose comes first and the templating rule follows, so the agent gets the most decision-relevant information up front.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter create with annotations covering safety and no output schema, this is adequate but thin: it is silent on the tags and shared parameters beyond the schema, on whether a duplicate title is rejected, and on what the call returns. Nothing an agent strictly needs is missing, but the definition does not go out of its way to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (title, body, and shared are documented; tags is not), so the baseline would be 3. The description goes beyond the schema by specifying the templating grammar that governs valid body content, which the schema only describes as 'the reply text, up to 8,000 characters.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Save a reply') and clarifies the resulting artifact is a team-insertable snippet for the composer. It does not distinguish itself from close siblings like update_saved_reply, render_saved_reply, or delete_saved_reply, so an agent must infer the create-vs-edit boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says what a saved reply is for (composer insertion) but gives no when-to-use guidance, no prerequisites, and never names an alternative such as update_saved_reply for editing or render_saved_reply for previewing. This matches the calibration case of a bare 'update settings' tool, which scored 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_segmentCreate a segmentAInspect
Saves a segment: contacts matching rules on contact fields. Newsletters, journeys and messages can then target it. This action saves the rules without sending messages.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| rules | Yes | Conditions on contact fields. mode "all" or "any"; each rule is { field, operator, value }. Fields: contact.name, contact.email, contact.consent (subscribed | unknown | unsubscribed), contact.email_status, contact.product_id, contact.created_at, contact.last_seen_at, contact.attributes.<field> (tags are contact.attributes.tags), contact.events.<event>. Operators: is, is_not, contains, not_contains, gt, lt, exists, missing, before, after (dates are ISO or now-7d). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read, non-destructive, non-idempotent write. The description adds real behavioral context beyond that: it creates a saved, reusable audience and explicitly does NOT send messages, which is the key side effect an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first defines the artifact and its downstream use, the second delivers the critical no-send caveat. Every clause earns its place and the definition is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description covers purpose and usage but omits what is returned (e.g., a segment id) and what happens on duplicate names, which matters given idempotentHint=false. Adequate but with clear gaps for a creation action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, but the undocumented parameter (`name`) is trivial and self-evident, while the complex `rules` parameter is already exhaustively documented in the schema (fields, operators, mode, date syntax). The description only restates 'rules on contact fields,' adding little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Saves a segment') and clarifies its scope ('contacts matching rules on contact fields'). It differentiates from sending tools with 'saves the rules without sending messages,' though it does not name the closest siblings (list_segments/update_segment).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description explains the segment becomes a targeting audience for newsletters, journeys and messages, which hints at when to create one. It offers no explicit when-not condition or alternative (e.g., update_segment for existing segments, list_segments to inspect).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decide_code_update_batchPublish or discard a whole checkADestructiveInspect
Publish, or discard, every proposal still waiting in one code check. Publishing makes those articles live.
| Name | Required | Description | Default |
|---|---|---|---|
| batchId | Yes | The check id from get_code_updates. | |
| decision | Yes | ||
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is covered structurally. The description adds real value by stating the outcome of publishing ('makes those articles live'), but says nothing about what discarding does to the pending proposals or whether either 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the dual action and scope front-loaded. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with strong annotations and no output schema, the description covers scope, both actions, and the publish consequence. The remaining gap is the discard side-effect, which is minor given destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: batchId and productId are documented in the schema, while the decision enum's semantics are not. The description hints at the two outcomes ('publish, or discard') and the batch scope but adds no syntax or mapping detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verbs (publish/discard) and the precise resource ('every proposal still waiting in one code check'), making the batch scope clear. It does not explicitly name the single-item siblings approve_code_update/discard_code_update, so the differentiation from them is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Every proposal still waiting in one code check' implies when to use this over a single-item decision, but no alternative tool is named and no precondition (e.g. obtain batchId via get_code_updates) is spelled out beyond the schema. Usage is inferable, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
define_fieldDefine a contact fieldBInspect
Create a contact field ahead of its first value, or lock a guessed one to a type, so segments, journeys and personalization treat it right. Keys starting lf_ or icp_ are HelpWell's own.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| field | Yes | The field name: a letter, then letters, numbers or underscores. | |
| label | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose write, non-idempotent, non-destructive, closed-world behavior, so the bar is lower. The description usefully adds the reserved-namespace rule ('lf_'/'icp_' are HelpWell's own), but it says nothing about what happens on a repeat call for a non-idempotent write, whether an existing field name errors, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and immediately followed by the constraint that matters most. Dense but every clause carries information; the first sentence is slightly run-on but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with no output schema and thin schema coverage, the description covers the concept and reserved keys but omits conflict/error behavior and the meaning of the non-idempotent write. Enough to attempt the call, not enough to predict its failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'field' documented), so the description has to compensate. It does add real value for 'field' via the reserved-prefix rule and explains the purpose of 'type' ('so segments, journeys and personalization treat it right'), but 'label' and 'description' remain undocumented and the seven enum values are never characterized.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a contact field') and distinguishes two distinct modes: pre-declaring a field before its first value, and pinning a guessed field to a type. It reads clearly against near-neighbours like list_fields and unlock_field, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two clauses imply when each mode applies ('ahead of its first value', 'lock a guessed one'), which is better than nothing. But there is no explicit contrast with alternatives (update_contact, unlock_field, list_fields) and no stated prerequisite such as an existing guessed field being required for the locking mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_changelog_entryDelete a changelog entryADestructiveInspect
Delete a changelog entry for good. To take one off the public changelog but keep it, set its status to "archived" with update_changelog_entry instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The entry id. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is documented. The description adds genuine context beyond that by stressing permanence ('for good') and routing to the non-destructive archival path, though it does not describe return behavior or confirm irreversibility explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the crucial warning about permanence is front-loaded before the alternative route. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter delete tool with full schema coverage, complete annotations, and no output schema, nothing an agent needs to call it safely and correctly is missing. The destructive semantics and the safer alternative are both stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id, productId) are already documented in the schema, including the cross-reference to list_products. The description adds no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('a changelog entry'), and explicitly clarifies the permanence with 'for good'. It distinguishes itself from the sibling update_changelog_entry by name, so an agent can tell it apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative (update_changelog_entry with status 'archived') and the exact condition that selects it: when you want it off the public changelog but kept. Both the when-to-use and the when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_email_templateDelete an email templateADestructiveInspect
Deletes a saved template. Emails already started from it are not affected. It cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | Template id from list_email_templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent behavior. The description adds useful context beyond that: it confirms the action cannot be undone and specifies that emails already started from the template are not affected. It does not cover permissions or error behavior, but the added side-effect detail is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, perfectly front-loaded with the core action first and side-effect caveats after. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive annotations and fully documented single parameter, the description provides the essential behavioral context an agent needs: it is irreversible and does not cascade to active emails. Missing details like permission requirements or behavior when the template ID is invalid are minor for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single templateId parameter is fully described in the schema, including its source ('list_email_templates'). The description adds no further parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Deletes') and resource ('a saved template'), making the core action unambiguous. It does not differentiate from sibling delete tools (e.g., delete_saved_reply, delete_journey) or connect to the email-template family, so a 5 is not warranted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as update_email_template or list_email_templates. It simply states what the tool does, leaving the agent to infer context and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_external_mailDelete external mailADestructiveInspect
Delete one email from the External tab without blocking its sender.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The id from list_external_mail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the agent knows this is an irreversible-style mutation. The description adds one genuinely useful behavioral detail — that deletion does not block the sender — but says nothing about permissions required, permanence, or side effects on the conversation/history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with the action first and the distinguishing constraint last. There is no filler and nothing that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with rich annotations and no output schema, the description is adequate but thin on the aspects that matter for a destructive operation: whether the deletion is permanent, whether the email can be recovered, and what the agent should expect afterward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single emailId parameter is fully documented in the schema ('The id from list_external_mail'), which even cross-references the sibling listing tool. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and a specific, scoped resource (one email from the External tab). The phrase 'without blocking its sender' implicitly contrasts it with sibling operations like mark_external_mail_spam or list_blocked_senders, though 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'one email' and 'from the External tab' suggest single-item deletion from a specific mailbox view, and 'without blocking its sender' hints at when not to use spam/block flows. There is no explicit statement of when to prefer this over mark_external_mail_spam, move_external_mail_to_inbox, or list_external_mail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_journeyDelete a journeyADestructiveInspect
Deletes a journey: everyone in it exits and what it queued is cancelled. Its history stays, and restore_journey brings it back paused.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the destructiveHint=true annotation by disclosing exactly what is destroyed (enrollees exit, queued sends are cancelled) and what survives (history is retained and can be restored, in a paused state). For a destructive, non-idempotent mutation this is the precise lifecycle context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the destructive effect stated first and the recovery path second. Every clause conveys a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the observable effects, what persists, and how to undo the action, which is everything needed to call this single-parameter destructive tool responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single journeyId parameter is fully documented in the schema ('Journey id from list_journeys'), so the schema carries the load and the description adds nothing about the parameter. Baseline 3 applies when coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Deletes a journey') and immediately scopes what that means operationally, which separates it from siblings like discard_journey_draft, stop_journey_run, pause_journey and restore_journey. An agent can pick this tool without opening any other definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals the reversal path explicitly ('restore_journey brings it back paused'), which gives the agent a clear alternative to consider before deleting. It stops short of stating when deletion is preferred over pause_journey or stop_journey_run, so the choice among the journey-state siblings is still inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_proactive_messageDelete a proactive messageADestructiveInspect
Archives a message: it stops at once and what journeys queued is cancelled. Its stats are kept, but it cannot be brought back.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and non-idempotent, so the safety profile is covered; the description goes further by disclosing the exact semantics — immediate stop, cancellation of queued journeys, stats retained, irreversibility. It also usefully clarifies that 'delete' behaves as an archive, resolving the name/semantics gap. It stops short of stating auth requirements or permission level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the primary effect (it stops at once) is front-loaded before the secondary consequences. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with rich annotations and no output schema, the description supplies the consequences an agent needs to warn a user before calling. The only gap is the absence of a pointer to the non-destructive alternative, which 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required messageId whose description already points to list_proactive_messages. The description adds no additional parameter meaning (no format, no ID prefix, no sourced-from detail), so the baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action on a specific resource: 'Archives a message' plus its consequences ('it stops at once and what journeys queued is cancelled'). An agent immediately understands this terminates a live proactive message rather than editing it. It does not, however, distinguish itself from close siblings such as pause_proactive_message or update_proactive_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys permanence ('cannot be brought back') but never says when to choose this over pause_proactive_message, which is the obvious non-destructive alternative in the sibling list. No prerequisites, no exclusions, no routing guidance — the agent must infer usage from consequences alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_saved_replyDelete a saved replyADestructiveInspect
Delete a saved reply for everyone who could use it. It cannot be restored.
| Name | Required | Description | Default |
|---|---|---|---|
| savedReplyId | Yes | Saved reply id from list_saved_replies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is largely covered. The description adds the shared-scope consequence ("for everyone who could use it") and reversibility ("cannot be restored"), which is useful but closely overlaps the destructiveHint the agent already sees. No mention of auth requirements or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, each earning its place. No hedging or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool whose annotations carry the safety hints, the description supplies the scope and irreversibility an agent needs before calling. An output schema is unnecessary for a delete, and little is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter at 100% schema coverage, and the schema already explains it is the id from list_saved_replies. The description contributes nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (saved reply), making it immediately distinguishable from siblings like delete_email_template or delete_journey. It stops short of naming a sibling or contrasting scope, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for everyone who could use it" implies the operation removes a shared/workspace resource rather than a personal draft, which nudges usage. However, there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as update_saved_reply if the intent is only to modify.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_code_updateDiscard a code updateADestructiveInspect
Discard one proposed article update. Nothing in the knowledge base changes.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The proposal id from get_code_updates. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description earns extra credit by scoping that destruction: 'Nothing in the knowledge base changes' tells the agent the blast radius is limited to the proposal, not published content. It still does not say whether the discarded proposal can be recovered or re-proposed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action front-loaded and the consequence second. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, no-output-schema mutation, the description covers purpose and effect adequately. Missing only recoverability/reversibility detail, which an agent might want before executing a destructive discard.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters already carry source hints ('proposal id from get_code_updates', 'Product id from list_products'). The description adds nothing 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object ('Discard one proposed article update'), which cleanly separates it from approve_code_update, edit_code_update, and decide_code_update_batch among the siblings. The only wrinkle is a terminology drift: the tool name says 'code update' while the description says 'article update', which forces a small inference that these are the same entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'discard' but never made explicit. There is no statement of when to discard versus approving, editing, or batching (approve_code_update, edit_code_update, decide_code_update_batch), and no prerequisites such as needing a valid proposal id from a prior listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_journey_draftDiscard journey changesADestructiveInspect
Drops the unpublished draft of a journey; the live version stays as it is.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds the genuinely useful clarification that destruction is scoped to the draft and "the live version stays as it is", which prevents an agent from over-reading destructiveHint as deleting the journey. It does not say whether the discard is reversible or what happens when no draft exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope constraint in the second clause; 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.
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 whose safety profile is carried by annotations, the description covers what is dropped and what survives. Minor gaps remain around reversibility and the no-draft case, but nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100% ("Journey id from list_journeys"), so the schema fully documents the input. The description adds no format, sourcing, or edge-case detail beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("drops") and resource ("the unpublished draft of a journey"), and immediately bounds the scope so it cannot be confused with delete_journey or restore_journey. An agent can distinguish it from the many journey siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "unpublished draft" – call it when you want to throw away pending edits while keeping the live journey – but no alternative is named (delete_journey, publish_journey, update_journey) and no precondition is stated. 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.
disconnect_resendDisconnect ResendADestructiveInspect
Disconnect the workspace's Resend account. Support and marketing email stop until the person connects a key again in Settings → Email. Domains and settings are kept.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds genuinely useful context beyond that: the functional blast radius (support and marketing email halt) and what is NOT destroyed (domains and settings persist, and how to restore service). No mention of permissions or confirmation requirements, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action stated first, consequences second, and persistence caveat last. Every sentence carries distinct information with no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive toggle with no output schema, the description supplies everything needed: what is affected, what persists, and how the state is reversed. Nothing required to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies; no parameter-level meaning is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Disconnect the workspace's Resend account') with an immediately clarified scope. The line 'Domains and settings are kept' distinguishes it from sibling domain-level tools like remove_mail_domain or list_resend_domains, so an agent can differentiate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The effect ('Support and marketing email stop') implies when an agent should reach for this tool, and the restoration path ('connects a key again in Settings → Email') implies reversibility. However, it never explicitly states when this is preferable to alternatives (e.g. per-domain removal, updating sender identity) or any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismiss_gapDismiss an unanswered questionADestructiveIdempotentInspect
Take an unanswered question off the list without writing an article, when it needs none. reopen_gap brings it back.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The gap id from list_gaps. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, so the safety profile is already covered. The description adds the crucial reversibility context that reopening is possible, which meaningfully softens and explains the destructive hint. It does not say whether the gap is deleted or merely hidden, so it is good but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the action and the distinguishing condition front-loaded before the undo note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool whose annotations already carry the safety flags, the description supplies purpose, selection condition, and reversibility. Only the gap's post-dismissal state (hidden vs. deleted) is left slightly ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both id and productId are documented with their source tools (list_gaps, list_products). The description adds nothing about the parameters, so the schema-passthrough baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action (take an unanswered question off the list) and a decisive qualifier (without writing an article, when it needs none) that separates it from resolve_gap, which presumably produces an article. It also names reopen_gap as the inverse, so an agent can place it precisely in the gap lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection condition: use this when the gap needs no article. The undo path is pointed to explicitly via reopen_gap. It stops short of naming resolve_gap as the alternative for gaps that do need an article, so the routing 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.
dismiss_get_startedDismiss Get startedAIdempotentInspect
Hide the Get started checklist for the whole workspace, or show it again with dismissed false.
| Name | Required | Description | Default |
|---|---|---|---|
| dismissed | No | Default true; false shows it again. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (idempotentHint=true, destructiveHint=false, readOnlyHint=false). The description adds genuinely useful context beyond them: the flag is a reversible toggle and the scope is workspace-wide rather than per-user. It omits what happens to checklist progress on re-show, keeping this at a solid but not rich 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero waste, front-loaded with the primary action and followed immediately by the reversal case. Nothing could be cut without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter workspace toggle with no output schema and annotations already covering safety, this is nearly complete. The only open question is whether re-showing resets or preserves prior checklist progression, which would matter to a caller but is not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented as defaulting true with false re-showing it. The description restates that same semantics rather than adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (hide/show) plus resource (Get started checklist) and scope (whole workspace). The name and description together make it trivially distinguishable from sibling dismiss_* tools, which target gaps, held replies, and training proposals rather than the onboarding checklist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (hide the checklist) and gives the inverse path (dismissed false re-shows it), but names no alternatives, prerequisites, or conditions under which you'd leave it alone. 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.
dismiss_held_replyDismiss a held emailed replyADestructiveInspect
Leave a held emailed reply out of the conversation for good. The note stays, marked dismissed; it cannot be accepted afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | The held message id from get_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partly covered. The description adds genuinely useful behavioral context beyond that: the note is preserved but marked dismissed, and the action is irreversible ('for good', 'cannot be accepted afterwards'). Specifics on what survives versus what is lost are the key value-add.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The permanence consequence is front-loaded in sentence one and the resulting state and irreversibility follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers what happens (dismissal), what state results (note kept, marked dismissed), and irreversibility. A brief note on the return value or permission requirements would fully close the gap, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and messageId is documented as coming from get_conversation, so the schema carries the parameter burden. The description adds no additional semantics about the id, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (dismiss) and resource (held emailed reply), and the phrase 'cannot be accepted afterwards' implicitly distinguishes it from the accept path. It does not name the sibling tool accept_held_reply directly, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (permanently discard a held reply) and hints that accepting is no longer possible, which points at the alternative. However, it never names accept_held_reply or states an explicit condition for choosing dismissal over acceptance, 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.
dismiss_training_proposalDismiss a training proposalADestructiveInspect
Dismiss a pending proposal, with an optional reason kept for the team. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why, up to 500 characters. | |
| proposalId | Yes | The id from list_training_proposals. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is largely covered. The description adds genuinely new context: the reason is persisted and 'kept for the team', and the operation is restricted to admins. It still doesn't say whether dismissal is reversible or what happens to the proposal record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the action and scope, then adds two clauses that each carry information. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, non-idempotent mutation with no output schema and annotations that already cover destructiveness, the description covers purpose, permission, and reason handling adequately. The missing piece is the post-dismissal state of the proposal, which matters given destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both params, giving a baseline of 3. The description adds meaning the schema omits: the reason is optional and is retained for the team to see, which tells the agent the value is user-visible rather than internal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Dismiss) and resource (a pending training proposal) plus the optional reason, which cleanly separates it from the sibling approve_training_proposal by the action taken. It does not name any sibling explicitly, so it stays 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'pending' scopes when the action is legal and 'Admins only' states a hard prerequisite, which is real usage guidance. However, it never contrasts with approve_training_proposal or explains what to do instead if the proposal is not dismissible, so the when-not side is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_article_from_conversationDraft an article from a conversationAInspect
Turn a conversation's latest answer into an article proposal in Training, for review with approve_training_proposal. Nothing is published.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, but not the key fact the description supplies: 'Nothing is published,' so a mutation call is actually a non-publishing proposal. That corrects a plausible wrong assumption about drafting content. It still omits what happens on repeated calls (idempotentHint=false) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the transformation and destination, followed by the review path and the non-publication guarantee. No filler, no repetition of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one fully documented parameter, no output schema, and annotations covering the safety profile, the description supplies what an agent needs: what is produced, where it lands, and how it is reviewed. Missing only edge-case behavior such as duplicate calls or failure when the conversation has no answer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single conversationId parameter, so the schema carries the burden and the baseline is 3. The description adds real semantic value beyond it by specifying that the conversation's latest answer is the source, clarifying which part of a thread is consumed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource pair ('Turn a conversation's latest answer into an article proposal in Training') and explicitly names the destination and the reviewing sibling tool, approve_training_proposal. An agent can distinguish it from create_article, draft_changelog_from_releases, and draft_reply_with_ai 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear workflow context: the output is a proposal in Training meant for review via approve_training_proposal, which tells the agent this is a draft-then-approve flow rather than a direct publish. It does not, however, state when to prefer this over sibling creators such as create_article, nor any prerequisite (e.g., the conversation must contain an answer).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_changelog_from_releasesDraft changelog entries from GitHub releasesAInspect
Turn the newest GitHub releases of the repositories connected with "Use releases for changelog drafts" into draft changelog entries, written by the workspace's model. Only drafts are saved, and a release is drafted once. Publishing is a separate action.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Releases per repository, 1-20. Defaults to 5. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive write. The description adds real behavior beyond that: only drafts are persisted, a release is drafted only once (dedup semantics that explain the idempotentHint=false), and publishing is a distinct action. It stops short of stating auth or configuration prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by the save/dedup constraint and the publishing boundary. No filler and every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with full schema coverage, annotations, and no output schema, the description covers purpose, persistence behavior, dedup, and workflow boundary. It does not mention what the draft output looks like or any prerequisite configuration, a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the limit range and default. The description's 'newest ... releases' loosely corroborates the limit's ordering but adds no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific transformation (GitHub releases -> draft changelog entries) with the exact mechanism (workspace model) and input scope (repositories connected with 'Use releases for changelog drafts'). An agent can tell this apart from create_changelog_entry (manual entry) and draft_article_from_conversation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for when this applies: drafting from releases of connected repositories, with an explicit boundary that 'Publishing is a separate action' so the agent knows to look elsewhere to publish. It does not name a sibling alternative (e.g. create_changelog_entry) for the manual case, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_reply_with_aiWrite a reply with AIAInspect
Use the workspace's AI model to draft the next reply, answer only from the help articles, summarise the conversation as a note, or rework a text (shorter, friendlier, formal, fix spelling, translate). It returns text and sends nothing; it spends the workspace's AI budget.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | The text to rework, for the rewrite actions and translate. | |
| action | Yes | What to write. | |
| prompt | No | An instruction for a draft, e.g. "say refunds are on". | |
| language | No | For translate: the language. Default: the customer's language. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is partly covered. The description adds valuable behavioral context: it returns text and sends nothing, and it consumes the workspace's AI budget, which is a non-obvious side effect. It does not describe rate limits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that packs many actions but wastes no words. The list of rework actions is dense but necessary for understanding the full scope; structure could be improved with bullets but is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, an enum, no output schema, and annotations covering safety, the description is nearly complete. It explains the tool's output ('returns text'), its non-sending nature, and the AI budget cost, but could clarify that the returned text is a draft to be sent by another tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents all five parameters. The description adds semantic meaning to the action enum by explaining each mode (e.g., 'answer only from the help articles', 'rework a text (shorter, friendlier, formal, fix spelling, translate)'), which goes beyond the bare enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: use the workspace's AI model to draft, answer, summarise, or rework. It distinguishes itself from sending tools by stating 'sends nothing', so an agent can tell it apart from reply_to_conversation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use it (to generate AI text without sending) and notes the AI budget cost, but does not explicitly name alternatives like reply_to_conversation or save_reply_draft or state when not to use it. The implied usage is clear but lacks explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_code_updateEdit a code updateBInspect
Keep an edited version of a proposed article update without publishing it yet.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | The proposal id from get_code_updates. | |
| proposed | Yes | The whole article file, front matter included. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-readonly, non-destructive, non-idempotent write with no open-world access. The description usefully adds that the edit is held and not published, which annotations do not convey. However, it omits whether the saved version replaces the prior proposal, whether the edit can be revised again, and why the operation is non-idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the non-publishing constraint is placed at the end as a qualifier. It is efficient, though the key state-changing verb is slightly buried behind 'keep an edited version'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-parameter write tool with full schema coverage, partial annotations, and no output schema, the description is minimally viable. It conveys the held-not-published behavior but leaves the workflow around approval, discarding, and re-editing unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains itemId (proposal id from get_code_updates), proposed (whole article file including front matter), and productId. The description adds no parameter-level detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action (keep an edited version of a proposed article update) on a specific resource, and clarifies it does not publish. It is clear enough to act on, but it never distinguishes itself from close siblings such as approve_code_update, discard_code_update, or decide_code_update_batch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. The only contextual clue is the trailing 'without publishing it yet', which hints that publishing is a separate step but never points to the tool that performs it or explains when to edit versus approve or discard a proposal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enrol_in_journeyAdd a contact to a journeyBDestructiveInspect
Adds one contact to a live journey now, as the inbox’s Add does; its steps, emails included, then run for them.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| contactId | Yes | Contact id from search_contacts. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds the concrete consequence the agent needs: the journey's steps, emails included, run for the contact immediately. That explains why the operation is destructive and irreversible in a way the hints alone do not. It still omits what happens for paused/draft journeys or on re-enrollment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the side effect is stated before the reader can stop. The second clause ('its steps, emails included, then run for them') is slightly telegraphic but still earns its place by implying the email blast.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter destructive action with no output schema, the description covers the core action and consequence. It leaves open error/edge behavior (paused or draft journeys, duplicate enrollment, what is returned), which an agent would need before confidently calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries its own description, including the non-obvious confirm gate. The description adds nothing about individual parameters beyond the word 'one' implying contactId is singular. Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Adds one contact to a live journey now.' The qualifier 'live' implicitly separates it from test/draft journey tools and 'one contact' fixes cardinality. It stops short of naming a sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative tool is named. 'Now, as the inbox's Add does' hints at immediacy but gives the agent nothing to route on versus test_journey, publish_journey, or list_journey_people.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_journeyWrite a journey with AIAInspect
Has the workspace's AI write one follow-up email from a brief and builds a draft journey that sends it a while after a trigger. Both stay drafts for review. Needs the AI set up in Settings → AI.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | What the email says and why. | |
| ctaUrl | Yes | Where the email’s button links. | |
| trigger | Yes | ||
| productId | No | Product id from list_products. | |
| delayMinutes | No | How long after the trigger (default 1440, a day). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not destructive, not idempotent). The description adds meaningful behavioral context beyond that: both artifacts 'stay drafts for review' (so nothing is sent), and AI must be configured first. Return format is not covered, but the key behavioral facts are.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then draft status, then prerequisite. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the essential behaviors (AI-generated, draft-only, trigger-delayed, AI prerequisite). It does not address ctaUrl or productId, but for a 5-param tool with 80% schema coverage this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema carries most parameter meaning and baseline would be 3. The description adds the timing semantics ('sends it a while after a trigger'), reinforcing the delayMinutes/trigger relationship and the brief's role, going slightly beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (write, build) and resources (follow-up email, draft journey) with the AI-generation angle made explicit. This clearly distinguishes it from create_journey, create_journey_from_recipe, and draft_reply_with_ai without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite ('Needs the AI set up in Settings → AI'), which is useful context, but never states when to pick this over the sibling manual/recipe builders. Usage is implied rather than contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_newsletterWrite a newsletter with AIAInspect
Has the workspace's AI model write a newsletter from a brief (using only the facts in it) and saves it as a draft to review. Nothing is sent. Needs the AI set up in Settings → AI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Internal name for the draft. | |
| brief | Yes | What to say, with every fact to include. | |
| ctaUrl | Yes | Where the button links. | |
| format | No | blocks (editable, the default) or a designed HTML body. | |
| layout | No | ||
| audience | No | Who it goes to: contacts in ANY (match "any") or ALL (match "all") of the included segments, tags and filters, minus the excluded ones. Nothing included means every contact of the product. Consent and suppressions are always applied on top. | |
| productId | No | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description still adds real behavioural context: output is grounded only in facts in the brief, the result is a non-sending draft, and AI must be configured first. It stops short of saying what a repeated call produces (new draft each time, consistent with idempotentHint=false) or whether the draft is retrievable afterwards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what happens, immediately followed by the two constraints that matter most (nothing sent; AI prerequisite). Zero padding or restated boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with a deep nested audience object and no output schema, the description covers the essential mental model: AI writes from a brief, result is an editable draft, nothing is delivered. What is missing is any hint of the return value (e.g. draft id) and the audience-targeting dimension, which the schema carries alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents brief, ctaUrl, format, layout, audience and productId. The description reinforces the 'brief' semantics ('using only the facts in it') and the draft nature, but adds nothing for the nested audience object or the enum options, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('has the workspace's AI model write a newsletter from a brief') plus the persistence outcome ('saves it as a draft'). It is clearly distinguishable from siblings like create_newsletter or update_newsletter by being AI-generated rather than manually authored, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a prerequisite ('Needs the AI set up in Settings → AI') and an outcome constraint ('Nothing is sent'), which frames the intended workflow: produce a draft for human review. However, it never says when to choose this over create_newsletter / write manually, nor what to do next (preview, schedule, update) once the draft exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activityGet recent activityBRead-onlyIdempotentInspect
Reports → Activity: recent email deliveries (status, recipient, errors), automation runs and the latest workspace changes from the audit log.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 25, at most 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds value by disclosing that the result aggregates three distinct sources, but says nothing about ordering, pagination behavior, or freshness beyond 'recent', which are relevant for a feed-style read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the resource path and content list are immediately scannable. Slightly dense with parenthetical detail but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-optional-parameter aggregator with no output schema and fully covered annotations, the description conveys enough to call it correctly and anticipate the kind of data returned. Missing only ordering/recency-window details that an agent might reasonably want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (limit), and the schema description already states the default (25) and maximum (100) at 100% coverage. The description adds no additional meaning about how limit affects the aggregation across the three sources, so the baseline of 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (Reports → Activity) and enumerates the three content types it surfaces: email deliveries, automation runs, and audit-log workspace changes. It is clear what the tool returns, though it does not explicitly differentiate itself from close siblings like get_audit_log or get_reports, which overlap with the 'latest workspace changes' portion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives (e.g., get_audit_log for a deeper audit trail or get_reports for aggregate metrics). The agent must infer from the content list that this is a general recent-activity overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentGet the AI agent settingsARead-onlyIdempotentInspect
The AI agent's name, tone, extra instructions, handoff threshold (answers scoring under it go to a person), what happens to low-confidence answers, and which tools it may use. Also last week's answers by confidence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description earns extra credit by disclosing the return payload (including the time-scoped 'last week's answers by confidence') that exists nowhere else since there is no output schema. It still omits auth requirements and response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences listing exactly what is returned with a clarifying parenthetical for the handoff threshold. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema getter, the description covers most of what an agent needs by enumerating returned fields. It stops short of noting scope boundaries relative to get_ai_settings or the shape/limit of the weekly answer statistics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. No parameter guidance is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely enumerates what the tool returns – agent name, tone, instructions, handoff threshold, low-confidence handling, allowed tools, plus last week's answer stats – so an agent knows exactly what resource it retrieves. However, it never states purpose with a verb or distinguishes itself from the adjacent get_ai_settings/update_agent siblings, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite, and no mention of alternatives. Given siblings like get_ai_settings and update_agent, the reader gets no help deciding which to call for agent configuration vs. global AI settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_settingsGet AI settingsARead-onlyIdempotentInspect
Whether the workspace's OpenRouter key is connected (never the key), the model, the monthly spending cap, the daily training proposal cap and this month's usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety bar is met structurally. The description adds a genuinely useful behavioral fact beyond them: the OpenRouter key itself is never returned, only its connection status — important for an agent reasoning about secrets. It stops short of noting auth/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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler; every listed field earns its place. It reads as a fragment rather than a full clause, which slightly hurts front-loading clarity, but the density is appropriate for a trivial read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned values, and annotations cover the safety profile. What remains missing is any statement of permissions or whether an unconnected key yields a partial result, but for a zero-arg settings read this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly avoids inventing parameter behavior for a zero-arg call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what is read back — key connection status, model, monthly spending cap, daily training proposal cap, current usage — which pins down the resource and scope (workspace AI configuration). It is a verbless fragment, so it never explicitly says 'retrieves', but the field list makes the purpose unambiguous and separates it from the mutating sibling update_ai_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite, and no mention of the obvious alternative (update_ai_settings) or related reads like list_ai_models or get_training_overview. The agent must infer the call context 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.
get_app_screenshotsRead app screenshotsCRead-onlyIdempotentInspect
The screenshots HelpWell takes of the product's app for its articles: the app's address, each page and when it was last taken.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds that results include the app address, per-page entries, and last-taken timestamps, which is useful context, but it says nothing about empty states (no captures yet), pagination/size of the page list, or whether image data is returned — the questions an agent would actually have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler, front-loaded with the resource and followed by the fields returned. It loses a point because the colon-list construction never resolves into a complete clause, which makes the intent slightly harder to parse than a plain 'Returns …' phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, full schema coverage, and complete annotations, the definition is nearly adequate. Because there is no output schema, however, the description carries the whole burden of explaining returns, and it leaves the key question unresolved: whether this yields actual screenshot assets or just metadata about them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, and the schema already points to list_products as the source of productId. The description's phrase 'the product's app' is consistent with that scoping but adds no syntax, format, or lookup 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The text names the resource (screenshots HelpWell captures of the product's app for articles) and enumerates indicative fields, but it is a verbless noun phrase — it never says 'returns' or 'lists', so it reads like a return-value note rather than a statement of what the tool does. It also fails to distinguish this read from the closely named siblings retake_app_screenshots and update_app_screenshots, and leaves ambiguous whether image binaries or only metadata/URLs come back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given and no alternative is named. An agent must infer that this reads existing captures while retake_app_screenshots regenerates them and update_app_screenshots edits them, purely from those sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_logRead the audit logARead-onlyIdempotentInspect
Who changed what in the workspace, newest first, 50 at a time. Filter by teammate, action or dates; pass nextBefore from a reply to read older entries.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD. | |
| from | No | YYYY-MM-DD. | |
| actor | No | Teammate id. | |
| action | No | Action id, like settings.updated. | |
| before | No | nextBefore from the previous page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, non-open-world behavior, so the bar is lower. The description still adds real behavior beyond them: newest-first ordering, a fixed 50-item page, and the cursor-paging contract via nextBefore.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what the log contains and how results are ordered, then filter and paging mechanics. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the ordering, page size, filter dimensions, and cursor source are all disclosed; annotations carry the safety profile. Nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only loosely maps fields to filters ('teammate' → actor, 'action', 'dates' → from/to) and adds the minor fact that nextBefore originates from a reply, but no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Who changed what in the workspace' with ordering ('newest first') and page size. It's clearly the audit-log reader, distinct from the similarly named get_activity, though it never names a sibling to explicitly delimit the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent how to narrow results ('filter by teammate, action or dates') and the exact way to page backwards ('pass nextBefore from a reply'). It gives clear operational context but no when-not-to-use or alternative-tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_statusGet billing statusARead-onlyIdempotentInspect
The workspace's plan and its state (trial, active, past due), the trial end, seats and marketing contacts used and included, and usage. Read only: billing is managed in the app (settings_link page "billing").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful operational context that billing changes happen outside this tool via settings_link. Beyond that it discloses no rate limits, auth requirements, or freshness behavior, and 'Read only' restates the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first front-loads the returnable data, the second carries the read-only/routing constraint. It is dense but every clause earns its place, with no filler or redundant restatement of the title. Slightly list-heavy, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly enumerates the key returned fields (plan, state, trial end, seat/contact counts, usage), which an agent needs. With rich annotations, zero params, and a routing note for mutations, the definition is nearly complete; only edge behaviors (e.g., what happens with no active plan) are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters (empty schema, 100% coverage), so there is nothing for the description to disambiguate. Per the baseline for a 0-parameter tool, a 4 is appropriate; no parameter-level gaps exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the resource and the exact contents returned: plan and state (trial, active, past due), trial end, seats and marketing contacts used/included, and usage. Combined with the title's 'Get billing status', the purpose is unmistakable and distinct from near-neighbors like get_setup_status or get_reports. It stops short of an explicit verb-led scope statement, but the content list pins it down well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use context ('Read only') and routes the agent away from mutation by naming settings_link page "billing" as where billing is managed. That is an explicit when-not-to-use signal with an alternative. It does not, however, say when to reach for this vs. other status/summary tools, 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.
get_brandGet the brand kitBRead-onlyIdempotentInspect
The workspace's brand kit: website, icon, logos, colours, fonts, button style, footer links and note, sign-off and email width. It brands email, every hosted help center and the widget.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds genuine value by disclosing the brand's blast radius — it applies to email, every hosted help center and the widget — which tells the agent this is workspace-wide state. It stops there, giving no information about size/permissions or how the brand is resolved per surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource so the agent knows what it is immediately, and the second sentence covers the one genuinely useful fact (cross-surface scope). The long field enumeration in sentence one is dense but earns its place since there is no output schema describing the return shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing what comes back, and it does so by enumerating the brand-kit fields an agent would receive. It is nearly complete for a parameterless read-only getter; only minor gaps (e.g., whether nested assets/links are returned, default values) remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description cannot add parameter meaning that doesn't exist, and it correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (the workspace's brand kit) and enumerates exactly what it contains — website, icon, logos, colours, fonts, button style, footer links/note, sign-off, email width — which is a very concrete picture of the resource. It never states the verb 'retrieve', relying on the name/title for that, and it does not explicitly differentiate itself from near-neighbours like get_workspace_settings or get_help_center_settings, though 'It brands email, every hosted help center and the widget' does clarify its cross-surface scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing tells the agent to call this before update_brand, before import_brand_from_website, or when rendering branded email/help-center output. The closing sentence describes scope of effect but not the conditions that select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_code_updatesRead code updatesBRead-onlyIdempotentInspect
Knowledge base → Code updates for a hosted product: who writes the updates, whether they publish by themselves, each repository, and the latest checks with the article updates waiting for review. Pass batchId to read one check's proposals in full.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many checks, 1-50. Defaults to 10. | |
| batchId | No | One check, with each proposal in full. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful behavior context — that batchId switches from a per-check summary to full proposals, and that the default view surfaces only article updates awaiting review — but says nothing about pagination, result ordering, or the shape of the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the domain context and following with the batchId drill-down instruction; little wasted text. The 'Knowledge base → Code updates' arrow notation is slightly cryptic but compact, and the first sentence is dense with an embedded list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the heavy lifting of telling the agent what the response contains (writers, publishing mode, repositories, latest checks, pending article updates), which is the key gap a read tool leaves. It is still thin on pagination/limit interaction and how productId scopes the result, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents productId, limit, and batchId, making 3 the baseline. The description only elaborates on batchId (matching the schema's own wording) and says nothing about productId or the meaning of limit beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the domain object well (code updates for a hosted product: writers, self-publishing, repositories, checks awaiting review), so the resource is identifiable, but it never states a clean action verb — it reads more like an output summary than 'retrieve/list code updates'. It also does not explicitly contrast itself with the mutate/sibling tools (edit_code_update, approve_code_update, discard_code_update).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass batchId to read one check's proposals in full' gives one concrete conditional usage hint for expanding a check. Beyond that there is no when-to-use guidance: no statement that this is the read entry point for a product, no mention of when to reach for it versus list_products or the edit/approve siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consent_settingsGet consent settingsARead-onlyIdempotentInspect
The workspace consent model (opt-in or opt-out) and which signup sources count as opted in. Read it before setting or explaining anyone’s marketing consent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds value beyond that by disclosing the semantic content of the response (which consent model applies, which signup sources are treated as opted in) and positioning it as a prerequisite read, though it says nothing about auth requirements or freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The substantive content (what is returned) comes first and the usage directive second, so an agent gets the essential facts immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what comes back, and it does: the consent model value plus the signup-source interpretation. Combined with the annotations, an agent has everything needed to call this zero-param read correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty with additionalProperties=false, so there is nothing for the description to disambiguate. The baseline of 4 applies; no parameter-level detail is missing because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource and its contents: the workspace consent model (opt-in vs opt-out) and which signup sources count as opted in. That is specific enough to distinguish it from update_consent_settings and set_contact_consent, though the verb is only implied via 'Read it' rather than stated as the tool's action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit precondition: read this before setting or explaining anyone's marketing consent, which effectively routes the agent away from the mutating consent siblings. It stops short of naming those siblings or stating when-not to call it, so it is clear context rather than 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.
get_contactGet a contactARead-onlyIdempotentInspect
One contact's profile: consent and where it came from, tags, typed fields, recent events, conversations, journeys they are in and Stripe subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact id from search_contacts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value on top by disclosing the breadth of the payload (consent and provenance, tags, typed fields, events, conversations, journeys, Stripe subscriptions), warning the agent that the response is rich and potentially large. It stops short of mentioning permissions, rate limits, or behavior for unknown ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the identity of the resource and then a compact colon-style list of what is returned. Every listed item conveys something an agent could not infer from the name, so nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of previewing the return value, and it does so by enumerating the included sections. Combined with annotations covering the safety profile, this is nearly complete; the only gap is undefined behavior for a missing or invalid contactId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single contactId parameter is already documented with its source (search_contacts). The description adds no syntax, format, or id-provenance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ("One contact's profile") and enumerates the profile's constituent data, so an agent knows this is a single-contact detail fetch rather than a list. It does not explicitly contrast with the closely named sibling get_contact_panel or with search_contacts, so the differentiation is implied 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no exclusion, and no named alternative in the description. The only routing signal lives in the input schema ("Contact id from search_contacts"), which the description itself never references, so an agent must infer that this is the follow-up call after a search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_panelGet the contact panel layoutBRead-onlyIdempotentInspect
Settings → Contact panel: which sections show beside a conversation, the pinned contact fields and header badges, and the fields contacts have that can be pinned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond that (no auth requirements, no rate limits, no note that it is a pure read with no side effects). With annotations carrying the burden, the description is adequate but adds little.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the settings location and then the three concrete data groups. It is efficient, though the comma-separated list structure is slightly loose and the sentence has no explicit verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden, and it does so by enumerating the layout's three components (sections, pinned fields/badges, pinnable fields). This is reasonably complete for a zero-parameter read tool, though it stops short of describing the shape of the returned data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the 0-param baseline of 4 applies. The description cannot add parameter meaning because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name/title give the verb+resource ('Get the contact panel layout') and the description enumerates the concrete contents (visible sections, pinned fields and header badges, pinnable contact fields). It is clear what the tool returns, but it never distinguishes itself from the sibling update_contact_panel, so an agent gets no sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and the write counterpart update_contact_panel is not referenced. The 'Settings → Contact panel' prefix only hints at where this configuration lives in the UI, not when an agent should call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationRead a conversationARead-onlyIdempotentInspect
One conversation: its status, assignee and tags, the messages (customer, AI, teammate replies, internal notes and events, newest last), the contact, their other recent conversations and your unsent draft. Messages marked held are emailed replies waiting for accept_held_reply or dismiss_held_reply. Opening it marks its notifications read, as in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many of the latest messages (default 50). | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds a genuinely important side effect the annotations miss: 'Opening it marks its notifications read, as in the app.' It also documents message ordering (newest last), the composition of the message list, and held-reply semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the returned contents before the held-reply note and the read-marker side effect. Slightly run-on, but nearly every clause carries factual weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the burden of describing the return payload, and it also discloses the notification-read side effect and the held-message workflow, leaving nothing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (limit default 50, max 200; conversationId) are fully documented in the schema. The description adds no parameter-level detail such as how limit interacts with the returned message list, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what a single conversation read returns (status, assignee, tags, messages, contact, related conversations, draft), making the resource singular and distinct from the plural list_conversations sibling. It lacks an explicit verb phrase but the title and content make the read purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: no statement of when to prefer this over list_conversations, get_contact, or read_agent_conversation. The one routing hint ('Messages marked held ... waiting for accept_held_reply or dismiss_held_reply') covers only a narrow special case rather than general selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_setupGet the email setupARead-onlyIdempotentInspect
Settings → Email: whether Resend is connected, each sending and receiving domain with its status and DNS records, the sender identity and addresses, what is ready to send, the test results, the support inbox forwarding, reputation thresholds and blocked senders.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds scope detail (what states and sub-resources are reported, including the connected/not-connected Resend state) but says nothing about freshness, auth, or behavior when email is not configured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no filler and the scope anchor ('Settings → Email') is front-loaded, but the backend is a long comma-chained noun list of roughly ten items that would read far better as a short structured enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the full burden of describing the return payload, and it does so comprehensively — domains, DNS records, sender identity, readiness, test results, forwarding, thresholds, blocked senders. It only omits how this aggregate relates to the individual sibling getters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. No misleading parameter claims are present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (email setup under Settings → Email) and enumerates its contents, so an agent can tell it is an aggregate snapshot rather than a single-purpose lookup. It does not, however, distinguish itself from close siblings such as get_send_settings, list_resend_domains, or get_setup_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use statement and no alternatives are named. The enumeration of covered areas implicitly signals 'use this for the whole email picture,' which is adequate but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_email_templateGet an email templateBRead-onlyIdempotentInspect
One template with its email document, on the workspace's brand.
| Name | Required | Description | Default |
|---|---|---|---|
| templateId | Yes | Template id from list_email_templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds content context ('with its email document, on the workspace's brand'), which hints at what is returned but discloses no behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single terse clause with no wasted words, and the key content detail is front-loaded. The sentence fragment lacks a verb, but it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries some burden for describing returns; it partially does so by noting the email document and brand context. For a simple one-parameter read tool this is adequate but does not fully describe the returned payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single templateId parameter is documented as coming from list_email_templates. The description adds nothing to 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('One template with its email document') and adds what a single fetch returns, distinguishing it from the plural list_email_templates. It does not explicitly name siblings, but the singular framing makes the get-vs-list distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_email_templates or use_email_template. The agent must infer usage entirely from the name and required templateId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_enrichment_settingsGet enrichment settingsARead-onlyIdempotentInspect
LeadFuze enrichment: whether it is on, the monthly lookup cap and usage, the fields it saves, the ICP score rules, and each form with its double opt-in and enrichment switches. Lookups happen only for confirmed HelpWell form signups.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by disclosing the content of the settings payload and the operational constraint that lookups only occur for confirmed HelpWell form signups, which is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the enumeration of returned settings and closed with the scoping constraint. The list is long but each item corresponds to a real part of the settings object, so it earns its place; only slight trimming would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the return-value burden, and it does so by enumerating the settings components. Combined with annotations covering safety and the absence of parameters, an agent has enough to call this correctly; only the lack of usage routing keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly avoids inventing inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (LeadFuze enrichment settings) and enumerates exactly what is returned: on/off state, monthly lookup cap and usage, saved fields, ICP score rules, and per-form double opt-in and enrichment switches. That is far more than a restatement of the name. It stops short of naming a sibling, but the read-vs-write split against update_enrichment_settings is unambiguous from the names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The closing sentence about lookups applying only to confirmed HelpWell form signups is a behavioral constraint, not a routing rule, so an agent still has to infer that this is the settings-read counterpart to update_enrichment_settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_help_center_settingsRead help center and widget settingsARead-onlyIdempotentInspect
A hosted product's help center, widget and changelog settings, with its support email, time zone and language. The dotted paths in it are what update_help_center_setting takes, e.g. widget.appearance.accent.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds genuine value by disclosing the return shape is dotted-path keyed (e.g. widget.appearance.accent), which tells the agent how to consume the output. It stops short of describing nesting depth or completeness of the settings tree.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the resource enumeration comes first and the cross-tool path hint follows. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must sketch the return contents, and it does so by listing the settings groups and explaining the dotted-path key convention. That is sufficient for an agent to call and parse it, though it could note whether all groups are always present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (productId) and schema coverage is 100%, with the schema stating it comes from list_products. The description adds nothing about the parameter, so the baseline 3 applies since the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resources returned – help center, widget and changelog settings plus support email, time zone and language for a hosted product – which scopes it clearly against siblings like get_workspace_settings or get_widget_install. It doesn't use an explicit read verb, relying on the name, but the resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It links itself to update_help_center_setting by noting the dotted paths it returns are exactly what that tool consumes, which is useful directional guidance. However, it never states when to call this versus other settings readers, nor any prerequisites or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journeyGet a journeyARead-onlyIdempotentInspect
One journey: its live definition, the unpublished draft being edited, versions, people at each step, and the problems that stop it going live.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real value beyond that by disclosing the returned payload shape - live definition vs unpublished draft, versions, per-step people, and 'problems that stop it going live' - which is content-level context the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and then itemizes contents; no filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of summarizing the return payload, and it covers it well for a single-item read. Minor gaps remain: no mention of error/not-found behavior or what happens with a stale/deleted draft.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents itself as 'Journey id from list_journeys.' The description adds nothing about the parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (one journey) and enumerates exactly what the agent gets back: live definition, draft, versions, people per step, and blockers. This is clear and specific, though it never explicitly contrasts itself with list_journeys or get_journey_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: no prerequisites, no exclusions, and no alternative named (e.g., use list_journeys to find an id, use get_journey_run for execution data). Usage is only weakly implied by the singular 'One journey'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journey_performanceGet journey performanceBRead-onlyIdempotentInspect
A journey’s results over a period: entries, emails and their opens and clicks, goal conversions and split test paths.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | 30, 90 or "all" (default 30). | |
| touch | No | Credit a conversion to the first or last email. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-open-world, so the safety profile is fully covered. The description's contribution is scoping the payload to aggregate performance results rather than raw run data; it says nothing about permissions, data freshness, or aggregation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the metric list front-loaded and zero filler. It is a noun-phrase fragment rather than a full statement of action, which is a minor structural weakness but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the metric families returned, which is exactly the gap it needs to fill. Missing usage routing is a modest gap for a read-only reporting tool whose annotations already convey safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with days ('30, 90 or "all"'), touch enum, and the journeyId cross-reference to list_journeys all documented in the schema. The description adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (a journey) and enumerates the specific metrics returned — entries, email opens/clicks, goal conversions, split test paths — which distinguishes it from config-oriented siblings like get_journey and run-oriented ones like get_journey_run. It lacks an explicit verb, but the content scope makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus get_journey, get_journey_run, or list_journey_runs, nor any prerequisite or exclusion. 'Over a period' hints at a reporting context but leaves the agent to infer selection 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_journey_runGet one journey runBRead-onlyIdempotentInspect
One person's path through a journey: each step, what happened and when.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Run id from list_journey_runs or get_contact. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds a sketch of the returned content ('each step, what happened and when'), which is useful given no output schema, but says nothing about missing-run behavior, size limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single zero-waste sentence that front-loads the core concept. It is slightly indirect and fragmentary, but nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full annotation coverage, the definition is minimally adequate. However, with no output schema the description is the only source of return-value information, and 'each step, what happened and when' is too thin to tell an agent what a step record actually contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single runId parameter is fully documented in the schema (including its source: list_journey_runs or get_contact). The description adds no parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the resource well: a journey run is 'one person's path through a journey' with 'each step, what happened and when.' That is a clear depiction of what the tool returns, though the verb is only implied by the name and it never distinguishes itself from siblings like list_journey_runs or list_journey_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_journey_runs (which is where the required runId comes from, per the schema). The description alone gives the agent no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newsletterGet a newsletterARead-onlyIdempotentInspect
One newsletter with its full email document: subject, preheader, title, introduction, sections, button, signoff, and the editor blocks (content) or HTML body.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond them by disclosing what the response body contains, including that content may come as editor blocks or an HTML body — useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and then the returned payload. The field enumeration is dense but earns its place because no output schema exists to carry that information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-resource read with full parameter coverage and read-only annotations, the main gap is the absence of an output schema — and the description compensates by describing the returned document structure. It does not cover not-found/error behavior, but little else is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100% (the schema itself notes the id comes from list_newsletters). The description adds no further meaning about the identifier, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('One newsletter') and then enumerates the exact document fields returned (subject, preheader, sections, button, signoff, editor blocks/HTML body), which is unusually precise. It does not explicitly name list_newsletters or get_newsletter_results as its alternatives, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: fetch the complete document for a single newsletter, in contrast to list_newsletters which only enumerates them. The description never states when to prefer this over check_newsletter, preview_newsletter, or get_newsletter_results, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newsletter_resultsGet newsletter resultsARead-onlyIdempotentInspect
Results of a sent newsletter or journey email: delivery, opens, clicks, bounces, complaints, unsubscribes, clicks by link, A/B subject results and email survey (CSAT/NPS) responses.
| Name | Required | Description | Default |
|---|---|---|---|
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description goes further by disclosing exactly what the response contains — a specific metric inventory including per-link clicks and survey responses — which is meaningful behavioral context an agent can act on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly packed sentence with the resource stated first and the metric list following. No filler, no redundancy, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value disclosure and does so well by enumerating the metric categories. It stops short of covering time-window behavior, data freshness, or result granularity, which are the remaining gaps for a reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single campaignId parameter is already documented ('Newsletter id from list_newsletters'), giving a baseline of 3. The description adds a small nuance by implying the id can also reference a journey email, which the schema text does not state, but no format or lookup guidance is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource — results/metrics for a sent newsletter or journey email — and enumerates the exact metric set (delivery, opens, clicks, bounces, complaints, unsubscribes, link clicks, A/B subject results, CSAT/NPS). It distinguishes itself from get_newsletter (config) and get_journey_performance by being the per-send results reader, 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.
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 prerequisites (e.g. the newsletter must have been sent), and no routing to alternatives like get_newsletter, check_newsletter, or get_journey_performance. The scope hint ('sent newsletter or journey email') is descriptive of the data, not a usage instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notification_preferencesGet notification preferencesARead-onlyIdempotentInspect
The signed-in person's notification preferences (which kinds reach them in the app, by push, email or Slack, working hours and the digest), whether they differ from the team defaults, and the team defaults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine value by disclosing the return payload shape — that it includes both the personal preferences, a comparison against team defaults, and the team defaults — which annotations do not convey. It does not mention the voice of the response (JSON shape, formatting) or error 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical enumeration of channels and digest is dense but directly useful. Slightly long, but every clause carries information about what is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema and a fully-covered annotation set, the description is close to sufficient: it tells the agent exactly what data comes back, including the team-defaults comparison that no structured field expresses. Only response format/error behavior is unstated, a minor gap for a zero-argument read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly adds nothing about inputs because there are none, and instead spends its words on the result set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the signed-in person's notification preferences) and enumerates the scope: app/push/email/Slack channels, working hours, the digest, the diff against team defaults, and the team defaults themselves. There is no explicit verb, so the agent relies on the `get_` prefix for the read semantics. It is clear on its own but does not name or contrast with siblings such as update_my_notification_preferences or update_team_notification_defaults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the read-only name and the enumerated return content; there is no explicit statement of when to call this versus update_my_notification_preferences, reset_my_notification_preferences, or list_notifications. No exclusions or prerequisites (e.g., auth requirements) are given. The agent can infer it is the read counterpart to the update tools, which is the minimum viable level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proactive_messageGet a proactive messageARead-onlyIdempotentInspect
One message with its full definition (content, audience, pages, trigger, frequency, schedule, goal), what stops it going live, and its stats.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent, read-only operation, so the safety profile is covered. The description adds value beyond that by disclosing the return content, including 'what stops it going live' (blocking conditions) and stats, which matters because there is no output schema. It stops short of naming the exact blocking fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the resource and then enumerates the contents. It is dense with parenthetical lists but every element earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-resource fetch with no output schema, the description carries the burden of describing the return payload and does so by naming the definition fields plus stats and blockers. Nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single messageId parameter is documented in the schema with a cross-reference to list_proactive_messages. The description adds no format or syntax detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (a proactive message) and enumerates the returned facets (content, audience, pages, trigger, frequency, schedule, goal). It is clearly a single-resource fetch, though it does not explicitly distinguish itself from the sibling get_proactive_message_report, whose domain overlaps with the 'stats' it promises.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The only routing signal is implicit: the schema's messageId description points to list_proactive_messages, implying the fetch flow starts from a listing. Adequate but reliant on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proactive_message_reportGet a proactive message reportBRead-onlyIdempotentInspect
A message’s last 30 days by day: shown, seen, clicked, replied, dismissed, and goal conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and repeat-safety profile is fully covered. The description adds real value by disclosing the 30-day lookback and the per-day breakdown, but says nothing about whether results are cached, per-segment, or how missing days 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with no filler, front-loading the scope (last 30 days by day) ahead of the metric list. Slightly clipped grammar ('A message's last 30 days by day') costs a point but wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values and does so by enumerating the six metric dimensions at daily granularity. It is nearly complete for a single-parameter read-only report; only the exact response shape (e.g., array of daily objects) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single required parameter (messageId) is documented in the schema as originating from list_proactive_messages. The description adds no further parameter guidance, which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a proactive message) and its exact output dimensions (shown, seen, clicked, replied, dismissed, goal conversions) over a defined 30-day window, which clearly separates it from get_proactive_message and list_proactive_messages. There is no explicit verb phrase, but the metrics inventory makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the implicit 30-day window; there is no statement of when to reach for this report versus get_proactive_message, list_proactive_messages, or the generic report_summary. An agent must infer the analytics 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_productGet a hosted productBRead-onlyIdempotentInspect
A hosted product: its setup status, site address, allowed origins, help center slug and address, custom domains and GitHub connections.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and repeatability are covered. The description's added value is the inventory of returned fields, which is genuinely useful context for a tool with no output schema. It does not disclose auth/scope requirements or error behavior, so it goes slightly beyond the annotations but not far.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with zero filler, and the resource is front-loaded before the field enumeration. It is technically a noun-phrase fragment rather than a full statement of action, which is the only structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly does the work of describing the returned payload, and the single input parameter is fully documented in the schema. For a simple read-only getter this is nearly sufficient; only the lack of when-to-use context leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already explains it references list_products. The description adds nothing about the parameter. Baseline 3 is appropriate when the schema carries the full semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('a hosted product') and enumerates the specific data it exposes (setup status, site address, allowed origins, help center slug/address, custom domains, GitHub connections), which separates it from create_product and update_product. It never states a retrieval verb, but the title supplies 'Get' and the field list makes the resource unambiguous. Missing is any explicit contrast with the nearest sibling list_products (one vs. many).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus list_products or get_setup_status, and no prerequisites or follow-up actions are mentioned. The only routing hint ('Product id from list_products') lives in the schema, not the description, so the description itself offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportsGet reportsARead-onlyIdempotentInspect
The Reports page figures for a range: support (conversations, response and resolution times, AI resolutions, topics), the help center, and with email marketing also email, forms and journeys. Use days 7, 30 or 90, or from and to dates.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date, YYYY-MM-DD. | |
| days | No | Preset range (default 30). | |
| from | No | Start date, YYYY-MM-DD. | |
| productId | No | Only this product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds some value by noting that email, forms and journeys data only appears when email marketing is enabled, but says nothing about permissions, default range behavior when nothing is passed, or result granularity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool returns and followed by the supported range forms. The first sentence is a long parenthetical list, but every element earns its place as an inventory of returned metrics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only reporting tool with full schema coverage and no output schema, the description helpfully enumerates the metric categories returned rather than restating the schema. It is nearly complete, though it omits the default range behavior and any indication of how the returned figures are structured or scoped to the workspace/product.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the four parameters documented in the schema itself (including the 30-day default and YYYY-MM-DD format). The description largely restates those same range options rather than clarifying precedence between days and from/to or explaining productId scoping, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource (the Reports page figures) and enumerates the metric families covered: support conversations, response/resolution times, AI resolutions, topics, help center, and conditionally email/forms/journeys. However, it never distinguishes this tool from close siblings such as report_summary, get_journey_performance, or get_proactive_message_report, leaving overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use days 7, 30 or 90, or from and to dates" gives implied invocation context for the range parameters, but there is no explicit when-to-use versus alternatives guidance and no exclusions. With several reporting siblings in the roster, the omission of routing guidance 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_security_settingsGet security settingsARead-onlyIdempotentInspect
Whether the workspace requires two-factor authentication, who has not set it up, and how long closed conversations are kept. Changes are made in the app (settings_link page "security").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description's 'changes are made in the app' largely restates readOnly but does add a useful redirect pointer to settings_link page "security". No mention of permissions, scoping, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the substantive content is front-loaded before the redirect note. The settings_link reference is slightly awkward but earns its place by routing the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does list the key fields. For a zero-parameter read tool this is largely sufficient, though it omits any note on scope or freshness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns (2FA requirement, who hasn't enrolled, closed-conversation retention), so the agent knows the resource. However, it never states a verb+object like 'retrieves security settings' and does nothing to distinguish it from siblings such as get_workspace_settings or get_consent_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit 'use this when' statement or comparison against sibling get_*_settings tools. The only guidance is the routing hint that changes are made elsewhere (settings_link page "security"), which implies this tool is read-only consultation rather than explicit usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_send_settingsGet send settingsBRead-onlyIdempotentInspect
The marketing frequency cap: the most marketing emails one contact gets in the rolling window (null: no cap).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile needs no restating. The description does add one useful behavioral detail — that a null value means no cap — but says nothing about scope (workspace-wide vs. per-contact) or how the rolling window is defined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the null-case clarification is parenthetically contained. It is efficient, though the missing action verb means the one sentence does not fully front-load what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should carry the return contract, yet it only describes the concept of the cap rather than confirming that the tool returns the current workspace's frequency-cap value. For a zero-parameter read-only getter the annotations cover safety, but the read semantics remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there is nothing for parameter documentation to compensate for. Baseline 4 applies; the description adds no parameter meaning because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines the setting's meaning (the marketing frequency cap per contact within a rolling window) but never states the tool's action — that it retrieves/reads the current setting. With the name get_send_settings and no verb in the text, an agent must infer that this is a read. It also offers no differentiation from the sibling update_frequency_cap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as update_frequency_cap when the intent is to change the cap rather than read it. The scope is implied only by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_statusGet setup statusARead-onlyIdempotentInspect
What is set up in this workspace and what is left: the Get started checklist (articles, widget, branding, help center domain, email, AI), the first product, whether email is ready to send and receive, and which tool areas this connection has switched on. Each unfinished step includes its relevant setup action or settings page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuine behavioral content about the payload: it returns checklist completion state, email readiness, enabled tool areas, and, notably, an actionable setup link/settings page attached to each unfinished step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core framing ('What is set up ... and what is left:') followed by a compact enumeration of the covered areas. One sentence, no filler, though the dense parenthetical list reads more like a spec dump than prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, no output schema, and rich annotations, the description carries the remaining burden well by describing both scope and return content, including the action links. It could be slightly more complete by stating intended use (e.g., onboarding/readiness checks), but nothing critical for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. Nothing in the description contradicts or needs to compensate for the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific, aggregated resource: what is set up and what is left in the workspace, enumerating the exact facets (Get started checklist items, first product, email send/receive readiness, enabled tool areas). This is clearly distinguishable in scope from narrower siblings like get_email_setup or get_widget_install, though it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention that 'each unfinished step includes its relevant setup action or settings page' signals this is the overview you consult to find remaining onboarding work. There is no explicit when-to-use statement, no exclusion, and no pointer to sibling tools such as get_workspace_settings or get_email_setup for narrower questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slack_statusGet Slack statusARead-onlyIdempotentInspect
Whether a Slack workspace is connected, which channel rules post notifications to it, and which teammates are matched to Slack users. Connecting Slack is an approval the person does in the app (settings_link page "slack").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: it characterizes the read as a status/inspection call and clarifies that enabling the connection is an out-of-band approval in the app, so this tool cannot perform the connection itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first front-loads exactly what the status returns, and the second carries a single, non-redundant operational caveat. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does so by naming the three status areas. It stops short of describing the shape of the response (e.g., booleans vs lists per area), so it is complete at the conceptual level but not fully so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the calibration the baseline is 4. There is nothing for the description to disambiguate, and it correctly does not invent parameter-like details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (Slack connection status) and enumerates the three things it reports: workspace connection, channel-to-notification rules, and teammate-to-Slack-user matching. It clearly distinguishes itself from generic siblings like get_setup_status by being Slack-specific, though it never explicitly contrasts 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.
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. The parenthetical that connecting Slack is an approval done in-app via settings_link implicitly routes the connect flow away from this tool, which is a useful hint, but the agent must infer when to call get_slack_status versus get_setup_status or get_notification_preferences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_suppression_summaryGet the suppression list summaryARead-onlyIdempotentInspect
How many addresses are suppressed (never sent marketing email), by reason: unsubscribed, bounced, complained, and how many were imported.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds useful meaning by clarifying that 'suppressed' means never sent marketing email and enumerating the reasons. It adds no return-format or freshness/pagination context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the core purpose (counts by reason) is front-loaded. It is efficient, though the sentence is long enough that it reads more like output enumeration than a crisp purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what is returned, and it does: counts per reason (unsubscribed, bounced, complained) plus an imported count. For a zero-parameter, read-only tool with safety annotations already provided, this is adequate; only the exact return shape (field names, total) is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema carries nothing to document and the baseline is 4. The description introduces no parameters, so there is no semantic gap to fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and operation: counts of suppressed addresses broken down by reason. An agent can tell it produces a summary rather than a raw list. It does not name a sibling (e.g. list_blocked_senders or import_suppressions) to differentiate, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing suggests calling it when a count of suppressed addresses by category is needed. There is no explicit when-to-use statement, no prerequisite, and no reference to alternatives like import_suppressions or get_reports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_training_overviewGet the training overviewBRead-onlyIdempotentInspect
Training at a glance: the last 30 days' conversations and AI resolutions, answer feedback, the playbook rules the AI agent follows (per product), recent eval runs and whether evals can run.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | No | Only this product's playbook and evals. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered and the description adds the meaningful scoping detail that the conversation/feedback data is limited to the last 30 days. It does not disclose auth requirements, rate limits, or the shape of the aggregated response, so it is useful context rather than rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence led by 'Training at a glance', with the payload enumeration following. It is dense but every clause names a distinct returned data category, so little is wasted, though the comma-list style is slightly harder to scan than bullet-style structure would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back and does so by naming each returned section (conversations, AI resolutions, feedback, playbook rules, eval runs, eval runnability). An agent knows what to expect. It is only missing granularity about the aggregate's shape or any pagination/limits beyond the 30-day window.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single productId parameter is already documented as scoping playbook and evals. The description's '(per product)' phrasing echoes the same idea without adding format, default, or behavior when omitted, so the schema is doing the heavy lifting and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the training overview') and then enumerates the concrete contents returned: 30-day conversations/AI resolutions, answer feedback, playbook rules, eval runs and eval availability. That is enough for an agent to know it is a read-only dashboard-style aggregate, distinct from detail tools like get_agent or run_agent_evaluation. It stops short of explicitly naming a sibling it is not, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Training at a glance' faintly implies a summary use case, but there is no statement of when to pick this over alternatives such as get_agent, get_ai_settings, list_training_proposals or run_agent_evaluation, and no prerequisites or exclusions. The agent is left to infer the routing decision entirely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_widget_installGet the widget installARead-onlyIdempotentInspect
How to put the chat widget on a website: the script tag, the allowed origins, where the widget was last seen, whether signed-in identity is set up, and optionally server code that signs identity tokens. The identity secret itself is only shown in the app (settings_link page "install").
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. | |
| identitySnippets | No | Include server code (several languages) that signs identity tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only/idempotent profile, so the bar is lower. The description adds genuine value beyond that: it discloses that the identity secret is deliberately excluded from the response and where to get it instead, plus that server-side identity-signing code is only returned optionally. That 'what is NOT returned' detail prevents agent confusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded into one dense enumerating sentence, followed by a short caveat sentence about the secret. Every clause carries information about the return payload; there is no filler, though the first sentence is long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return payload, and it does so field by field (script tag, origins, last seen, identity status, optional snippets). Combined with annotations covering the safety profile and the routing note to settings_link, an agent has what it needs to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented (productId provenance from list_products, identitySnippets purpose). The description restates the identitySnippets meaning ('server code that signs identity tokens') with no additional syntax or format detail, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns for the chat-widget install (script tag, allowed origins, last seen, identity setup, optional server snippets), which is a specific and recognizable resource. It does not name a sibling for comparison, but the content is distinctive enough that an agent can tell it apart from generic get_product/list_products calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — the agent infers it should call this to obtain install instructions. There is one useful routing hint: the identity secret is only shown in the app via settings_link page 'install', which points the agent elsewhere for that specific data. No explicit when-to-use/when-not or alternative-naming guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_settingsGet workspace settingsBRead-onlyIdempotentInspect
The workspace's name, time zone, status and trial end, its plan's name and email marketing, the AI agent's name and what this server offers (email, AI, media).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful fact that the payload spans workspace, plan, AI agent, and server-capability data, which is real content beyond the annotations, but it says nothing about auth requirements or freshness of the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the most salient item (workspace name/status) is front-loaded. It is a fragment rather than a complete sentence, which slightly hurts scannability but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source of return information, and it does list the main payload areas. However, phrases like 'email marketing' and 'what this server offers (email, AI, media)' are ambiguous about whether they are settings, feature flags, or entitlement data, leaving the agent unsure of the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate at the parameter level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun-phrase inventory of returned data ('the workspace's name, time zone, status and trial end...') rather than a stated verb+resource action; the verb must be inferred from the tool name. It conveys what the tool surfaces but offers no differentiation from nearby getters like get_billing_status, get_ai_settings, or get_send_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the many other workspace/settings getters, nor any prerequisite or context statement. The agent must guess that this is the general-purpose settings fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_brand_from_websiteRead a brand from a websiteARead-onlyIdempotentInspect
Read the logo, icon, main colour, heading font and site name from a website's home page. Returns suggested brand values without saving them.
| Name | Required | Description | Default |
|---|---|---|---|
| website | Yes | Like acme.com or https://acme.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description usefully adds that results are suggestions only and nothing is persisted, and enumerates what it reads. It omits failure behavior for unreachable or non-HTML sites and does not describe the shape of the returned brand values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, fully front-loaded: the extracted fields come first, then the non-persistence constraint. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with no output schema, the description covers source, extracted fields and non-persistence. It could have said a bit more about the returned value formats (colour notation, font naming), but nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema coverage and a format example ('acme.com or https://acme.com'), so the schema does the heavy lifting. The description adds only that the target is a site home page rather than an arbitrary page — a marginal semantic gain, consistent with the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb ('read') bound to a specific resource ('logo, icon, main colour, heading font and site name') from a specific source ('a website's home page'). The clause 'Returns suggested brand values without saving them' cleanly separates it from the saved-brand tools get_brand and update_brand 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'without saving them' (i.e., use it to harvest a starting point, then persist via the update path) but no sibling is named and no when-to-use/when-not condition is stated. An agent must infer the relationship to get_brand/update_brand on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_email_htmlImport an email from HTMLBInspect
Turns pasted email HTML, or a public web page, into editable blocks and saves it as a template or a newsletter draft. Use it to bring emails over from another tool.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Or a public https address to fetch it from. | |
| html | No | The email HTML. | |
| name | Yes | Name for what is saved. | |
| saveAs | Yes | ||
| snapToBrand | No | Use the brand kit’s fonts and colours (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, non-destructive write, and the description is consistent with that by stating the output is saved as a template or draft. It adds the useful fact that HTML is converted into editable blocks, but says nothing about what happens to existing content or failure behavior when a URL cannot be fetched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the core transformation front-loaded before the usage hint. No filler, though the second sentence is thin relative to the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and the annotations carry the safety profile, so the description is close to adequate. The notable gap is that html and url are both optional in the schema, yet the description never says at least one source must be supplied, leaving an ambiguity an agent could trip over.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents url, html, name and snapToBrand; the description adds only the url-as-public-page nuance and restates the saveAs options (template/newsletter). With the schema doing most of the work, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource: it turns email HTML (or a fetched web page) into editable blocks and saves the result as a template or newsletter draft. That is more specific than a bare import, and 'bring emails over from another tool' hints at its niche versus create_email_template/generate_newsletter, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to bring emails over from another tool' gives a usage context, but it offers no when-not guidance and does not point to alternatives such as create_email_template or generate_newsletter, so an agent must infer when this beats building a template from scratch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_suppressionsAdd to the suppression listADestructiveInspect
Adds addresses to the suppression list (for example an unsubscribe or bounce export from another email tool). Matching contacts become unsubscribed. Entries are never removed or weakened later, so this cannot be undone in HelpWell.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | The reason for entries that do not give their own. | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the irreversible consequence ('entries are never removed or weakened later, so this cannot be undone in HelpWell') and the side effect on matching contacts. This materially reinforces destructiveHint=true and idempotentHint=false with operational meaning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its consequence, with zero filler. Every sentence contributes (what it does, when to use it, permanence).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation the description covers irreversibility and the consent side effect well. It omits operational details like the 5000-entry batch cap and how partial failures are reported, but with no output schema and a partly-documented schema this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the schema already documents the reason enum and the optional per-entry reason. The description loosely frames what 'entries' are (exported addresses) but adds no syntax, format, or batching detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds addresses to the suppression list') and clarifies the effect ('Matching contacts become unsubscribed'), which cleanly separates it from read-only siblings like get_suppression_summary and list_blocked_senders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('an unsubscribe or bounce export from another email tool') that tells the agent when this tool applies. It does not name an alternative tool or state when-not to use it, so it falls short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_teammateInvite a teammateADestructiveInspect
Email someone an invitation to join the workspace with a role. The link works once, for that address, for seven days. An earlier pending invitation to the same address is replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | owner: everything, including the team and billing; admin: settings and automation; agent: conversations and contacts; viewer: read only. | |
| Yes | Their email address. | ||
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive, non-idempotent, open-world behavior, and the description adds genuinely new behavioral facts: the link is single-use, bound to that address, expires in seven days, and replaces any earlier pending invitation to the same address. These are exactly the side-effect details an agent needs before mutating invite state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences. The core action comes first, followed by the two facts (single-use/seven-day link, prior invitation replaced) that matter most. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with full annotation coverage and no output schema, the description covers the important side effects well. It is slightly thin on prerequisites (who may invite, what happens on failure or to an existing teammate with that address) but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so role enum meanings, email, and the two-phase confirm workflow are already fully documented in the schema. The description only echoes the 'with a role' concept and adds no parameter detail beyond it, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Email someone an invitation to join the workspace with a role') and the lifecycle detail about replacement helps separate it from resend_invitation. It does not explicitly name the closest siblings (resend_invitation, revoke_invitation, change_teammate_role), so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the invitation lifecycle described, but there is no explicit when-to-use or when-not-to-use guidance and no routing to the alternatives in the sibling list (resend_invitation for an existing invite, revoke_invitation to cancel). The confirm workflow guidance lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agent_conversationsList the AI agent's conversationsARead-onlyIdempotentInspect
Recent conversations the product's AI agent had in the widget and help center: topic, tags, rating and the customer's last message, to see what people struggle with. Contact details are left out and email addresses read [email].
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many, 1-100. Defaults to 20. | |
| status | No | ||
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, non-destructive, idempotent profile, so the bar is lower, yet the description still adds substantive behavior: contact details are omitted and email addresses are redacted as [email], and results are limited to 'recent' conversations. It omits ordering/recency window and pagination behavior, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero filler. The resource and scope come first, the returned fields are packed into a colon list, and the privacy caveat trails efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates what comes back and discloses PII handling, and annotations cover the safety profile, so an agent has enough to call it correctly. Missing only secondary detail like ordering, pagination, and status-filter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: limit and productId are documented in the schema and status carries a self-explanatory enum. The description adds nothing about how limit interacts with 'recent', what status filtering means (agent-resolved vs unresolved), or default ordering, so it does not compensate for the earlier half of the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (the AI agent's conversations) and adds real scope: conversations in the widget and help center, with the fields surfaced (topic, tags, rating, last message). It does not name the closely related sibling read_agent_conversation, so the boundary between listing and reading one conversation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'To see what people struggle with' gives a motivating intent, which is more than nothing, but there is no explicit guidance on when to use this versus read_agent_conversation, list_conversations, or list_gaps, and no stated preconditions beyond the required productId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ai_modelsList AI modelsARead-onlyIdempotentInspect
Models available on the workspace's OpenRouter key, newest first, with context length and price per million tokens. Needs the key connected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50. | |
| search | No | Matches the model id or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real context beyond them: the sort order (newest first), the returned fields (context length, price per million tokens), and an auth/integration prerequisite. It does not cover pagination behavior for the limit, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the scope and shape of the result are front-loaded, and the prerequisite is stated last.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so (ordering and key fields). It leaves minor gaps — exact identifiers returned and paging behavior — but is sufficient for a simple zero-required-parameter read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two parameters (limit, search) are already documented in the schema; the baseline of 3 applies. The description adds no parameter-level detail such as what search matching covers or default paging behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (AI models) plus scope (the workspace's OpenRouter key) and ordering (newest first). No sibling tool lists models — get_ai_settings/update_ai_settings are clearly different — so an agent can pick this out from the sibling set 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Needs the key connected' gives a useful precondition for when this will succeed, but there is no explicit when-to-use framing (e.g., before choosing a model for AI settings) or mention of alternatives. Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_articlesList help articlesARead-onlyIdempotentInspect
List a hosted product's help articles, drafts and archived ones included, with each collection. Filter by collection, status or words in the title or description. Use it to find an article's slug before reading or editing it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many articles, 1-500. Defaults to 100. | |
| search | No | Words in the title or description. | |
| status | No | Only articles with this status. | |
| productId | Yes | Product id from list_products. | |
| collection | No | Only this collection id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: drafts and archived articles are included by default, which is a non-obvious scoping detail an agent would otherwise assume away.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource and scope before the filtering and use-case guidance. The phrase 'with each collection' is slightly vague and costs a little clarity, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description implies the return includes slugs and that all statuses are represented, which is the key thing an agent needs. Pagination behavior is covered by the limit parameter's default in the schema, so the remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including limit, productId, and the status enum) are already documented in the schema. The description echoes the filter dimensions (collection, status, title/description words) but adds no syntax or format detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List a hosted product's help articles') and explicitly widens scope to include drafts and archived articles. It stops short of differentiating itself from the sibling search_articles, which covers the same 'words in the title or description' territory, so an agent can't fully disambiguate the two from text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case ('find an article's slug before reading or editing it'), which routes the agent toward read_article/update_article downstream. It offers no exclusion guidance against search_articles, so the when-not 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.
list_article_versionsList article versionsARead-onlyIdempotentInspect
An article's saved versions, newest first: who or what saved each (editor, sync or API), its title, status and version id. Useful for reviewing the history or identifying a version to restore.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The article slug, including its collection, e.g. "billing/download-invoices" (from list_articles). | |
| limit | No | How many, 1-200. Defaults to 20. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real behavior: results are ordered newest first and version provenance is exposed (editor, sync or API), which tells the agent what the payload looks like. Pagination behavior is left to the schema, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the return shape front-loaded and the use case following. The colon-delimited field list is compact and immediately readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return shape, and it does: ordering, provenance of each save, title, status and version id. Only pagination behavior and the relationship to sibling version-listing tools are unstated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents slug, productId and limit (with the 1-200 range and default). The description adds no parameter-level meaning, which matches the baseline 3 when structured fields carry the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (an article's saved versions) and adds distinguishing detail: newest-first ordering and the fields returned (who saved it, title, status, version id). It is clearly distinct from read_article and list_articles, but it never names a sibling explicitly, which 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to reach for it — reviewing history or hunting for a version to restore — which implicitly routes the agent to restore_article_version. There are no explicit exclusions or named alternatives, so it is a solid 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blocked_sendersList blocked sendersBRead-onlyIdempotentInspect
Email addresses marked as spam, whose mail to support is dropped.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds genuinely useful domain semantics — that these addresses' mail to support is being dropped — which is more than the annotations convey. It still omits any sense of result size or pagination behavior for the listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short clause with no filler, and the defining characteristic (spam-marked, mail dropped) is front-loaded. It is efficient but so terse that it reads as a label rather than an instruction, leaving the action implicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema listing tool with rich annotations, the definition is close to sufficient — the agent needs only to know what the list contains. What is missing is the explicit action ('list') and any indication of whether the result can be empty or large, which is cheap to state in a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the baseline there is nothing for the description to disambiguate. The schema is empty and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase defining the resource ('email addresses marked as spam, whose mail to support is dropped') rather than stating the action. It never says the tool lists or returns them, so the agent must infer the verb from the tool name. It does distinguish the domain concept from generic suppression lists, which helps somewhat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives. Siblings such as get_suppression_summary, list_external_mail, and unblock_sender are adjacent in the same domain, and the description does none of the routing work to say which one an agent wants. Zero parameters means there is also no condition under which it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_changelog_entriesList changelog entriesBRead-onlyIdempotentInspect
A hosted product's changelog, drafts included, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many, 1-50. Defaults to 25. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so safety is covered. The description adds genuine value beyond that by disclosing that drafts are included and that results are ordered newest first, but it says nothing about pagination behavior or how the limit interacts with total result count.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause with no filler, and the scoping facts (drafts included, newest first) come first. It is a sentence fragment rather than a full statement, which is efficient but slightly terse for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries some burden for explaining what an entry looks like, and it does not; it also omits pagination semantics. It is adequate for a simple read-only list given that annotations cover the safety profile and the schema covers both parameters, but it leaves the return shape unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: productId already points to list_products and limit already documents the 1-50 range and default of 25. The description adds no parameter-level 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The resource is named precisely (a hosted product's changelog) and the scope modifiers 'drafts included' and 'newest first' tell an agent exactly what set and ordering it returns. The verb comes from the tool name rather than the description, and it does not explicitly contrast with create/update/delete_changelog_entry or draft_changelog_from_releases, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisite, and no named alternative. The only implicit cue is 'drafts included,' which hints it is the read path that surfaces unpublished entries, but an agent gets no explicit routing guidance among the many changelog siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList help center collectionsARead-onlyIdempotentInspect
List the help center collections — id, title, description, icon, tint and how many published articles each holds. Use it to decide where a new article belongs. The id is the folder name under the docs directory and the first segment of every slug in it: an article for collection "billing" is written to docs/billing/.md and gets the slug "billing/". title is only what readers see.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine semantic context beyond them: what the id means (folder name and slug prefix), what title means (reader-facing only), and that the article count is of published articles only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and returned fields, then the usage hook, then the id/slug semantics. The billing slug example is slightly verbose but directly disambiguates id, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only list tool with no output schema, the description compensates by enumerating returned fields and explaining the two fields most likely to be misused (id vs title). Pagination or ordering behavior is unmentioned, which is the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single productId parameter is already documented as coming from list_products. The description adds nothing further about the parameter, so the baseline of 3 applies; its added value lands in return-shape semantics rather than parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('help center collections') and enumerates the returned fields. The explanation that a collection id is a folder under docs/ and the first slug segment clearly separates it from article-level siblings like list_articles, search_articles, and create_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to decide where a new article belongs' gives a concrete trigger for calling it. It does not mention when not to use it or point at adjacent tools such as create_collection, update_collection, or list_products (beyond the productId reference), so it stops short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsList conversationsARead-onlyIdempotentInspect
The inbox list: conversations for a view (all, mine, unassigned, mentions or one teammate), a status tab (open, snoozed, closed, pending, all), a product and a search across the subject, messages and contact. Returns ids for get_conversation and the counts on each tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Order (default newest). | |
| limit | No | How many to return (default 25, at most 250). | |
| search | No | Words in the subject, messages, name or email. | |
| status | No | Status tab (default open; open includes pending). | |
| unread | No | Only unread conversations. | |
| assignee | No | all (default), mine, unassigned, mentions, or a teammate user id to see their conversations (admins). | |
| productId | No | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuinely useful behavior beyond that: there is no output schema, yet it discloses the return shape (conversation ids intended for get_conversation, plus per-tab counts). It does not mention pagination behavior or the limit cap, which the schema covers separately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's identity ('The inbox list'), with the return-value statement placed last. The parenthetical enum lists make the first sentence dense and partially redundant with the schema, but nothing is wasted outright.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 optional parameters, no required ones, and no output schema, the description covers the key things: what the filters mean in aggregate and what comes back (ids and tab counts). It is thin on sorting and the unread filter, but those are documented in the schema, so no critical gap remains for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (sort, limit, search, status, unread, assignee, productId) is already documented in the schema, so the baseline is 3. The description largely paraphrases the assignee and status enums rather than adding syntax or semantics the schema lacks, and it omits the sort and unread parameters entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely scopes the tool as the inbox conversation list, enumerating the exact filter dimensions (view, status tab, product, search) that define what it returns. It implicitly separates itself from get_conversation (single conversation, named as the consumer of these ids), though it never explicitly addresses the similarly-named sibling list_agent_conversations. Clear and specific, but framed as a noun phrase rather than a verb+resource statement with 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter dimensions convey the contexts in which to use it (browsing the inbox by view/status/product/search), and it hints at the follow-up workflow by stating it returns ids for get_conversation. It gives no explicit when-not to use it and doesn't contrast with list_agent_conversations or the various search/list siblings, so the routing guidance is implicit rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_email_templatesList email templatesBRead-onlyIdempotentInspect
The built-in email templates and the ones this workspace saved or imported.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description contributes useful content scope (built-in vs. saved vs. imported), but says nothing about pagination, ordering, or result size limits for what is presumably a growing collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short clause with no filler and the scope qualifier up front. It is efficient, though its fragment form (no verb) makes it read as an annotation rather than an instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the definition is adequate but thin: the agent does not learn whether results are paginated, ordered, or how many templates to expect. The annotations cover safety, so the remaining gap is small but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document; the baseline of 4 applies. The description correctly stays silent rather than inventing arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title supply the verb ('List email templates'); the description itself is a bare noun phrase. It does add genuine scope information — the list includes built-in, workspace-saved, and imported templates — but it never differentiates this tool from close siblings like get_email_template or use_email_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_email_template (single template retrieval) or use_email_template (applying one). The agent must infer the selection logic 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_external_mailList external mailARead-onlyIdempotentInspect
The inbox's External tab: support email from people who are not contacts yet, waiting to be moved into the inbox, marked as spam or deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 25, at most 250). | |
| productId | No | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuine domain context beyond the structured fields by explaining what the returned items are and their lifecycle state (not-yet-contacts, awaiting a triage decision), which helps the agent interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero filler, front-loading the location ('The inbox's External tab'). It is a sentence fragment lacking a verb, which is slightly less self-contained than an explicit 'lists ...' statement, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with full schema coverage and complete annotations, the description supplies the missing conceptual context (what the External tab is and why items sit there). No output schema exists, but for a simple listing the description does not need to detail return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: limit and productId are both documented in the schema, including defaults and bounds. The description adds no syntax or scoping detail about either parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource precisely as the inbox's External tab and characterizes its contents (support email from non-contacts awaiting triage). It implicitly distinguishes itself from the related action siblings (move_external_mail_to_inbox, mark_external_mail_spam, delete_external_mail) by naming those states, though it never states the verb 'list' explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the items are described as 'waiting to be moved into the inbox, marked as spam or deleted', which signals this is the triage queue to inspect before acting. However, there is no explicit when-to-use/when-not guidance or a named alternative (e.g., list_conversations) for agents deciding where to look first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fieldsList contact fields and eventsARead-onlyIdempotentInspect
Every contact field by source (HelpWell, Stripe, LeadFuze, your app) with its type, merge tag and how many contacts have it, the company fields, and events seen in the last 7 days.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine behavioral context beyond that: results are aggregated per source and event data is bounded to the last 7 days, which constrains how the agent should interpret and cache the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that conveys the resource, the grouping dimension (source), the fields returned, and the time window, with no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so by enumerating the returned categories, which is enough to call and interpret the tool. It stops short of stating result shape or ordering, a minor gap for a zero-parameter read-only listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema is a closed empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly implies the call is unconditional with no filtering input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource ('list every contact field') and enumerates the exact payload: source, type, merge tag, contact counts, company fields, and 7-day events. That scope clearly separates it from mutating neighbors like define_field and unlock_field, though 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent would call this to discover what fields exist before creating segments, defining fields, or filtering contacts. There is no explicit when-to-use, prerequisite, or 'use X instead' guidance, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_settingsList formsBRead-onlyIdempotentInspect
The sign-up, feedback and lead forms products have used, with submissions, confirmations, and whether double opt-in and enrichment are on for each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only content scope (submissions, confirmations, double opt-in, enrichment flags), not behavior such as pagination, ordering, or filtering — acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the most discriminating detail (the form types) comes first. Slightly awkward phrasing around 'products have used' costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place return contents are described — and it does enumerate the key fields. But it omits scope (whose forms, how many, any filtering or pagination), leaving ambiguity about what the list actually contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (sign-up, feedback and lead forms) and enumerates what each entry carries, so an agent can infer this is a read of form settings. However it is a noun phrase rather than a verb+resource statement, and it never says 'list' or states scope (all forms? per product/workspace?). The purpose is implied rather than declared.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no reference to the obvious counterpart update_form_settings in the sibling list. The agent gets no signal about when this read is appropriate versus other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gapsList unanswered questionsARead-onlyIdempotentInspect
List the questions the support agent could not answer from the documentation. This is the backlog of articles that need writing, most-asked first.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Defaults to "new", the gaps nobody has handled yet. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the description only needs to add context. It adds the default ordering ('most-asked first'), which is genuinely useful, but says nothing about pagination, result limits, or the shape of each returned gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the identity of the resource front-loaded and the ordering detail appended where it matters. Nothing could be cut without losing substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two params, 100% schema coverage, and rich annotations, the description covers what the tool is and how results are ordered. The remaining gap is that with no output schema, it never sketches what a returned gap looks like or whether results are paginated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: productId's source (from list_products) and status's default ('new', unhandled gaps) are already documented in the schema. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the questions the support agent could not answer') plus the business meaning ('backlog of articles that need writing') and default ordering. This distinguishes it from generic listing siblings like list_articles or list_conversations 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing as a 'backlog of articles that need writing' implies this is the tool for content-gap triage, which is useful context. However, it never states when to prefer it or what to do next (e.g. resolve_gap, dismiss_gap, draft_article_from_conversation), so the routing 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.
list_help_center_domainsList help center domainsARead-onlyIdempotentInspect
A hosted product's custom help center domains: status, whether DNS and the certificate check out, which is primary, and the DNS records to add.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and idempotency are covered. The description adds real value beyond that by disclosing what the response carries: status, DNS and certificate validation results, primary designation, and DNS records to add. It stops short of noting pagination or ordering behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight fragment with the resource front-loaded and the returned fields enumerated without filler. The lack of a verb makes it read as a label rather than a full statement, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter, read-only listing tool with no output schema; the description compensates by summarizing the returned fields (status, DNS/cert checks, primary flag, DNS records), which is most of what an agent needs to interpret results. No note on empty-state or multi-domain ordering, hence not a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema description coverage is 100% (productId documented as 'Product id from list_products'). The phrase 'a hosted product's' loosely ties the listing to productId, but adds no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (a hosted product's custom help center domains) and enumerates what is surfaced, so the agent knows this is a listing/read of domain configuration. It does not explicitly differentiate itself from nearby siblings like check_help_center_domain or set_primary_help_center_domain, but the resource scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as check_help_center_domain (single-domain inspection) or add_help_center_domain. Usage is only inferable from the name and the fields it returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_journey_peopleList people at a journey stepBRead-onlyIdempotentInspect
Who is at a step now (here), went past it (passed) or left there (left). step is a step id from get_journey (or # for a step without an id), or entry, goal or end.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | ||
| step | Yes | Step id, #<index>, entry, goal or end. | |
| limit | No | How many to return (default 25, at most 100). | |
| offset | No | How many to skip, for paging. | |
| search | No | Name or email. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the meaning of the here/passed/left states, which is genuinely useful behavioral context, but says nothing about the volume of results returned or paging behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the state/scope description is front-loaded before the step-id detail. Efficient, though the step-id sentence reads as a run-on that could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with a rich 6-parameter schema, no output schema, and annotations covering safety, the description plus schema give an agent enough to call it correctly. Return shape and paging details are the only meaningful omissions, and the schema covers paging.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents most parameters (limit, offset, search, journeyId, step). The description restates and slightly extends the step semantics ('from get_journey', 'entry, goal or end') and interprets the tab enum, but adds little beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the resource (people at a journey step) and splits it into the three states here/passed/left, so an agent understands what is returned. However it never states an explicit verb and does not distinguish this from siblings like get_journey_run or list_journeys, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where the step id comes from ('a step id from get_journey'), which is helpful sourcing, but gives no when-to-use guidance and no contrast with alternative tools for inspecting journey activity. Usage must be inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_journey_recipesList journey recipesARead-onlyIdempotentInspect
Ready-made journey starting points (roadmap voters, unhelpful articles, failed payments, welcome series and more). create_journey_from_recipe turns one into a draft.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds that these are catalogue templates rather than live journeys and that instantiation is a separate call, which is useful context but not deep behavioral detail — no mention of return shape or whether the catalogue is fixed vs. user-extensible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, examples front-loaded, and the follow-up tool named last. 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.
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 supplies enough: what the items are, examples of them, and how to act on one. Minor gap is that it doesn't hint at how results are organised or whether all recipes are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource clearly — ready-made journey starting points — and backs it with concrete examples (roadmap voters, unhelpful articles, failed payments, welcome series), which distinguishes it from list_journeys and create_journey. It never uses an explicit verb like 'list', but the name carries that and the content is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It defines the workflow: browse recipes here, then hand one to create_journey_from_recipe to turn it into a draft. That names the natural follow-up tool and the condition for using it. It stops short of saying when NOT to use it (e.g. to inspect existing journeys, use list_journeys).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_journey_runsList journey runsBRead-onlyIdempotentInspect
Everyone who entered a journey, one run each: step, status, when they entered, next due and whether they reached the goal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 50, at most 500). | |
| filter | No | ||
| offset | No | How many to skip, for paging. | |
| search | No | Name or email. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the row shape (step, status, entry time, next due, goal reached), which is useful but is closer to output content than behavioral context; it says nothing about paging behavior or authorization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero padding that front-loads the scoping fact ('one run each') before the returned fields. Appropriately sized for a list tool; slight loss for the informal phrasing over a crisp statement of purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields, which fills part of the gap. However, the undocumented filter enum and the absence of any boundary with sibling run/people tools leave meaningful gaps for an agent calling this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents limit, offset, and search, and the description adds no parameter detail. The filter enum (all/in/goal/finished/left) has no description in either place, so its semantics remain undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (list people who entered a journey, one run each) and enumerates the fields returned, so an agent knows exactly what this returns. It does not, however, differentiate from the close sibling list_journey_people or get_journey_run, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'everyone who entered a journey,' but there is no explicit when-to-use statement, no exclusion, and no pointer to alternatives such as list_journey_people or get_journey_run. An agent must infer the retrieval scenario on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_journeysList journeysARead-onlyIdempotentInspect
Journeys (automations) with status, triggers, steps, people in them, emails sent and open and click rates in the last 30 days. Deleted journeys are marked archived.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add operational context. It does: results are scoped to a 30-day metrics window (emails sent, open and click rates) and soft-deleted journeys are included but flagged as archived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource and its returned fields, followed by the archived-state caveat. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the return-shape burden and handles it well by naming the fields returned. It does not mention result limits, pagination, or ordering, which would matter for an unfiltered listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 — there is no parameter syntax the description could be expected to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name/title supply the verb ('List') and the description defines the resource precisely, even clarifying the domain term ('Journeys (automations)') and enumerating the attributes returned. It is clear what the tool yields, though it never explicitly contrasts itself with get_journey, list_journey_runs, or list_journey_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative tool is named, despite many siblings operating on journeys (get_journey, list_journey_runs, list_journey_people, get_journey_performance). The only routing hint is implicit — that deleted items appear as archived rather than being excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_merge_candidatesList conversations to merge intoARead-onlyIdempotentInspect
The same contact's other conversations that this one can be merged into, for merge_conversations.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the meaningful domain constraint that results are scoped to the same contact and are valid merge targets, but says nothing about ordering, result limits, or what happens if no candidates exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the scoping constraint (same contact) is front-loaded before the cross-reference to merge_conversations. It reads as a sentence fragment rather than a complete statement, which slightly hurts clarity but not conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup with no output schema, the description covers what is listed, the scope of the results, and the downstream tool it feeds. Only minor details (result ordering, empty-case behavior) are missing, which is acceptable at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, whose schema description already explains that conversationId comes from list_conversations. The description adds no syntax, format, or constraint detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource — the same contact's other conversations that this one can be merged into — which is specific enough to distinguish it from siblings like list_conversations or merge_conversations itself. It lacks an explicit verb (the action is only implied by the name/title), but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for merge_conversations' implies this is a prerequisite lookup step before a merge, which is useful routing context. However, it never states when not to use it, what to do if the list is empty, or how it relates to list_conversations as the entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_newslettersList newslettersCRead-onlyIdempotentInspect
Newsletters and journey emails with their status (draft, ready, scheduled, sending, sent, cancelled), subject and audience.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 50, at most 200). | |
| status | No | Only this status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the returned field set; it says nothing about ordering, pagination beyond the schema's limit, or filtering behavior. Given the annotation coverage, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the field enumeration is front-loaded. It is fragmented rather than a full clause, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only source of return-shape information; it lists status, subject and audience, which is helpful but partial. It does not state that the result is a collection, nor address ordering or pagination behavior, leaving gaps for a two-param list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, status both documented with defaults and bounds), so the schema carries the burden. The description restates the status enum values, adding no syntax or semantics beyond what the schema already provides – baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('Newsletters and journey emails') and enumerates the returned fields (status, subject, audience), so an agent can infer what it returns. However, it is a noun phrase with no verb, and it does not distinguish this lister from siblings such as get_newsletter, count_newsletter_audience or list_journeys, despite the resource overlap with journey emails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives. The agent must infer from the name alone that this is the enumeration counterpart to get_newsletter, and nothing tells it when to prefer this over list_journeys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsList notificationsBRead-onlyIdempotentInspect
Your notification bell: mentions, assignments, customer replies and waiting conversations, newest first, with unread counts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 20, at most 60). | |
| filter | No | direct: only what is about you (mentions, assignments, your conversations). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it discloses the content categories, newest-first ordering, and unread counts, which go beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words, and the content categories, ordering, and unread counts are front-loaded. It is slightly less direct because it opens with a metaphor rather than an action verb, but the structure remains tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries some burden for explaining returned data. It mentions unread counts and ordering, but it does not clarify whether read notifications are included, how pagination works, or what the return shape looks like beyond content categories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (limit and filter) are fully documented in the schema. The description does not add any new meaning about limit or the direct/all filter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as the notification bell and lists the notification types it surfaces, so an agent knows this is a notification-listing tool. It stops short of explicitly naming sibling alternatives or distinguishing itself from read/mark operations 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.
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 does not mention alternatives such as get_notification_preferences, mark_notification_read, or snooze_notification. The phrase 'Your notification bell' implies retrieval, but that is inference rather than stated usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proactive_messagesList proactive messagesBRead-onlyIdempotentInspect
Chat messages, pop-ups and banners the widget shows visitors, with status (draft, live, paused) and their last 30 days, plus the per-visit cap.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the returned fields (status values, last 30 days, per-visit cap), but says nothing about pagination, ordering, or result limits for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no wasted words, but it is a noun-phrase fragment rather than a purpose statement, and the trailing clauses about status, 30 days, and the per-visit cap pile up without clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return, and it does identify the entity and the notable returned attributes. It stops short of covering list-level behaviors like volume or ordering, but is otherwise adequate for a parameterless read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There are no inputs requiring semantic explanation, and the schema is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely explains what a 'proactive message' is (chat messages, pop-ups, banners the widget shows visitors), which is valuable given the abstract name. It implies a collection read but never states a verb like 'list' or 'returns', and it doesn't distinguish 'list all' from the sibling get_proactive_message (single fetch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as get_proactive_message, get_proactive_message_report, or the create/update/pause siblings. The listing intent 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.
list_productsList productsARead-onlyIdempotentInspect
List the products in this workspace, with the id the other tools take as productId.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds value the annotations cannot: the results are workspace-scoped and the returned id is the productId consumed by other tools. It does not mention pagination or result shape beyond the id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and scope, then adds the one piece of information an agent needs (the id semantics). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the return-value burden and does so for the critical field (productId). Minor gaps remain: it never states whether the list can be empty, is paginated, or what other fields a product carries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. The mention of productId refers to the output rather than an input, which is useful but outside this dimension's scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List the products in this workspace'), which cleanly separates it from the singular get_product and the mutating create_product/update_product siblings. It stops short of naming any sibling explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'with the id the other tools take as productId' tells the agent exactly why and when to call this tool: to obtain product identifiers for downstream calls. There is no explicit when-not guidance, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_redirectsList help center redirectsBRead-onlyIdempotentInspect
Old help center addresses and the articles they send visitors to, as an import or the Redirects screen saved them.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds provenance context ('as an import or the Redirects screen saved them'), hinting that entries may originate from different sources, but does not disclose ordering, pagination, or whether entries can be stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence fragment with no wasted words. It front-loads the core content, though being a fragment rather than a full sentence slightly weakens the lead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list with no output schema, the description conveys what each returned record contains (source address + destination article), which is the main thing an agent needs. It omits pagination/volume and scoping caveats, but nothing critical to invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100% (productId, with a pointer to list_products). The description adds nothing about productId or what happens if it is omitted/invalid, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the returned resource precisely — old help center addresses plus their target articles — which is clearer than the bare title. However, it is a noun phrase with no operative verb (list/retrieve), so it never literally states the operation, and it does not contrast itself with siblings add_redirect or remove_redirect. The resource is unambiguous, but the action must be inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives are named. An agent must infer that this is the read path versus add_redirect/remove_redirect, and there is no statement about prerequisuhites (e.g., that productId must come from list_products). Context is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resend_domainsList Resend domainsARead-onlyIdempotentInspect
Domains already in the workspace's Resend account, and whether HelpWell uses each, so one can be reused with reuse_resend_domain instead of added again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful behavioral context by stating the scope is the workspace's Resend account and that the result indicates whether HelpWell uses each domain, though it does not discuss response format or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single compact sentence with no redundant text. The resource, reuse context, and alternative are all front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains that the tool returns domains and whether HelpWell uses each. It could be richer about the exact fields returned for reuse decisions, but it is otherwise complete for a simple zero-parameter list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes no parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for undocumented inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as domains in the workspace's Resend account and adds that it reports whether HelpWell uses each. It distinguishes the tool from reuse_resend_domain and from adding a new domain, though it is phrased as a noun fragment rather than an explicit verb-led definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use context: check existing domains so one can be reused with reuse_resend_domain instead of added again. The alternative reuse_resend_domain is named explicitly, but there is no explicit when-not-to-use guidance or mention of related add/check domain tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_repliesList saved repliesARead-onlyIdempotentInspect
The team's shared saved replies and your personal ones, most used first. Bodies may hold {{first_name}}, {{agent_name}} and {{product}}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 50, at most 200). | |
| search | No | Words in the title, body or tags. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: results span team and personal scopes, are sorted by usage frequency, and bodies contain {{first_name}}/{{agent_name}}/{{product}} placeholders the agent must know about before using the text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste. Scope and ordering are front-loaded, and the templating caveat is a genuinely necessary second thought rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only list with no output schema, the description covers scope, ordering and body format, which is most of what an agent needs. It stops short of describing pagination or the item shape, but annotations and the simple schema carry the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both limit (default 50, max 200) and search (title/body/tags) are documented in the schema itself. The description adds nothing about the parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names the resource (saved replies) and states the scope precisely: the team's shared set plus the caller's personal ones. The ordering (most used first) clarifies what kind of listing this is. It doesn't explicitly contrast with render_saved_reply or create_saved_reply, but the verb-resource pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — an agent infers this is for browsing available saved replies before rendering or editing one — but there is no explicit statement of when to use it versus render_saved_reply (fetch one reply's body) or list-style siblings. 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_segmentsList segmentsBRead-onlyIdempotentInspect
Saved segments (audiences) with their rules and how many contacts each has now.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real content context by stating results include segment rules and live contact counts, but says nothing about pagination, result caps, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the resource first and the payload second, with no filler. Slightly terse for a tool whose output has no schema to fall back on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with annotations and no output schema, the main burden is describing what comes back; it names rules and contact counts but not the overall shape, ordering, or whether the list is paginated, leaving gaps an agent would hit on first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There are no arguments whose semantics the description would need to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear resource ('Saved segments') and disambiguates the term by equating it with audiences, plus discloses what the result contains (rules and contact counts). It is distinguishable from create_segment/update_segment, though it never explicitly frames itself as the listing counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of related siblings such as count_contacts or search_contacts that an agent might pick instead. Usage is only inferable from the name 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamList the teamARead-onlyIdempotentInspect
Teammates with their role, whether their email is confirmed, two-factor and open conversations; pending invitations; and the seats the plan allows. User ids here are what change_teammate_role and remove_teammate take.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral content beyond them by disclosing exactly what is returned: teammate roles, email-confirmation state, 2FA status, open conversations, pending invitations, and plan seat allowances. It does not mention auth scopes or pagination, but the extra return-shape detail is real value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the returned-data summary is front-loaded. The mid-sentence list ('whether their email is confirmed, two-factor and open conversations') is compressed almost to the point of ambiguity, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the burden of telling the agent what comes back, and it does so by enumerating the teammate fields, invitations, and seat limits. Auth requirements and response shape details are absent, but for a simple read-only roster call this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool applies. The description correctly adds no parameter description, set against 100% schema coverage (an empty object).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (teammates, pending invitations, plan seats) and enumerates the returned attributes, making it clearly a roster/inventory read that is distinguishable from get_workspace_settings or invite_teammate. It never states the verb 'list' itself, relying on the title for that, which keeps it 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.
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 statement, but the closing clause ('User ids here are what change_teammate_role and remove_teammate take') implies the lookup workflow that precedes those mutations. That is a useful usage hint rather than a full routing rule, so it sits at implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_training_proposalsList training proposalsARead-onlyIdempotentInspect
Training → Review: guidance learned from closed conversations, knowledge gaps and article drafts, pending ones first. Approve or dismiss them with approve_training_proposal and dismiss_training_proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 25, at most 200). | |
| status | No | Which proposals (default pending). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuine behavior beyond that: proposals are ordered with pending ones first and their provenance is described (closed conversations, gaps, drafts), which helps the agent interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no wasted words, and the resource definition is front-loaded before the pointer to sibling tools. The 'Training → Review' prefix is slightly cryptic as a navigation hint but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only list with no output schema, the description covers what the items are, how they are ordered, and what tool to use to act on them. Only the absence of any note on result volume/pagination (beyond the limit param) is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and the status enum are fully documented in the schema, and 'pending ones first' merely restates the documented default of pending. The description adds no new syntax or filter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (training proposals) and defines what they are — guidance learned from closed conversations, knowledge gaps and article drafts — which meaningfully distinguishes this list from siblings like list_gaps or get_training_overview. The action verb itself is only implied by the title, so it is clear but not fully self-contained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent away from this read tool toward approve_training_proposal and dismiss_training_proposal for acting on proposals, and states the ordering (pending first). It does not clarify when to prefer this over get_training_overview or list_gaps, so no exclusions beyond the mutation case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_all_notifications_readMark all notifications readAIdempotentInspect
Mark every one of your notifications as read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety and repeat-call profile is covered. The description adds only the bulk scope; it does not disclose what happens to already-read or snoozed notifications, nor 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads verb and scope with zero filler. Nothing could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter mutation whose safety profile is fully carried by annotations, the description is nearly sufficient. The only gap is not explicitly contrasting with the singular mark_notification_read sibling, which matters given how many sibling tools exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-parameter semantics to document. Baseline 4 applies; nothing in the description misrepresents the empty input contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (mark) and resource (notifications) with an explicit scope qualifier ('every one of your notifications'), which implicitly separates it from the singular sibling mark_notification_read. It stops short of naming that sibling explicitly, so an agent must infer the bulk-vs-single distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'every' (use this for a bulk clear rather than one-at-a-time), but the description never states when to prefer this over mark_notification_read or whether it should follow list_notifications. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_conversation_readMark a conversation readAIdempotentInspect
Clear a conversation's unread mark, as opening it in the app does.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=false). The description adds genuine behavioral context beyond them: the effect is exactly the user-visible 'opened' state, which reinforces why the call is idempotent and non-destructive. It stops short of noting auth requirements or whether the change is reversible, keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence that front-loads the action and its object, with the app-opening analogy tacked on as clarifying context. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive, idempotent toggle with a fully documented schema and a complete annotation set, the description covers what an agent needs. Only marginal gaps remain (no mention of permission requirements or behavior when the conversation is already read).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already carries the useful hint 'Conversation id from list_conversations.' The description adds no syntax, format, or sourcing detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Clear a conversation's unread mark'), which pins down exactly what state changes and on which object. The resource naming implicitly separates it from sibling noise such as mark_notification_read and mark_all_notifications_read, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The analogy 'as opening it in the app does' implies the intended usage context, but the description never states when to call this versus alternatives (e.g. update_conversation, snooze_conversation) or any preconditions. Usage 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.
mark_external_mail_spamMark external mail as spamADestructiveInspect
Block an External email's sender for this workspace and delete everything of theirs waiting in External. unblock_sender lifts the block; the deleted emails do not come back.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The id from list_external_mail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes further and discloses exactly what is destroyed (everything of theirs waiting in External), that the effect is workspace-scoped, and critically that the deletion is irreversible ('the deleted emails do not come back') while the block itself is reversible via unblock_sender. That asymmetry is the key behavioral fact 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the destructive scope front-loaded and the reversibility caveat following immediately. Every clause carries non-redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description covers scope of destruction, irreversibility, and the recovery path. There is no undeclared behavior an agent would need in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (emailId) and its schema description already points to list_external_mail at 100% coverage, so the description adds no parameter-level meaning. Baseline 3 is appropriate when the schema fully carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise compound action — block the sender workspace-wide and delete all of their pending External mail — which is more than the name 'mark as spam' conveys on its own. It explicitly names the sibling that reverses it (unblock_sender), so an agent can distinguish it from delete_external_mail 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context (spam from an External sender, workspace-scoped) and points to unblock_sender as the inverse operation. It does not, however, explicitly exclude the adjacent delete_external_mail tool that removes a message without blocking the sender, so the when-not case 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.
mark_notification_readMark a notification readCIdempotentInspect
Mark one of your notifications as read.
| Name | Required | Description | Default |
|---|---|---|---|
| notificationId | Yes | The id from list_notifications. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing on top of that: it does not mention idempotency, reversibility, or that no other notification state is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste. It is efficient, though it is so minimal that there was 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with full schema coverage and annotations carrying the safety profile, this is minimally sufficient. It leaves unaddressed whether the change is reversible, what a failed/unknown id returns, and when to use mark_all_notifications_read instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's description ('The id from list_notifications') already explains both meaning and source. The description contributes 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (mark read) and the specific resource (one of your notifications), so the action is unambiguous. However, it never names its closest sibling mark_all_notifications_read or explains why an agent should prefer this one for a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no precondition (e.g. the notification must be unread), and no routing to the sibling mark_all_notifications_read or snooze_notification. The agent must infer everything 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.
merge_conversationsMerge two conversationsADestructiveInspect
Merge a conversation into another from the same contact: every message, file and pending email moves to the target, tags combine, and the merged one closes. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| targetId | Yes | The conversation that keeps everything (from list_merge_candidates). | |
| conversationId | Yes | The conversation to merge away. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes further by enumerating exactly what moves (messages, files, pending email), how tags are handled, and that the source conversation closes. 'This cannot be undone' quantifies the irreversibility beyond the bare hint, which is exactly what an agent needs before calling a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the operation, then the side effects, and ends on the irreversibility warning. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter mutation with no output schema, it covers preconditions, side effects and reversibility. It does not say what the call returns or confirm success behavior, a minor gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are fully documented there, including the list_merge_candidates hint, so the baseline is 3. The description adds only the same-contact constraint on the pair, which is useful but marginal against what the schema already supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (merge) and resource (conversation) and pins the direction of the operation — 'a conversation into another' — so the agent can tell conversationId and targetId apart. It also states the scope constraint (same contact), which no sibling tool shares.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'from the same contact' establishes the precondition that makes a merge valid, which is real usage context. It stops short of naming alternatives (e.g. merge_duplicate_contacts, or the list_merge_candidates sibling referenced only in the schema), so the routing guidance is contextual rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_duplicate_contactsMerge duplicate contactsADestructiveInspect
Merges every set of contacts that share an email address into one contact, keeping their conversations, events and the strictest consent. It cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes meaningfully beyond the annotations by disclosing the irreversible nature ('cannot be undone'), the merge resolution policy (conversations, events, strictest consent retained), and that it operates on all duplicate sets at once rather than a chosen subset. It does not mention permissions or volume/rate constraints, but the annotations already cover the destructive profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the action and scope front-loaded and the irreversible warning placed last for emphasis. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description is nearly sufficient: it explains behavior, scope, merge policy, and irreversibility. Missing only what happens on failure or partial merges and whether any confirmation/dry-run path exists, which leaves a small gap for a destructive bulk mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly signals that no input is required because scope is implicit (all duplicate sets).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (merges) and resource (contacts sharing an email address), plus the exact scope: 'every set' rather than a caller-selected pair. This distinguishes it cleanly from list_merge_candidates, count_duplicate_contacts, and merge_conversations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies (you have duplicates and want them consolidated) but never states prerequisites, exclusions, or the natural alternatives: list_merge_candidates / count_duplicate_contacts for inspection before committing. Usage is inferable but not guided, and the destructive bulk semantics deserve explicit caution framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_external_mail_to_inboxMove external mail to the inboxAInspect
Start a conversation from an External email: the sender becomes a contact and the email its first message. Nothing is sent to them.
| Name | Required | Description | Default |
|---|---|---|---|
| emailId | Yes | The id from list_external_mail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic profile (not read-only, not destructive, not idempotent), leaving the description to explain what actually happens. It does add real side-effect context: a contact record is created and the email is ingested as the conversation's first message, plus the non-obvious negative disclosure that no email is sent to the sender. It omits the non-idempotency implication (re-running may create a duplicate contact) and whether the item leaves the external mail list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core effect (what the email becomes) is front-loaded before the reassuring 'nothing is sent' clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only generic annotations, the description carries most of the burden, and it covers the essential outcome and the key side effect. It is slightly thin on post-conditions for the original external mail record and on repeat-invocation behavior, but nothing essential for calling the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter and the schema description coverage is 100%, with emailId documented as coming from list_external_mail. The description adds nothing beyond the schema, which is the expected baseline when the schema already does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific transformation: an External email becomes the first message of a conversation and its sender becomes a contact. That distinguishes it from sibling mutations such as delete_external_mail or mark_external_mail_spam, though it never names an alternative explicitly and the 'move to inbox' framing in the name is only loosely echoed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the scenario described (an External email exists and you want it turned into a conversation), and 'Nothing is sent to them' implicitly routes the agent away from reply_to_conversation. There is no explicit when-to-use versus when-not-to-use statement or prerequisite (e.g. does the mail need to be unread, non-spam).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_journeyPause a journeyBDestructiveInspect
Stops new people entering and holds the people in it where they are.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false. The description adds genuinely useful context that annotations cannot: people already in the journey are held in place rather than removed or advanced. It stops short of stating reversibility or what happens to contacts mid-step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence describing the operational effect with zero filler. Nothing is repeated from the title and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-mutating journey tool with annotations covering the safety profile and a fully documented single parameter, the core effect is covered. Missing is the reversibility signal (pause vs. permanent stop) and any note on in-flight contacts, which an agent managing journey lifecycle would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, and the schema already tells the agent to get journeyId from list_journeys. The description adds nothing about the parameter, which is acceptable given the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific effect: it stops new entrants and freezes current participants in place. That distinguishes it well from delete_journey and stop_journey_run in spirit, but it never names the sibling that resumes the journey, so the 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.
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. An agent must infer on its own that resume_journey reverses this, that delete_journey is the permanent counterpart, and that stop_journey_run affects a single run rather than the whole journey.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_proactive_messagePause a proactive messageBDestructiveInspect
Stops showing a live message (paused), or returns it to draft.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds real context beyond that by naming the two resulting states (paused vs draft), which is a mutation-relevant distinction. However it omits what happens when status is omitted, whether pausing is reversible, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the effect front-loaded and no filler. It is efficient, though arguably over-compressed for a mutation tool whose routing and default behavior remain unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small two-parameter mutation with no output schema, the definition is minimally adequate. It still leaves two operational questions unanswered: the default status when the optional parameter is omitted, and how this differs from update/delete/publish siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: messageId is documented in the schema ('Proactive message id from list_proactive_messages') but the status enum has no schema description. The description partially compensates by naming 'paused' and 'draft', the two enum values, but it does not explain the default when status is omitted, which is the key ambiguity for this optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete effect ('Stops showing a live message') and maps the two possible end states, paused and draft, to the tool's outcome. It is clear what the tool does, but it never distinguishes itself from close siblings such as update_proactive_message, publish_proactive_message, or delete_proactive_message, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says whether this is the right call versus update_proactive_message or delete_proactive_message, nor whether the message must already be live or published. Only the bare effect is described, leaving routing between siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_newsletterPreview a newsletterARead-onlyIdempotentInspect
Renders a saved newsletter as one contact (or you) would get it: subject, preheader, the plain-text version, merge fields that print nothing, and personalization problems. Nothing is sent.
| Name | Required | Description | Default |
|---|---|---|---|
| variant | No | Which subject of an A/B test. | |
| contactId | No | Preview as this contact (optional). | |
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent, and closed-world, so the safety profile is covered. The description adds genuine context beyond that: what the render includes (merge fields that print nothing, personalization problems) and the explicit assurance that nothing is sent. It does not mention rate limits or whether previews affect any send metrics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, verb front-loaded, with the output contents listed after a colon and the no-side-effect guarantee in a short trailing clause. No filler and nothing an agent needs is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return content and does so concretely, plus it rules out side effects. What's missing is minor: whether the preview consumes test-send quota or reflects the same render pipeline as an actual send.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: it clarifies that omitting contactId previews as 'you', and that a preview is rendered 'as one contact' would receive it. The variant enum and campaignId sourcing are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Renders a saved newsletter') and enumerates exactly what the render contains (subject, preheader, plain-text, merge fields, personalization problems). The closing 'Nothing is sent' implicitly contrasts it with send_test_newsletter, but no sibling is named outright, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the pre-send inspection step and that contactId previews as a specific person. There is no explicit 'use this instead of X when...' guidance against send_test_newsletter, check_newsletter, or get_newsletter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_journeyPublish a journeyADestructiveInspect
Puts the journey (or its draft changes, as the next version) live: people who meet its trigger enter and its emails go out. People already in it finish on their version.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description earns credit by going beyond that: it explains that real emails go out to people who meet the trigger, that uncommitted draft changes are promoted to the next version, and that people already in the journey are not disrupted. That is meaningful consequence detail an annotation flag cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and followed by the two consequences that matter most (who enters, who is unaffected). 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and a fully described two-parameter schema with no output schema required, the description covers the essential outcome and side effects. It stops short of noting what happens if the journey has no draft changes or fails validation, a minor gap for a high-consequence publish action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including an unusually detailed confirm two-step flow, so the schema already does the heavy lifting. The description adds no parameter-level syntax or format detail beyond what the schema provides, which lands at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (publish), the resource (journey), and the concrete effect: draft changes become the next live version, triggered people enter, and emails send. This is materially different from siblings like resume_journey, pause_journey, test_journey, and discard_journey_draft, and an agent can distinguish them 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when this applies (a journey with draft changes ready to go live) but never names alternatives such as test_journey for a dry run or resume_journey for a paused-but-published journey. The real when-to-use guidance lives in the schema's confirm parameter description, not in the tool description, so usage guidance here is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_proactive_messagePublish a proactive messageADestructiveInspect
Puts a message live: visitors who match its audience and pages start seeing it in the widget.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds real behavioral value beyond them by describing the outward effect — real visitors begin receiving the message in the widget — which is a consequence the hints alone don't convey. It omits reversibility (that pause_proactive_message exists to undo it) and immediacy of the change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and then the consequence, with no filler or restatement of the title. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a publish/mutation tool with full annotation coverage, complete schema documentation of the confirm gate, and no output schema, the description supplies the key missing piece an agent needs: what publishing actually does to end users. Minor gaps remain around reversibility and whether the change takes effect immediately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both messageId and the confirm safety gate are fully documented in the schema itself. The description adds nothing about parameter meaning, format, or the confirm workflow, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Puts a message live") plus the material effect (visitors matching the audience and pages start seeing it in the widget). It distinguishes this from pause/test implicitly through the effect, but never names the sibling operations (test_proactive_message, pause_proactive_message, update_proactive_message) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the activation step for an already-created and targeted message. There is no explicit statement of when to use it rather than test_proactive_message or pause_proactive_message, and no prerequisites such as the message needing to be created first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_conversationRead an AI agent's conversationARead-onlyIdempotentInspect
Read one AI agent conversation message by message: what was asked, what the agent said, which articles it cited and which tools it used. Use it to find why an answer went wrong. Contact details are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The conversation id from list_agent_conversations. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral context: the response is returned message by message, includes cited articles and tool usage, and contact details are redacted. It does not describe pagination or truncation behavior for long conversations, which is the main 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first describes what is read and returned, the second states the use case and the redaction caveat. Nothing is wasted and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by describing the return content (messages, cited articles, tools used) and the redaction of contact details. It is slightly incomplete about how large conversations are returned (paging or limits) for an iterative 'message by message' read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema, including the source tool for each id. The description adds no syntax or format guidance beyond what the schema already 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one AI agent conversation message by message') and enumerates the content returned: questions asked, agent replies, cited articles, and tools used. The 'AI agent' qualifier helps separate it from the similarly named get_conversation, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one clear use case ('Use it to find why an answer went wrong') and implicitly follows list_agent_conversations via the id parameter, but offers no when-not guidance and does not distinguish this from get_conversation for human support threads, which an agent could easily confuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_articleRead a help articleARead-onlyIdempotentInspect
Read the full markdown body of one published help center article by its slug, for example "billing/exporting-invoices".
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The article slug, including its collection. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds the useful detail that the response is the full markdown body rather than metadata, but says nothing about unpublished/missing article behavior or errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb, resource, scope ('one published article'), and lookup key, then supplies the format example. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With both parameters fully documented and no output schema, the description adequately covers what is returned (markdown body) and how to identify the article. Only edge-case behavior for missing or unpublished slugs is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, and the description lifts this by giving a concrete slug example ('billing/exporting-invoices') that demonstrates the collection-prefixed format required, which is more actionable than the schema's prose alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (read) plus specific resource (one published help center article) and even the return format (full markdown body). It does not, however, distinguish itself from close siblings like read_article_source or list_articles, which 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'published' implicitly scopes usage to live articles versus drafts or source, and requiring a slug plus productId implies this is a lookup-by-identifier read. But there is no explicit statement of when to use this instead of read_article_source, list_articles, or search_articles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_article_sourceRead an article as writtenARead-onlyIdempotentInspect
Read one help article as the editor opens it, drafts included: its title, description, status, collection and Markdown body. Provides the current saved content for reviewing or preparing an edit.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The article slug, including its collection, e.g. "billing/download-invoices" (from list_articles). | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious behavior: that drafts are included and that this is the source as the editor sees it, which is context the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the return fields listed up front and the use case trailing. Tight, though 'Provides the current saved content' is somewhat redundant with the enumeration that precedes it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does it well by naming the five fields returned. What is missing is explicit disambiguation from read_article, the closest sibling in a crowded article toolset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both slug and productId fully documented (including provenance from list_articles/list_products). The description adds no parameter detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (read) and resource (help article), and it enumerates the returned fields (title, description, status, collection, Markdown body). The phrase 'as the editor opens it, drafts included' hints at the distinction from the sibling read_article, but it never names that sibling, so an agent must infer which article-reader returns published vs source content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing clause 'for reviewing or preparing an edit' implies when to reach for this tool, but there is no explicit when-not or alternative named. With a near-identical sibling (read_article) present, the lack of routing guidance 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.
register_mail_domainAdd an email domain to Resend againAInspect
Add a domain HelpWell knows but the Resend account no longer has (for example deleted in Resend) back to Resend.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Email domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds the scenario that motivates the call, but says nothing about what the call does to the existing domain record, whether DNS/verification state is preserved, or what happens if the domain still exists in Resend — gaps that matter for a non-idempotent write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the qualifying scenario front-loaded after the action, and no filler. Slightly awkward compression ('HelpWell knows') keeps it just short of ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage, annotations covering safety, and no output schema, the description is adequate but thin: it omits where domainId comes from and the observable outcome (does the domain return in a pending/verified state?). Those are the remaining facts an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents 'domainId'. The description implies the id refers to a domain known in HelpWell but doesn't say where the agent obtains it (e.g., list_resend_domains vs. an internal listing), so no lift beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a domain ... back to Resend') and scopes it to a precise scenario: a domain HelpWell already knows but Resend no longer has. That scenario differentiates it from the sibling 'add_mail_domain' by implication, though it never names the alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use condition (the domain was deleted in Resend but still exists in HelpWell), which is exactly the discriminator an agent needs against add_mail_domain / reuse_resend_domain / update_mail_domain. No explicit when-not or named alternative, 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.
remove_help_center_domainRemove a help center domainADestructiveInspect
Disconnect a custom domain from the help center. The help center stops answering at that address; adding it again needs new DNS verification.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Help center domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description goes beyond them by disclosing the observable effect ('the help center stops answering at that address') and the recovery cost (re-adding requires fresh DNS verification), which is genuinely useful context an agent cannot infer from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the consequence following. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema tool whose annotations already cover destructiveness and non-idempotency, the description supplies the effect and reversal cost. The only minor gap is not pointing to the tool that yields a valid domainId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single domainId parameter, so the schema already carries the parameter meaning. The description adds nothing about which id to supply or where to obtain it (e.g., list_help_center_domains), so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Disconnect a custom domain from the help center.' The help-center scoping cleanly separates it from the similarly named remove_mail_domain and remove_redirect siblings, though it does not name those siblings explicitly to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the operation itself, and the description adds a useful consequence ('adding it again needs new DNS verification') that tells the agent this is not trivially reversible. However, it names no alternative tool and gives no explicit when-to-use/when-not guidance despite siblings like set_primary_help_center_domain and check_help_center_domain existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_mail_domainRemove an email domainADestructiveInspect
Remove an email domain from HelpWell. Email that used it stops until another domain is chosen. It stays in the Resend account.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Email domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real value beyond that: it discloses the operational consequence (email stops until another domain is selected) and that the domain is retained in the Resend account, implying removal here is not an irreversible deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all load-bearing: action, consequence, and retention scope, with the consequence front-loaded. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param destructive mutation with annotations present and no output schema, the description supplies the key consequence and reversibility context an agent needs. Minor gaps remain (e.g., whether inbound mail to the domain is dropped or bounced, and whether re-adding restores delivery), but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 100% schema description coverage, so the schema fully documents 'domainId'. The description adds no format, source, or lookup guidance beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove an email domain from HelpWell') and adds scope detail ('It stays in the Resend account') that separates it from delete-style or disconnect_resend siblings. It does not explicitly name any sibling, but the semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive framing and the note that email stops until another domain is chosen, which hints at when removal is appropriate. However, it never states when to prefer this over update_mail_domain or disconnect_resend, nor any prerequisites or confirmations required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_redirectRemove a help center redirectADestructiveIdempotentInspect
Stop redirecting one old address. Pass "from" exactly as list_redirects shows it.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The old address, as listed. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral constraint not in the annotations: the "from" value must match exactly what list_redirects returned, which flags a fragility/risk of mismatch. It does not otherwise add context such as reversibility or side effects beyond what annotations state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the one thing the agent must get right. Zero filler, though the wording is terse enough that it reads more like a note than a full definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully-required destructive tool with complete schema coverage and annotations covering destructiveness and idempotency, the description supplies the essential missing piece — that "from" must be copied verbatim from list_redirects. No output schema exists, so return values need not be explained. It is adequate, if minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description reinforces the exact-match requirement for "from" and points at list_redirects as the source, but adds no syntax, format, or validation detail beyond what the schema says ("as listed").
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource in plain language ("Stop redirecting one old address"), which an agent can easily distinguish from the sibling add_redirect. The word "one" sets the single-item scope. It stops short of explicitly naming the counterpart tool or routes, so it is clear but not sibling-differentiating beyond the obvious name contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Pass 'from' exactly as list_redirects shows it" implies a workflow — call list_redirects first to obtain the exact value — which is useful implied usage guidance. However, there is no explicit statement of when to use this instead of alternatives, prerequisites, or what condition makes removal appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_teammateRemove a teammateADestructiveInspect
Remove someone from the workspace; their access ends at once. Their open conversations go to reassignTo (a teammate who can handle conversations) or back to the unassigned queue.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The teammate id from list_team. | |
| reassignTo | No | Teammate id to give their open conversations to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=false. The description adds useful behavioral context beyond that: access ends immediately, and open conversations are reassigned or returned to the unassigned queue.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The immediate removal effect is stated first, followed by the conversation-handling consequence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with annotations covering safety and a simple two-parameter schema, the description is nearly complete: it explains access removal and conversation reassignment. Minor gaps remain, such as whether removal is reversible or requires re-invitation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning for reassignTo by explaining it receives the removed teammate's open conversations, and clarifies the fallback when it is omitted: conversations go back to the unassigned queue.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove someone from the workspace'. The effect is made concrete with 'their access ends at once', distinguishing it from siblings like change_teammate_role or revoke_invitation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what happens to open conversations but gives no explicit guidance on when to choose this tool versus alternatives such as change_teammate_role or revoke_invitation. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_saved_replyFill in a saved replyAInspect
A saved reply with its variables filled in for one conversation (the customer's first name, your name, the product), ready to send with reply_to_conversation. Counts as a use.
| Name | Required | Description | Default |
|---|---|---|---|
| savedReplyId | Yes | Saved reply id from list_saved_replies. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The line 'Counts as a use' is genuine side-effect context that explains why annotations mark this non-readOnly and non-idempotent — quota consumption is exactly the behavior an agent needs to know before invoking. It doesn't cover auth requirements, but annotations already carry the safety profile, so this exceeds the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the workflow hint and the 'counts as a use' caveat both earn their place. Slightly terse given it omits any statement of what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param render tool with no output schema, the description should clarify what comes back (the rendered text, a preview object, etc.). 'Ready to send' gestures at it but never states the return shape, leaving a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both savedReplyId and conversationId are already fully documented in the schema. The description's mention of variable types (first name, your name, product) is contextual flavor rather than parameter guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action on a specific resource: renders a saved reply with its variables filled for one conversation. It distinguishes itself operationally by naming reply_to_conversation as the downstream step, though it doesn't differentiate from near-siblings like draft_reply_with_ai or use_email_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the workflow by noting the result is 'ready to send with reply_to_conversation,' which tells the agent this is a pre-send step. However, it gives no explicit when-not guidance and doesn't contrast against alternatives that also produce send-ready content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_gapReopen an unanswered questionAIdempotentInspect
Put a dismissed or drafted question back on the list of questions to answer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The gap id from list_gaps. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety and repeatability profile is covered. The description usefully adds the eligible source states (dismissed or drafted), but says nothing about side effects on draft content, permissions, or the outcome of calling it on an ineligible question.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action and the eligible states front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter state toggle whose parameters are fully documented and whose safety profile is carried by annotations, the description covers what an agent needs. It could still note whether reopening restores prior draft content or fails on already-open questions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both productId and id are documented in the schema, including the source tools (list_gaps, list_products). The description adds no format or constraint detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (put back on the list) applied to a specific resource (a dismissed or drafted question), which an agent can readily separate from dismiss_gap and resolve_gap by state. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the state precondition: reopen applies to questions that are dismissed or drafted. There is no explicit when-to-use versus alternatives, no statement of what happens if the question is already open, and no prerequisite call ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_mail_webhookRepair the email webhookAIdempotentInspect
Re-create the webhook in the workspace's Resend account that tells HelpWell about deliveries, bounces and replies, when the setup reports it missing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), idempotent, non-destructive, closed-world, so the safety profile is covered. The description usefully adds the blast radius (the workspace's Resend account) and the webhook's role, but says nothing about permissions needed, failure behavior, or whether an existing webhook is replaced — real 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the qualifying condition placed at the end. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless repair action with annotations covering safety and idempotency, the description supplies enough to call it correctly: what it does, where, and the triggering condition. It omits only what happens afterward (result/failure state), which is a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; the description has nothing parameter-level to add and correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (re-create), a specific resource (the webhook in the workspace's Resend account), and its function (notifying HelpWell about deliveries, bounces, replies). This clearly separates it from sibling Resend tools like register_mail_domain, check_mail_domain, or disconnect_resend, which operate on domains or the connection rather than the webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: use it 'when the setup reports it missing.' That is clear usage context, but it names no alternative (e.g. get_setup_status / get_email_setup for diagnosing) and states no exclusions, so it stops short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_conversationReply to a customerADestructiveInspect
Send a teammate reply to the customer in a conversation. It shows in their chat widget; a customer who last wrote by email gets it by email right away, and a chat reply not seen within 15 minutes is emailed to them once. Without confirm it shows the recipient and channel. This sends a customer-facing reply, not an internal note.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The reply text (plain text, up to 12,000 characters). | |
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| articles | No | Help articles to attach as cards (from search_articles): slug, title, collection. | |
| requestId | No | Optional UUID that makes the call safe to repeat: the same id never posts twice. Left out, a new one is used. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (destructive, non-idempotent, open-world). The description goes well beyond them by disclosing delivery channels (chat widget vs. email), the 15-minute unseen-reply email fallback, and the preview-without-confirm behavior — exactly the kind of operational context an agent needs before sending a customer-facing message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by channel behavior and the internal-note exclusion. No filler; every clause carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the delivery behavior, the dry-run/confirm protocol, and the scope boundary, and the annotations cover safety. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter (body, confirm, articles, requestId, conversationId) is already documented in the schema. The description reinforces confirm's dry-run semantics but adds no syntax or format detail beyond what the schema states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (send/reply) and resource (a teammate reply to the customer in a conversation), and explicitly distinguishes the action from its nearest sibling concept with 'not an internal note' (add_note). 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use context by contrasting a customer-facing reply against an internal note, and explains the confirm gating flow ('Without confirm it shows the recipient and channel'). It stops short of naming the sibling tool add_note explicitly or listing other exclusions, but the selection guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_summaryRead the support summaryARead-onlyIdempotentInspect
Headline support numbers for a period: how many conversations, how many the agent resolved, votes, cost, and the topics people asked about most.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Defaults to "30d". | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds real value by describing the returned content (the metric set), which matters because 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource front-loaded ahead of the metric list. It earns its place with no filler, though the colon-list format is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back, and it does list the metric categories. It is essentially complete for a two-parameter read-only summary tool, with only marginal gaps around aggregation scope or period boundary behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (productId and range with its enum and default) are already fully documented. The description's 'for a period' only loosely gestures at the range parameter and adds no syntax or default 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (headline support numbers for a period) and enumerates the metrics returned: conversations, agent-resolved count, votes, cost, and top topics. That is far more specific than a tautology, though it doesn't explicitly differentiate itself from siblings like get_reports or get_suppression_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a period' implies a reporting/overview use case, so usage is inferable, but there is no explicit when-to-use statement, no exclusions, and no pointer to which sibling to pick when the agent wants granular reports rather than a headline summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resend_invitationResend an invitationADestructiveInspect
Email a pending invitation again with a new link and seven more days; the old link stops working.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| invitationId | Yes | From list_team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is known; the description adds genuinely useful detail by saying exactly what is destroyed (the old link stops working) and that expiry is extended by seven days. It stops short of stating permission requirements or that an email is dispatched to the invitee, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler. The core action is front-loaded and each clause (new link, extended window, old link dead) carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and annotations that already flag destructive/non-idempotent behavior, the description covers action, effect and lifetime. Minor gaps remain: no mention of what happens if the invitation is no longer pending, and no pointer to the approval flow that the schema introduces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds a real constraint the schema lacks: the invitationId must reference a *pending* invitation, narrowing the valid value set. The two-step confirm gate is documented only in the schema, so no additional param credit there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Email a pending invitation again') plus the concrete outcome (new link, seven more days, old link invalidated). The word 'pending' scopes the operation so an agent can separate it from invite_teammate (new invitation) and revoke_invitation (cancellation) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'pending invitation' precondition implies when the tool applies, but the description never names an alternative or an explicit when-not (e.g. use revoke_invitation to cancel, invite_teammate to create). The confirmation flow that governs invocation lives in the schema, not here, so guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_my_notification_preferencesReset my notification preferencesADestructiveIdempotentInspect
Return the signed-in person's notification preferences to the team defaults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description still adds real value by stating the resulting state is the 'team defaults', telling the agent that any existing personal customizations are overwritten rather than merely toggled. It stops short of saying whether the change is reversible or takes effect immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and the scope, with no filler or redundant restatement of the title. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter mutation with no output schema, the description supplies the essential fact: personal preferences are replaced by team defaults. Annotations cover destructiveness and idempotency, so the only minor gap is whether the reset is undoable or instantaneous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no argument semantics for the description to carry. Baseline 4 applies; nothing in the schema is left unexplained and nothing needs compensating for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('return/reset') and a specific resource ('the signed-in person's notification preferences') plus the target state ('team defaults'). This distinguishes it implicitly from update_my_notification_preferences and get_notification_preferences, but it never names those siblings to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this when you want to discard personal overrides and fall back to team defaults rather than set custom values. There is no explicit when-to-use/when-not statement, no mention of prerequisites, and no pointer to update_my_notification_preferences or update_team_notification_defaults as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_gapMark a question answeredAInspect
Mark an unanswered question (from list_gaps) as drafted against the article that now answers it. The article must exist first; create_article with gapId does this by itself.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The gap id from list_gaps. | |
| productId | Yes | Product id from list_products. | |
| articleSlug | Yes | Slug of the article that answers it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, and openWorld=false, so the mutation and safety profile is covered. The description adds the ordering constraint (article must pre-exist), but says nothing about what happens to the gap record afterward or whether re-running is safe, so it only marginally exceeds the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loading the action and following with the prerequisite and the shortcut alternative. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-parameter mutation tool with no output schema, the definition covers the action, the preconditions, and the alternative workflow. The main omission is any note about reversibility or the reopen_gap counterpart.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, productId, and articleSlug are already fully documented in the schema. The description names 'gapId' in passing and refers to the answering article but adds no format or constraint detail beyond the structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with scope: marking an unanswered question from list_gaps as drafted against the answering article. It is clearly distinguishable from siblings like dismiss_gap, reopen_gap, and create_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite and an alternative path: the article must exist first, and create_article with gapId accomplishes both steps. It does not, however, contrast against dismiss_gap or reopen_gap, which are the nearest siblings an agent might confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_article_versionRestore an article versionAInspect
Bring an article back to what one of its earlier versions said. It is saved as the newest version, so nothing in the history is lost and the restore can be undone the same way.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The article slug, including its collection, e.g. "billing/download-invoices" (from list_articles). | |
| productId | Yes | Product id from list_products. | |
| versionId | Yes | The version id from list_article_versions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic profile (not read-only, not destructive, not idempotent, not open-world). The description adds real behavioral value: the restored content is written as the newest version, history is preserved, and the change is itself reversible — which meaningfully clarifies the non-idempotent annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the history/undo consequence second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation with no output schema, the description covers the essential effect and reversibility. It does not state whether restoring a version republishes it to the live help center or what permissions are needed, which are the remaining gaps for an article-mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented there (slug with collection, productId, versionId with source tool). The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (restore an article to an earlier version), which separates it cleanly from update_article and list_article_versions. The phrasing 'bring an article back to what one of its earlier versions said' is slightly indirect but unambiguous once read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is for reverting content, but the description never says when to prefer restore over update_article, nor that it requires an existing version id from list_article_versions. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_conversationRestore a deleted conversationAIdempotentInspect
Bring a conversation deleted with trash_conversation back to the inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description only needs to add context. It adds the pairing with trash_conversation and the resulting state (back in inbox), but says nothing about permissions, retention limits, or what happens on a restore of an already-restored conversation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and outcome, zero filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, well-annotated tool with no output schema, this is nearly complete — the agent knows what it does, when, and on what input. Only the failure/edge-case behavior (permanently deleted, already restored) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single conversationId parameter is fully documented in the schema (including its source, list_conversations). The description adds no format or sourcing 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Bring ... back") plus the resource (a conversation) and the destination ("to the inbox"). It also names the inverse sibling trash_conversation, so an agent can immediately distinguish it from delete/archive siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition for use is clear: it applies to conversations deleted via trash_conversation. However, it gives no explicit exclusions (e.g., what to do if the conversation was permanently removed or the trash retention window expired) and doesn't mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_journeyRestore a deleted journeyAInspect
Brings a deleted journey back, paused, so nobody enters until it is published.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only, non-destructive, non-idempotent, closed-world, so the safety profile is already covered. The description adds genuinely new behavioral context: the restored journey lands in a paused state and will not admit entrants until published, which tells the agent the post-condition. It doesn't say what happens if the journey isn't deleted or isn't found, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the action and its consequence front-loaded; every clause 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.
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 what it does and the resulting state, which is what an agent needs to call it correctly. It stops short of covering error/failure conditions or whether the journey keeps its original contacts and settings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single journeyId parameter is documented in the schema as coming from list_journeys. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Brings a deleted journey back" is a specific verb+resource, and the description adds the resulting state (paused). It implicitly separates itself from delete_journey/resume_journey/publish_journey by framing the operation as recovery of a deleted journey, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "deleted journey" implies the prerequisite (the journey must already be deleted), and "until it is published" hints that publish_journey is the follow-up step. However, there is no explicit when-to-use/when-not guidance or direct comparison with the closely-related resume_journey and publish_journey tools, which is a real risk given the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_journeyResume a journeyADestructiveInspect
Turns a paused journey back on with its live version: people enter again and its emails go out.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds the concrete consequence: people re-enter and emails are sent again. That is real behavioral value beyond the annotation flags, though it omits the confirm-preview flow and irreversibility details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that front-loads the action and the side effect. No filler and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and full annotation coverage, the description supplies the missing 'what actually happens' context. It stops short of describing prerequisites (e.g. journey must be paused) or reversibility, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a detailed confirm parameter that explains the preview-then-confirm pattern, so the schema carries the parameter burden. The description adds nothing about journeyId or confirm; baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource (turn a paused journey back on) and describes the effect, which separates it from pause_journey and publish_journey. The 'with its live version' clause gestures at the distinction from restore_journey but does not fully spell it out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'paused journey' — the agent can infer this applies only to paused journeys. But no explicit when-to-use guidance and no mention of sibling alternatives like restore_journey or publish_journey, so routing 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.
resume_marketing_emailResume marketing emailADestructiveInspect
Lift a pause on marketing email (set after high bounces or complaints). Queued newsletters and journey emails then go out to contacts again.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds genuine consequence detail beyond that: queued newsletters and journey emails will actually go out to contacts again, which is the critical thing an agent needs before acting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the action front-loaded and the consequence following immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-boolean mutation with a strong schema and annotations, the description supplies the missing 'what actually happens' context. It could still note the blast radius (all contacts on the marketing list) or irreversibility, but nothing essential is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the 'confirm' parameter is documented in detail in the schema itself (dry-run semantics, pass true only after approval). The description adds nothing about parameters, so the baseline 3 for full schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ('Lift a pause on marketing email') and clarifies the resource scope, distinguishing it from the similarly named resume_journey sibling. An agent knows exactly which switch this flips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical explains the typical trigger ('set after high bounces or complaints'), which implies when the tool is relevant, but it never states when to prefer this over resume_journey or pause_proactive_message, nor any precondition for flipping the switch. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retake_app_screenshotsRetake app screenshotsBInspect
Take the app's screenshots again now, for example after a visible change.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=false, so the agent knows this is a mutating, non-idempotent, non-destructive action. The description adds only the trigger context ('after a visible change') and does not disclose whether screenshots are replaced, whether the operation is async, or how long it takes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no wasted clauses. Slightly vague wording ('now', 'for example') keeps it from being maximally sharp, but it is well-sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description is minimally adequate but omits useful context such as whether this overwrites existing screenshots, whether it is asynchronous, or what happens on failure. It leaves the agent able to invoke the tool but not fully informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Product id from list_products'), so the schema fully documents the input. The description adds no additional meaning about productId, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('take the app's screenshots again'), which is distinct from the read-only sibling get_app_screenshots and the config sibling update_app_screenshots. It is clear what the tool does, though it never names those siblings explicitly to remove ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for example after a visible change' implies a trigger condition, giving some when-to-use signal. However, it offers no when-not guidance, no prerequisites, and does not contrast against get_app_screenshots or update_app_screenshots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_product_setupRetry product setupAIdempotentInspect
Try again to set up a hosted product whose setup failed. Returns the new status.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered and the description is consistent with it. The description adds the return behavior ("Returns the new status"), which is meaningful because no output schema exists, and it discloses nothing contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the trigger condition and outcome front-loaded, with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 trigger, the effect, and the return value. It omits edge behavior such as what happens if the retry fails again or whether setup is asynchronous/long-running, which are the only relevant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the single productId parameter is already documented including its source (list_products). The description adds no further syntax, format, or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retry setup of a hosted product) and the precondition (setup failed), so the action is unambiguous. It does not differentiate itself from near-neighbors such as create_product, update_product, or retry_training_publish, which is the only thing keeping 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"whose setup failed" gives a clear, actionable trigger condition for when to use this tool rather than a fresh setup. No explicit exclusions or named alternatives (e.g. get_setup_status to verify failure first) are provided, 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.
retry_training_publishRetry publishing approved guidanceAInspect
Try again to open the pull request for approved guidance whose publication to the connected repository failed. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| proposalId | Yes | The id from list_training_proposals. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a non-read-only, non-destructive, non-idempotent write scoped to the local system. The description adds value beyond them by disclosing the auth requirement ('Admins only') and the actual effect (opening a pull request in the connected repository), plus the failure precondition that explains why a retry is needed. It does not explain the non-idempotency consequence (e.g., possible duplicate PRs).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and its precondition come first, the permission gate second. No filler, nothing restating the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the definition covers purpose, precondition, and authorization, which is enough to call it correctly. It leaves minor gaps around what a successful retry returns and whether repeated retries risk duplicate pull requests, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents that the id comes from list_training_proposals. The description adds no syntax, format, or sourcing detail beyond the schema, so the baseline 3 applies for a param fully carried by structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('try again to open the pull request'), the resource (approved guidance published to the connected repository), and the precise precondition (a prior publication attempt failed). This cleanly distinguishes it from approve_training_proposal and dismiss_training_proposal, which operate on proposals rather than on a failed publish step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger condition is explicit: use this when publication to the connected repository has already failed and you want to retry. 'Admins only' adds a role gate. It stops short of naming a pre-step (e.g., 'requires the proposal to already be approved') or an alternative, so it is clear context without full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reuse_resend_domainReuse a Resend domainCInspect
Use a domain that is already in the Resend account (from list_resend_domains).
| Name | Required | Description | Default |
|---|---|---|---|
| purposes | Yes | What the domain is for: support (sends support replies), marketing (sends newsletters and journey email), replies (receives customer replies). | |
| resendDomainId | Yes | The id from list_resend_domains. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds no behavioral context beyond that: it doesn't say what reusing does to the domain, whether it is reversible, whether it affects other workspaces, or what the purposes array changes operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the action and the source of the id, with zero filler. It is efficient, though arguably terse to the point of under-specification for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-read-only tool with no output schema and two fully schema-documented parameters, the description covers the id provenance but leaves the core effect of the operation unexplained. An agent can call it correctly, but not predict what reusing the domain does to the account.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both resendDomainId and the purposes enum are fully documented in the schema. The description only echoes the id's source ('from list_resend_domains'), adding no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (a Resend domain already in the account) and implies the action is reusing rather than creating one, which implicitly contrasts with add_mail_domain/register_mail_domain. However, 'use a domain' is a vague verb that never says what reuse actually does — attach it to this workspace, enable sending, etc. It restates the title and only adds the provenance hint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'from list_resend_domains' implies the caller must first run list_resend_domains to obtain the id, which is useful sequencing guidance. But it gives no when-to-use vs the sibling domain tools (add_mail_domain, register_mail_domain, update_mail_domain) and no exclusions or prerequisites beyond the id source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_invitationRevoke an invitationADestructiveInspect
Cancel a pending invitation; its link stops working.
| Name | Required | Description | Default |
|---|---|---|---|
| invitationId | Yes | From list_team. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds one concrete consequence ('its link stops working'), which is genuinely useful, but says nothing about reversibility, error behavior on non-pending invitations, or whether the teammate can be re-invited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause, front-loaded with the action and its consequence, with zero filler. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, non-open-world mutation whose annotations already cover destructiveness, the description is largely sufficient. The only remaining gap is failure/edge behavior (what happens if the invitation is already accepted or expired), which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents its source ('From list_team'), so the baseline is 3. The description adds no meaning about invitationId beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Cancel a pending invitation') and adds scope ('pending'), which signals this only applies to invitations not yet accepted. It does not explicitly distinguish itself from the closely related siblings resend_invitation or remove_teammate, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'pending' — an agent can infer that accepted invitations cannot be revoked, but the description never states when to revoke versus resend (resend_invitation) or when to remove an existing teammate (remove_teammate). No explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_agent_evaluationRun an agent evaluationAInspect
Ask a product's AI agent up to 20 test questions and grade the answers against what you expect; the run is saved in Training → Evals. It spends the workspace's AI budget. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| cases | Yes | The test questions. | |
| model | No | An OpenRouter model id to try instead of the workspace's model. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, non-destructive, non-idempotent operation, so the safety profile is covered. The description adds value beyond that: it discloses cost (spends the workspace's AI budget), an authorization requirement (Admins only), and a persistence side effect (the run is saved in Training → Evals). It does not describe runtime behavior such as whether grading is synchronous or how long the run takes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence packed with the highest-value facts, ordered action → outcome → cost → permission. Zero filler and nothing repeated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and full schema coverage, the description supplies the non-obvious operational facts an agent needs (cost, admin gate, persisted result location). It is still silent on result shape and timing, which is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description still adds meaning by framing `cases` as test questions and the `expect` field as the grading target, and by surfacing the 20-question cap in prose rather than leaving it buried in maxItems. It adds no guidance on `model` beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-action chain (ask the product's AI agent test questions and grade the answers) plus the resource (product agent) and a concrete scope limit (up to 20 questions). This cleanly separates it from look-alike siblings such as test_journey, test_proactive_message, and get_training_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operating context for deciding whether to invoke: it consumes the workspace's AI budget and is restricted to admins, and it says the run lands in Training → Evals. It stops short of naming alternatives or a when-not-to-use condition (e.g. lightweight single-question testing), 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.
save_reply_draftSave a reply draftAIdempotentInspect
Save your unsent reply or note in a conversation's composer, so you can review and send it in the app. Nothing is sent. An empty body clears the draft.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The draft text; empty clears it. | |
| channel | No | A reply to the customer (chat, default) or an internal note. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false. The description adds real behavioral context beyond them: the operation does not dispatch anything ('Nothing is sent') and an empty body is a clearing/removal operation. It does not explain whether the write replaces or merges an existing draft.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded and load-bearing: the first states what it does and that nothing is sent, the second states the empty-body edge case. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full schema coverage and a complete annotation set, this is nearly complete: it clarifies the no-send semantics and the clearing behavior. Minor gaps remain around overwrite/merge semantics and whether permissions or conversation state constrain the write.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters, including the chat/note enum and the conversationId lookup hint, are already documented in the schema. The description's 'empty body clears the draft' merely restates the body property's own description, adding no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save) and resource (unsent reply/note in a conversation's composer), and the phrase 'Nothing is sent' immediately separates it from the send-oriented siblings like reply_to_conversation and accept_held_reply. An agent can identify the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use this to stage content 'so you can review and send it in the app', implying sending happens elsewhere, not through this tool. It stops short of naming the alternative send tool explicitly or stating when a draft should be discarded instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_newsletterSchedule a newsletterADestructiveInspect
Sends a newsletter to its audience: now, at a time, at a local time in each contact’s time zone, or at each contact’s best time on a day. A draft is marked ready first. Once scheduled it can only be cancelled with cancel_newsletter.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| sendMode | No | fixed: at scheduledAt (now when left out). local: localTime in each contact’s zone. best: the localTime date at each contact’s usual opening hour. | |
| localTime | No | YYYY-MM-DDTHH:mm, for local and best. | |
| campaignId | Yes | Newsletter id from list_newsletters. | |
| scheduledAt | No | ISO date and time, for fixed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, idempotentHint=false, openWorldHint=true), the description adds real behavioral context: the draft is marked ready as a side effect, and the action is effectively irreversible except through cancel_newsletter. The confirm-parameter preview flow in the schema further discloses that no change occurs until confirmed. It stops short of describing permissions or audience-side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the core action and timing options front-loaded, followed by the readiness and irreversibility constraints. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a scheduling/mutation tool with a fully documented schema and annotations covering the safety profile, the description supplies the missing behavioral pieces (ready-marking, irreversibility, cancel-only escape). It is not fully exhaustive on audience permissions or scheduling limits, but no critical calling information is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including the sendMode enum mapping and the confirm two-step flow. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (sends/schedules) and resource (a newsletter), and enumerates the four distinct send timings so an agent knows exactly what the tool offers. It also names the sibling relationship with cancel_newsletter, distinguishing it from other newsletter tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for each mode (now/at a time/local time/best time) and states the key precondition that a draft is marked ready first and the only post-scheduling escape is cancel_newsletter. It does not, however, explicitly contrast this with nearby siblings like send_test_newsletter or preview_newsletter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_articlesSearch help articlesARead-onlyIdempotentInspect
Search the published help center for articles about a topic. Use this before writing documentation to check whether an answer already exists, and to find the slug of an article you want to read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum hits, 1-50. Defaults to 8. | |
| query | Yes | What the customer would ask, in their words. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world (openWorldHint=false), so the safety profile is covered. The description adds a real behavioral constraint beyond that: only *published* articles are searched, so drafts and unpublished content are excluded. Result format and pagination are left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the core action is front-loaded before the usage guidance. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but a read-only search tool does not need to explain return shapes in detail, and the description conveys the key outcome (you get articles and their slugs). Slightly thin on how results relate to list_articles versus read_article downstream.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only 3 parameters, so the schema already explains query, productId, and limit semantics. The description adds no parameter-level detail (no phrasing hints, no cross-reference behavior), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the published help center for articles about a topic') and implicitly separates itself from read_article by framing itself as the way to find a slug before reading. It does not explicitly distinguish itself from the sibling list_articles, leaving that pair ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete workflow condition: use before writing documentation to check whether an answer already exists, and to find a slug to read. That covers when to reach for it and gestures at read_article as the follow-up, though it states no exclusions or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsSearch contactsARead-onlyIdempotentInspect
List contacts, most recently updated first, optionally filtered by a search on name or email, a segment, a product or an email status. Each has its id, consent, tags and custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 25, at most 100). | |
| offset | No | How many to skip, for paging. | |
| search | No | Name or email contains this. | |
| productId | No | Only this product's contacts (from list_products). | |
| segmentId | No | Only people in this segment (from list_segments). | |
| emailStatus | No | Only contacts with this email status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine context beyond them: the default sort order and a summary of what each returned record contains (id, consent, tags, custom fields), which matters since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary action and ordering before the filter list. The trailing sentence about returned fields earns its place given the absence of an output schema, though it is slightly tacked on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with full schema coverage and rich annotations, the essentials are covered: ordering, filter dimensions, and returned fields. Missing only pagination guidance (though limit/offset are self-explanatory) and any hint of result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, and the description mostly restates them at a high level. It adds no format, default, or constraint detail beyond what the schema 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List contacts') plus ordering ('most recently updated first') and the filter dimensions. It clearly distinguishes itself from get_contact and count_contacts by being a filtered listing, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys capability (optional filters on name/email, segment, product, email status) but gives no explicit when-to-use or when-not guidance, and does not route the agent to sibling tools like count_contacts or list_segments. 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.
send_support_inbox_testSend a support inbox testADestructiveInspect
Send a test email from the workspace's support address to its public support address, to prove forwarding into HelpWell works end to end. Nothing is added to the inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=true), so the bar is lower. The description usefully adds "Nothing is added to the inbox", clarifying that no internal state changes despite a real outbound email, but it does not explain the destructive/irreversibility flag or any rate/volume limits on repeated tests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and scope first, then the key reassurance about side effects. No filler, no restatement of the title, and the most decision-relevant fact is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage, annotations, and no output schema, the description covers purpose, scope, and outcome (no inbox entry). Minor gaps remain: no mention of where the resulting email should be checked, and no disambiguation from the other test-send tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and its schema description is fully populated (100% coverage) with explicit two-step confirmation guidance. The description itself adds nothing about the confirm flag, but baseline 3 is appropriate when the schema already carries full parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource (send a test email from the workspace support address to the public support address) and states the intent (prove HelpWell forwarding works end to end). It is easily distinguished from most siblings by the support-inbox framing, but it never explicitly separates itself from neighbours like send_test_email or send_test_newsletter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"To prove forwarding into HelpWell works end to end" gives a clear context for when this tool is appropriate, and the confirm parameter workflow is described in the schema. However, no exclusions, prerequisites (e.g. support address must be configured), or named alternatives such as send_test_email are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_emailSend a test emailADestructiveInspect
Send a test support or marketing email to the signed-in person's own account address, through the workspace's own Resend, to prove the setup works. Replying to the support test checks that replies come back.
| Name | Required | Description | Default |
|---|---|---|---|
| stream | Yes | ||
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the send is self-scoped to the caller's own address and routed through the workspace's own Resend, which tells the agent the blast radius is one mailbox. It does not mention rate limits or failure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, front-loaded with the action and recipient before the optional reply-verification detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers what it does, to whom, and why, and the confirm-gate behavior lives in the schema. What is missing is routing against the near-identical test-send siblings, which is the one thing an agent selecting this tool actually needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: 'confirm' carries a rich schema-side description of the confirm-first workflow, while 'stream' is enum-only. The description paraphrases the stream values ('support or marketing email') but adds no new semantics, so this lands at the baseline for partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Send a test support or marketing email') and scopes the recipient precisely ('the signed-in person's own account address, through the workspace's own Resend'). That self-scoping distinguishes it from broadcast siblings, but the description never names the overlapping alternatives (send_support_inbox_test, send_test_newsletter), so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the purpose ('to prove the setup works') and a follow-up action ('replying to the support test checks that replies come back'), which implies when to use it. It offers no when-not guidance and does not address the several sibling test-send tools, leaving the agent to guess when this is preferred over send_support_inbox_test or send_test_newsletter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_newsletterSend yourself a testADestructiveInspect
Emails the saved newsletter, marked [TEST], to you (the person connected) only, through the workspace’s own email. It does not need consent and never counts in results.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| variant | No | Which subject of an A/B test. | |
| campaignId | Yes | Newsletter id from list_newsletters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the safety profile is known. The description adds genuinely non-structured context: recipient is limited to the connected user, no marketing consent is required, and the send is excluded from results/analytics. It does not mention the confirm dry-run flow that the schema describes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and audience, then the two exceptions an agent most needs (no consent, excluded from results). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with annotations covering the risk profile and no output schema, the description supplies audience scoping, consent exemption, and analytics exclusion. The only meaningful gap is that the confirm-based preview behavior is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains confirm's dry-run behavior, variant's A/B meaning, and campaignId's provenance. The description contributes 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Emails the saved newsletter') and pins down the scope ('to you (the person connected) only, through the workspace's own email'), which separates it from schedule_newsletter or a real send. It never names the adjacent siblings (preview_newsletter, send_test_email), so the differentiation is inferred 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.
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 clause and no named alternative such as preview_newsletter. The '[TEST]' framing and 'never counts in results' only imply the natural use case (rehearsing a newsletter before scheduling), so guidance is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_contact_consentSet marketing consentADestructiveInspect
Records a contact's marketing consent: subscribed only when the person says the contact really agreed, with where and how (source); unsubscribed when they asked to stop, which also suppresses the address. An unsubscribed or suppressed address cannot be subscribed this way. Subscribing can start journeys that begin on Subscribed.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Where and how they gave or withdrew consent, in the person’s words, e.g. "Ticked the newsletter box at signup on 2026-03-01". Never invented. | |
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| consent | Yes | ||
| contactId | Yes | Contact id from search_contacts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the bar is lower, yet the description adds real substance: unsubscribing also suppresses the address, suppressed addresses cannot be resubscribed here, and subscribing can trigger journeys starting on 'Subscribed'. The notable omission is the confirm/dry-run behavior, which lives only in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core action and free of filler; each sentence carries a constraint or side effect. The first sentence is slightly tangled with its nested 'subscribed only when...' clause, which costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description covers the side effects, the suppression interaction, and the resubscribe prohibition. What is missing is the two-step confirm default (changes nothing unless confirm=true), which an agent must read from the schema to avoid unintended writes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 75% schema coverage the baseline is 3, but the description adds meaning the schema does not: it explains what each consent enum value represents in human terms and ties 'source' to 'where and how' consent was given. It does not address contactId or confirm, which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Records a contact's marketing consent') and enumerates the two states it sets. It implicitly separates itself from the workspace-level get_consent_settings/update_consent_settings siblings, but never names an alternative tool explicitly, so differentiation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions for each branch: use subscribed 'only when the person says the contact really agreed', unsubscribed 'when they asked to stop'. It also supplies a when-not rule ('An unsubscribed or suppressed address cannot be subscribed this way'). No alternative tool or escalation path is named, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_primary_help_center_domainSet the primary help center domainADestructiveIdempotentInspect
Make a custom domain the help center's main address; the others redirect to it.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Help center domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-redundant context by disclosing the side effect on the other domains ('the others redirect to it'), which the annotations do not express. It stops short of saying what happens to the previously-primary domain or whether the target must be verified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the primary action front-loaded and the consequence appended; no filler, no restating of the title verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with annotations covering destructiveness and idempotency and no output schema, the description is largely sufficient: the action and its effect on sibling domains are both stated. Minor gaps remain around whether the prior primary is demoted and whether the change is reversible, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Help center domain id.'), so the schema carries the detail. The description adds no extra meaning about where the id comes from or any format constraints, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Make ... the main address') and resource (help center domain), and the phrase 'the others redirect to it' makes the promotion semantics unambiguous. An agent can distinguish this from add_help_center_domain, remove_help_center_domain, and list_help_center_domains 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description describes the operation but gives no when-to-use, prerequisites, or alternatives (e.g., that a domain must first exist via add_help_center_domain, or that list_help_center_domains supplies the required id). 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.
settings_linkGet a settings linkARead-onlyIdempotentInspect
A link to the HelpWell page where the person finishes a step themselves: pasting an API key (Resend, OpenRouter, Stripe), approving Slack or GitHub, billing details, or account security. Secrets are entered directly into that settings page; this tool accepts no keys or passwords.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Which page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: secrets are entered directly on the settings page and this tool accepts no keys or passwords, which steers the agent away from trying to supply credentials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool returns, followed by the secrets constraint. Slightly prose-heavy in the first sentence but no wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only link generator with no output schema, the description covers purpose, target audience, and the critical secret-handling constraint. Only minor gaps remain, such as link lifetime or authentication requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is self-describing, so the baseline is 3. The description loosely illustrates what several pages are for (API keys, Slack/GitHub, billing, security) but does not map enum values like get-started, assistants, domains, or repositories, so it adds only marginal meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a concrete resource (a link) and its purpose: letting the person complete a setup step themselves. It implicitly distinguishes itself from the many get_*_settings readers by emphasizing the human-completion angle, though it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer it should call this when a task must be finished by the user (pasting keys, approving Slack/GitHub). There is no explicit when-to-use/when-not framing or reference to competing tools such as get_ai_settings or get_billing_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snooze_conversationSnooze a conversationAInspect
Hide an open conversation until a time, or until the customer replies. It comes back to Open when the time comes or the customer writes.
| Name | Required | Description | Default |
|---|---|---|---|
| until | No | ISO 8601 time with offset, at least a minute ahead and within a year. | |
| untilReply | No | true to snooze until the customer replies. | |
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description adds meaningful behavioral context beyond that: the conversation is hidden and automatically returns to Open when the time arrives or the customer writes. It does not cover error cases or what happens if the conversation is not open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words; the purpose and options are front-loaded, followed by the lifecycle outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool, the description covers purpose, both modes, and the auto-return behavior, while annotations supply the safety profile and the schema handles parameter details. Missing only edge-case behavior (e.g., closed or already-snoozed conversations) and error expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents 'until', 'untilReply', and 'conversationId'. The description references both snooze modes but adds no format, naming, or precedence detail beyond what the schema 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Snooze a conversation') and clarifies the effect ('Hide an open conversation until a time, or until the customer replies'). It is clear what the tool does, but it does not explicitly differentiate itself from siblings like unsnooze_conversation or restore_conversation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two snooze modes ('until a time, or until the customer replies') imply when the tool applies, giving implicit usage guidance. However, it names no alternatives and provides no when-not conditions or prerequisites beyond 'open conversation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snooze_notificationSnooze a notificationAInspect
Hide a notification for a while; it comes back unread at the top of the bell.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | No | How long (default 60, up to a week). | |
| notificationId | Yes | The id from list_notifications. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false), so the bar is lower. The description still adds real behavioral value by disclosing the state transition: the notification is hidden and later returns unread at the top of the bell, telling the agent the effect is reversible and where it resurfaces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and followed by the observable outcome. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with full schema coverage and annotations, the description covers purpose and post-action behavior adequately. It could mention the relationship to un-snoozing or mark_notification_read, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema documents both notificationId ("The id from list_notifications") and minutes (default 60, max a week). The description only gestures at duration with "for a while" and adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (hide/snooze) and resource (notification), plus the effect: it reappears unread at the top of the bell. This clearly separates it from siblings like snooze_conversation, mark_notification_read, and list_notifications without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (temporarily suppress a notification you don't want to act on now) but never states when to choose this over mark_notification_read, dismiss, or snooze_conversation, nor any prerequisites. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_journey_runStop a journey runADestructiveInspect
Takes one person out of a journey now; email it queued for them and not yet sent is cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Run id from list_journey_runs or get_contact. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the side effect on queued-but-unsent email, telling the agent exactly what is cancelled when the run is stopped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the immediate effect ("takes one person out of a journey now") leads and the email side effect follows. Slightly awkward phrasing in the trailing clause, but no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with no output schema, the description covers the immediate action and the concrete consequence (cancelled queued email), and annotations cover reversibility and destructiveness. Minor gaps remain around reversibility wording, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single runId parameter whose schema text already tells the agent where to source the id (list_journey_runs or get_contact). The description adds no further parameter meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("takes one person out of a journey") with the scope qualifier "one person" and "now," which separates it from whole-journey operations like pause_journey or delete_journey. It never names a sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the scenario (removing a single contact from a journey mid-run) but gives no explicit when-to-use guidance or conditions, and never points to an alternative such as pause_journey or resume_journey. Usage is left to inference from the verb and scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_contactsTag contactsADestructiveInspect
Adds or removes tags for several contacts at once: by ids, by email addresses, or everyone matching a search, segment or product (all: true).
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Tags to add (up to 20). | |
| all | No | Every contact matching search, segmentId and productId (or every contact). | |
| emails | No | Email addresses. | |
| remove | No | Tags to remove (up to 20). | |
| search | No | Name or email contains this. | |
| productId | No | Only this product's contacts (from list_products). | |
| segmentId | No | Only people in this segment (from list_segments). | |
| contactIds | No | Contact ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, non-idempotent, non-read-only, so the safety bar is lower. The description adds real context beyond them: it can add and remove in one call, and via '(all: true)' it can mutate everyone matching a search, segment or product — a blast-radius disclosure that matters for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence; the verb and resource lead and every clause earns its place by naming a targeting mode. It is slightly dense as one run-on sentence with a trailing parenthetical, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, zero-required, destructive mutation tool with no output schema, the description gives a good selector overview but omits safety-critical guidance: that all:true with no filters tags the entire contact list, and that a call must meaningfully include add and/or remove. These are the exact cases an agent could get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, including limits ('up to 20') and the meaning of all/search/segmentId/productId. The description only restates the selector set as a narrative; it does not clarify whether add and remove can be combined, whether contactIds and emails may be mixed, or that at least one of add/remove should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (adds/removes tags), the resource (contacts), and the scope (several at once), plus the three targeting modes. An agent can distinguish this bulk tagging operation from single-contact tools like update_contact or get_contact 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for several contacts at once' implies this is the bulk path versus per-contact updates, but no sibling is named and no when-not condition is given. Nothing tells the agent, for example, to prefer update_contact for a single contact or to use search_contacts first to build an id list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_journeyTest a journey with a contactARead-onlyIdempotentInspect
The path one real contact would take through the journey now (its draft if there is one), step by step, with the reason at each decision. Nothing is written or sent.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Whether events a step waits for happen, or the wait times out (default). | |
| contactId | Yes | Contact id from search_contacts. | |
| journeyId | Yes | Journey id from list_journeys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: it operates on the journey's draft if one exists, uses a real contact, and explicitly states 'Nothing is written or sent', reinforcing the non-mutating nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, front-loaded with what the tool produces and ending on the critical non-mutation guarantee. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains what comes back (a step-by-step path with reasons). It is nearly complete; only minor gaps remain, such as how the draft-vs-live choice interacts with the optional events parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so journeyId, contactId, and the events enum are already fully documented. The description adds no parameter-level detail (e.g., it never mentions the happen/timeout toggle), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource (simulating one contact's path through a journey) and even describes the output shape (step-by-step with the reason at each decision). It does not, however, name or distinguish itself from closely related siblings like get_journey_run, list_journey_runs, or enrol_in_journey.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied – you would use this to preview/simulate a contact's journey path – but there is no explicit when-to-use, when-not, or named alternative (e.g., to see a past run, use get_journey_run). The agent must infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_proactive_messageTest a proactive messageADestructiveInspect
Shows a saved message once to the visitor with this email on their next visit to the product’s site, skipping its rules and never counting in stats. Use your own email, signed in to your site.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The visitor’s email; normally your own. | ||
| confirm | No | Leave out first: the tool then says exactly what will happen and changes nothing. Pass true only after the person has seen that and said yes. | |
| messageId | Yes | Proactive message id from list_proactive_messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry the safety profile (destructiveHint=true, openWorldHint=true, idempotentHint=false); the description adds the non-obvious behavior that the message bypasses its own targeting rules, appears exactly once, and is excluded from stats. It does not state the prerequisite state (message must exist/be published, widget installed), and the 'never counting in stats' framing sits in mild tension with destructiveHint=true, though it does not directly contradict it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the mechanism front-loaded and the usage constraint second. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world mutation tool with no output schema, the description covers what happens on invocation and who to target, and the schema's confirm parameter covers the human-approval gate. Missing only prerequisites and the fact that the visitor's state is altered by the test.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds a real constraint beyond the schema: the email should be the caller's own and the caller must be signed in to the site. It adds nothing about messageId beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact delivery mechanism: the saved message is shown once to the visitor with that email on their next site visit. That mechanism (rule-skipping, stat-exempt, next-visit delivery) implicitly separates it from siblings like send_test_email and test_journey, which deliver by other means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage constraint — target your own email and be signed in to your own site — which tells the agent who the test subject should be. It stops short of naming when not to use it or pointing at alternatives such as send_test_email or test_journey.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trash_conversationMove a conversation to trashADestructiveIdempotentInspect
Delete a conversation from the inbox: its automation runs stop and queued emails for it are cancelled. restore_conversation brings it back.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely useful behavioral detail beyond that: automation runs stop and queued emails are cancelled, and the action is reversible via restore_conversation. It does not clarify whether deletion is permanent after trash or how long recovery is possible, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with the side effects and the recovery route in the second sentence. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema and full annotation coverage, the description supplies what annotations cannot: the side effects on automations and queued mail, plus the recovery path. Nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single parameter whose source ('Conversation id from list_conversations') is already documented in the schema. The description adds no format or sourcing detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a conversation from the inbox') and goes further by naming the concrete effects, so it is unmistakably distinct from siblings like get_conversation and merge_conversations. It also names restore_conversation, the inverse operation, removing ambiguity about what 'delete' means here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the when: this is the operation for removing a conversation from the inbox, and it explicitly names restore_conversation as the recovery alternative. It stops short of stating exclusions or prerequisites (e.g., what scope of user permissions is needed), so it is clear context rather than 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.
unblock_senderUnblock a senderADestructiveIdempotentInspect
Let email from a blocked address reach support again. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The blocked address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, idempotent, destructive operation. The description adds meaningful context by stating the effect (blocked email reaches support again) and the authorization requirement (admins only), though it does not detail what exactly gets destroyed or any reversibility beyond the destructive hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no wasted words. The core action is stated first, followed by the important admin-only constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter mutation tool with rich annotations and no output schema, the description provides the essential purpose and permission constraint. It is close to complete, though it could mention the idempotent nature or expected confirmation behavior, both of which are largely covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single email parameter and its meaning are fully documented in the schema. The description does not add syntax, format, or usage details 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and effect: allow email from a blocked address to reach support again. It does not explicitly differentiate itself from the sibling list_blocked_senders, but the verb and resource are specific enough for an agent to understand the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing the unblocking effect and notes it is for admins only. However, it does not say when to use this versus list_blocked_senders or other related tools, nor does it provide explicit exclusions or prerequisites beyond the admin restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_fieldUnlock a contact fieldADestructiveInspect
Remove a field's locked type, so its type is guessed from the values again. Contact values are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | The field name from list_fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, and the description usefully clarifies the blast radius: only the locked type is removed, contact values are kept. That is exactly the reassurance an agent needs for a destructive-flagged mutation, though it doesn't say whether the change 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, effect front-loaded, with the value-preservation caveat immediately after. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema and annotations that already flag it destructive, the description supplies the key consequence (type becomes inferred) and the non-destructive outcome for values. Minor gaps remain on reversibility and on what happens if the field is not currently locked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single 'field' parameter and points to list_fields as the source of names. The description adds no syntax, format, or naming 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: removes a field's locked type, and explains the resulting state (type re-guessed from values). An agent can tell this is the inverse of a lock/define operation, but the description never names define_field or list_fields as the counterpart, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when this is relevant (when a field's type should go back to being inferred), but gives no explicit when-to-use, prerequisites (must the field currently be locked?), or alternative. No routing to define_field for the opposite operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsnooze_conversationUnsnooze a conversationAIdempotentInspect
Bring a snoozed conversation back to Open now.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, non-destructive, idempotent, closed-world operation. The description adds useful context by specifying the resulting state ('Open') and timing ('now'), but it does not cover permissions, side effects, or failure modes beyond what the annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It immediately conveys the action and outcome without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema) and rich structured data (full schema coverage and annotations covering safety), the description is nearly sufficient. It states the core effect clearly, though it could note that the conversation must currently be snoozed to avoid errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter conversationId is fully documented in the schema as coming from list_conversations. The description adds no additional meaning, format, or syntax beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('bring back') and resource ('snoozed conversation') with a clear target state ('Open now'). It is easily distinguishable from the opposite sibling snooze_conversation, but it does not explicitly name or differentiate from other similar siblings like restore_conversation or reopen_gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a snoozed conversation' implies the condition for use, giving implicit guidance that this tool applies to conversations currently in a snoozed state. However, it provides no explicit when-to-use instructions, prerequisites, or alternatives to consider.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agentUpdate the AI agentADestructiveInspect
Change how the AI agent sounds and when it hands over: its name, tone, instructions, handoff threshold, what happens to low-confidence answers, and its tools. Anything left out stays. When the workspace has an evaluation suite, changing the voice or tools reruns it first, and nothing is saved if it fails. This action does not change the model.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name the widget shows. | |
| tone | No | Like "friendly and brief". | |
| tools | No | Switch tools on or off; only the ones given change. | |
| instructions | No | ||
| lowConfidence | No | handoff: give the conversation to a person; flag: notify only; off: nothing. | |
| handoffThreshold | No | Answers scoring under this confidence (0 to 1, default 0.5) are acted on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (destructiveHint=true, idempotentHint=false). The description adds valuable context beyond them: omitted fields are preserved, and when an evaluation suite exists, voice or tool changes rerun it first with nothing saved on failure — an unusual gating behavior an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with zero waste. The scope of changeable fields is front-loaded, followed by the key behavioral caveats (partial update, eval rerun, model exclusion).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema to explain return values, the description still covers everything an agent needs: what changes, partial-update behavior, eval gating, and the model exclusion. Annotations handle the destructive/idempotency profile, so nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83% (high), so the schema does most of the work and baseline 3 applies. The description adds meaning on top by clarifying that all fields are optional and unset fields retain prior values, which sharpens the semantics of the optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (change/update) and resource (AI agent), then enumerates exactly what can be changed: name, tone, instructions, handoff threshold, low-confidence behavior, and tools. This makes it immediately distinguishable from siblings like get_agent (read) and update_ai_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states partial-update semantics ("Anything left out stays") and gives an explicit exclusion ("This action does not change the model"), which implicitly routes model changes to update_ai_settings. It lacks an explicit named alternative, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ai_settingsUpdate AI settingsBDestructiveInspect
Choose the model (an id from list_ai_models), the monthly spending cap in US dollars (null: no cap) or the daily cap on training proposals. The key itself is pasted by the person in Settings → AI.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model id, like anthropic/claude-sonnet-4. | |
| monthlyCapUsd | No | ||
| dailyProposalCap | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=true and idempotentHint=false, so the safety profile is already carried by structured data. The description adds one genuinely useful behavioral fact — the API key is set out-of-band by a person in the UI, not through this tool — but it never explains what the 'destructive' flag actually means here (e.g. whether omitted fields are cleared or left untouched).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the parameter semantics are front-loaded ahead of the out-of-band key note. The 'or' phrasing lists three settable things as alternatives, which slightly muddies whether they are independent fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent, zero-required-parameter mutation with no output schema, the key unanswered question is whether omitting a parameter leaves it unchanged or clears it — the description's 'null: no cap' note hints at explicit clearing but never states the partial-update contract. Annotations cover the raw safety hints, so the gap is moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (just 'model' is documented), so the description must compensate — and it does: it explains monthlyCapUsd is in US dollars with null meaning no cap, and clarifies that dailyProposalCap governs training proposals. The model parameter gets no additional treatment beyond the list_ai_models pointer, so it is short of a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the editable settings (model, monthly USD cap, daily training-proposal cap) but never states the actual action — 'update AI settings' appears only in the title. An agent can infer the mutation from the fields listed, but the phrasing 'Choose the model...' is indirect and does not explicitly contrast with get_ai_settings or list_ai_models, which it only references as a source of ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It usefully tells the agent where the model id comes from (list_ai_models) and that the API key is pasted by a human in Settings → AI, implicitly excluding key management from this tool. It gives no guidance on when to call this versus get_ai_settings, nor on prerequisites or required permission level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_screenshotsChange app screenshotsBDestructiveInspect
Set the app's address and the pages to photograph for articles (each a name and a path starting with /). The list given replaces the pages there. A sign-in cookie for the app is pasted in the app, not here.
| Name | Required | Description | Default |
|---|---|---|---|
| shots | No | The pages to photograph. | |
| appUrl | No | The app's address, e.g. https://app.example.com. Empty clears it. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds real value on top: 'The list given replaces the pages there' discloses full-replacement semantics rather than append/merge, and the note about the sign-in cookie clarifies an auth prerequisite that is not a parameter. It still doesn't say whether existing captured screenshots or articles are affected by the replacement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and with zero filler. Minor awkwardness in 'the pages there' slightly blurs the referent but costs no real comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool the description covers replacement semantics and the auth cookie, and annotations carry the safety profile with no output schema required. It still omits the relationship to retake_app_screenshots and whether articles are re-rendered after the change, leaving a meaningful gap for an agent deciding how to sequence calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so name, path, appUrl, and productId are all documented in the schema itself, making 3 the baseline. The description adds only a mild constraint ('a path starting with /'), which is already implied by the schema example, and never mentions productId or that appUrl can be emptied to clear it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Set') and resource (the app's address plus the pages to photograph for articles), which is specific enough to separate it from get_app_screenshots and retake_app_screenshots by verb alone. It never names a sibling or says 'screenshots' explicitly, so 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use framing and no mention of the obvious alternatives (get_app_screenshots to inspect current config, retake_app_screenshots to regenerate). The only guidance is the implicit 'for articles' purpose, leaving the agent to infer when this tool is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleUpdate a help articleADestructiveInspect
Change a help article: its title, description, Markdown body or status. Only the fields given change; the rest of the file stays as it was. Publishing makes it live in the help center and for the agent; "draft" unpublishes it. Every save adds a version that restore_article_version can bring back. An article stays in its collection.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | The whole new body in Markdown, without front matter. | |
| slug | Yes | The article slug, including its collection, e.g. "billing/download-invoices" (from list_articles). | |
| title | No | A new title. | |
| status | No | draft: hidden from visitors and the agent. published: live in the help center and used by the agent. archived: retired, hidden, kept with its history. | |
| productId | Yes | Product id from list_products. | |
| description | No | A new one-line description; empty clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses real behavioral traits: partial-update semantics, the fact that publishing makes content live for both visitors and the agent, that 'draft' unpublishes, that every save adds a restorable version, and that collection membership is fixed. It does not explain permission/auth requirements or confirm the destructive implication (published content going offline) that destructiveHint=true raises, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first clause, then layers in only high-value facts: partial-update behavior, publish/unpublish effect, versioning, and fixed collection. Five short sentences, each earning its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with six parameters and no output schema, the description covers update semantics, publish side effects, and recoverability well. It leaves open permission requirements and error/failure behavior, but for a partial-update tool the essentials an agent needs to invoke it are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters including the status enum and slug format. The description restates which fields are updatable but adds no format, constraint, or edge-case detail (e.g. productId/slug scope) beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change/update) plus resource (help article) and enumerates the mutable fields (title, description, Markdown body, status). It also distinguishes behavior from nearby siblings by naming restore_article_version and clarifying the article cannot be moved between collections, so an agent can tell it apart from create_article or move-style tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: partial-update semantics ('only the fields given change'), the meaning of publishing vs draft for the help center and the agent, and the fact that each save creates a restorable version. It stops short of explicit when-to-use/when-not rules against siblings like archive_article, which also sets the archived state, leaving some overlap to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_brandUpdate the brand kitADestructiveInspect
Change parts of the brand kit; anything left out stays. Saving applies the brand to every hosted help center and widget at once. Colours are six-digit hex like #6A2FD6; image URLs are absolute.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | Square icon: help center tab and launcher. | |
| logo | No | ||
| fonts | No | ||
| width | No | ||
| button | No | ||
| colors | No | ||
| footer | No | ||
| signoff | No | ||
| website | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, non-read-only and non-idempotent, so the safety profile is covered. The description goes beyond them by disclosing blast radius ('applies the brand to every hosted help center and widget at once'), patch semantics, and input format constraints (six-digit hex, absolute image URLs). It stops short of permissions, reversibility, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each earning its place: patch semantics first, then blast radius, then format rules. Nothing is restated and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, workspace-wide mutation with 9 optional nested params and no output schema, the description covers the two things an agent could not infer (scope of effect and input formats) but omits permission requirements, reversibility, and what the call returns. Adequate to invoke, not complete for the risk level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% across 9 params, so the description must carry the load and it partly does: hex format for colors and absolute-URL format for images are genuinely additive. But the nested structures (logo, fonts, button, footer social list) receive no explanation in either schema or description, leaving the majority of parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Change parts of') plus specific resource ('the brand kit'), and the patch semantics ("anything left out stays") make the tool's behaviour unambiguous to any agent. It does not name a sibling, so an agent must infer the complement of get_brand and import_brand_from_website on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('change parts', omitted fields untouched), which is enough to know this is the partial-update path rather than a full replace. It never states when not to use it, nor points at import_brand_from_website for bootstrapping a brand from a site, so routing among brand tools 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.
update_changelog_entryUpdate a changelog entryADestructiveInspect
Change a changelog entry: its title, body, summary, version, tags or status. Only the fields given change. Publishing shows it on the public changelog and in the widget.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The entry id from list_changelog_entries. | |
| body | No | ||
| tags | No | ||
| title | No | ||
| status | No | ||
| summary | No | ||
| version | No | ||
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), the description still adds real behavioral context: partial-update semantics ('Only the fields given change') and the effect of publishing ('shows it on the public changelog and in the widget'). It does not contradict the annotations, though it stops short of describing reversibility of publishing/archiving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the mutation scope front-loaded; the field list is compact and the publish-side-effect sentence is the most important behavioral fact. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no output schema and no rich annotations, the description covers what fields exist, that it is a patch operation, and what publishing does. Remaining gaps (whether archived entries are editable, whether productId must match the entry's product, response shape) are moderate but not disqualifying.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (just id and productId are documented), so the description carries the load and does so by naming every other updatable field: title, body, summary, version, tags, status. That maps 6 of 8 parameters to concrete concepts, though it adds no syntax detail (tag replacement behavior, version format) and doesn't explain the draft/published/archived enum beyond mentioning 'publishing'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ('Change a changelog entry') followed by an enumeration of mutable fields (title, body, summary, version, tags, status). An agent can tell it apart from create_changelog_entry / delete_changelog_entry from the name alone, but the description never states the relationship or boundary to 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the 'Only the fields given change' partial-update note, which is genuinely useful, but there is no explicit when-to-use/when-not guidance, no prerequisites (e.g., entry must exist, productId must match), and no named alternatives such as create_changelog_entry or draft_changelog_from_releases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_code_update_settingsChange code update settingsCDestructiveInspect
Who writes the code-driven article updates (HelpWell on the workspace's model, or the customer's coding agent), whether they publish without review, whether the knowledge base builds itself, and the limits per check and for the build.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | ||
| maxNew | No | New articles drafted per update, 0-50. | |
| autoBuild | No | Build the knowledge base when a repository connects. | |
| maxChecks | No | Articles checked per update, 1-100. | |
| productId | Yes | Product id from list_products. | |
| autoPublish | No | Publish updates without review. | |
| batchBudgetUsd | No | Dollars one check may spend, 0.1-100. | |
| buildBudgetUsd | No | Dollars the build may spend, 0.5-500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the mutation/safety profile is covered structurally. The description adds useful semantic context about what the settings actually govern (auto-publishing without review, self-building KB), but says nothing about what a change overwrites, whether it's reversible, or whether it needs elevated permissions. Adequate given annotations, but thin on mutation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no padding, which is good, but the sentence is long, dense, and hard to parse due to nested parentheticals and the trailing phrase 'the limits per check and for the build'. The core action is not front-loaded — the reader must reconstruct 'update' from context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation tool with no output schema, the description explains the settings domain but omits whether changes require specific permissions, their reversibility, or their effect on in-flight updates. It gives enough to understand the fields but not enough to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents field meaning and ranges; baseline is 3. The description loosely maps to parameters (engine choice, autoPublish, autoBuild, per-check and build limits) and adds conceptual framing, but it names no parameter directly and adds little syntax-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates what the settings control ('who writes the code-driven article updates... whether they publish without review... whether the knowledge base builds itself...') rather than stating the action. The verb 'update/change' exists only in the name and title, so the purpose is inferable but not crisply stated. It does implicitly distinguish this tool's domain from siblings, but an agent gets no explicit 'this changes settings X' statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternatives are given. With siblings like get_code_updates, edit_code_update, approve_code_update, and decide_code_update_batch, the description never clarifies when to reach for this tool versus those. Usage must be entirely inferred from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collectionUpdate a help center collectionADestructiveInspect
Change a collection's title, description, icon, order, visibility or whether the help center offers to ask the agent there. Only the fields given change.
| Name | Required | Description | Default |
|---|---|---|---|
| icon | No | A Lucide icon name. | |
| tint | No | ||
| order | No | Where it sorts on the help center home, lowest first. | |
| title | No | ||
| askAgent | No | Offer "Ask the agent" in this collection. | |
| productId | Yes | Product id from list_products. | |
| collection | Yes | The collection id from list_articles. | |
| visibility | No | ||
| description | No | Empty clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=false, and the description adds genuine behavioral value by stating the update is partial ('Only the fields given change'). It does not, however, acknowledge the destructive aspect flagged in annotations (e.g., that clearing description irreversibly overwrites a value) or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler. The mutable-field inventory comes first and the partial-update rule is stated immediately after, so the most decision-relevant facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation tool with no output schema, the description covers the field set and patch behavior adequately, and annotations supply the safety profile. It is slightly thin on consequences (what destructiveHint=true means here, any auth requirements), 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 9 parameters at 67% schema coverage, the schema carries most of the load (productId and collection even point to list_products/list_articles). The description recaps six of the mutable fields by name but adds no format or value semantics beyond the parameter names, and says nothing about tint, the two required ids, or the enum values for visibility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Change) and resource (a collection) and enumerates the mutable fields, so an agent can tell it apart from create_collection or update_article. It does not, however, explicitly contrast itself with any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied (modify an existing collection) and the phrase 'Only the fields given change' signals patch semantics, which is helpful context. But there is no explicit when-to-use/when-not guidance and no named alternative such as create_collection for new collections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_consent_settingsUpdate marketing consent settingsADestructiveInspect
Change the consent model or a source default for new contacts. Turning a source on needs a statement of where those people agreed. It applies to new contacts only; unsubscribes and suppressions always win.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| defaults | No | Only the sources given change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false. Beyond that, the description adds a real precondition ("Turning a source on needs a statement of where those people agreed") and a precedence rule ("unsubscribes and suppressions always win"). It does not mention required permissions or partial-failure behavior, so it is solid but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action front-loaded, followed by the precondition and then the scope limits. No filler, though the third sentence slightly overlaps the second in framing scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema and only partial parameter documentation, the description covers the essential unknowns: what it changes (new contacts only), the precondition for enabling a source, and that suppression/unsubscribe state overrides it. Missing authorization details keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description partly carries the load: "consent model or a source default" maps the two top-level parameters, and "a statement of where those people agreed" explains the nested source field. But it does not clarify the enabled/source pairing or the per-source enable semantics beyond what the schema already states, so it lands at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Change the consent model or a source default for new contacts." The "for new contacts" scoping implicitly separates it from per-contact tools like set_contact_consent, but no sibling is named explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description scopes usage ("applies to new contacts only") and notes precedence ("unsubscribes and suppressions always win"), which implies when it matters. However, it never names an alternative or states when NOT to use it versus get_consent_settings or set_contact_consent, leaving the selection reasoning to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactUpdate a contactADestructiveInspect
Changes a contact's name, custom fields or tags. tags replaces the whole tag list. This action does not change marketing consent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| tags | No | The complete new tag list. | |
| contactId | Yes | Contact id from search_contacts. | |
| attributes | No | Custom fields to set (merged into the existing ones). Names are letters, digits and underscores; Stripe fields are managed by the integration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partly covered. The description adds real value beyond that: 'tags replaces the whole tag list' discloses destructive replace semantics that an agent must know before calling, and the consent scope boundary prevents an unintended 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its fields, followed by the two highest-risk facts (tag replacement, consent exclusion). No filler and no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema and a nested attributes object, the description covers the important behavioral facts — replace semantics for tags and the consent boundary. It stops short of noting what happens to non-listed fields or how attribute name collisions resolve, but the schema partially covers the latter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is 3; the schema already documents tags ('complete new tag list'), contactId, and attributes ('merged into the existing ones'). The description paraphrases name/tags/custom fields and restates the replace behavior already in the schema, adding little beyond it and nothing about the undocumented contactId format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (changes) and resource (a contact) and enumerates the mutable fields: name, custom fields, tags. It is clear what the tool does, but it never names the obvious sibling tag_contacts or create_contact, so the agent must infer the boundary between this and the tag-management tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'This action does not change marketing consent' implicitly routes consent changes to set_contact_consent, which is useful boundary-setting. However, there is no explicit when-to-use statement and no naming of the alternative tag_contacts tool, so usage is only implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contact_panelUpdate the contact panel layoutADestructiveIdempotentInspect
Change the contact panel for the whole team: section order and visibility, pinned fields, how many show, header badges and hiding empty fields. Only the parts you pass change. Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Pinned fields shown before "Show all". | |
| badges | No | Up to two field keys shown as chips beside the name. | |
| pinned | No | Pinned field keys in order (from get_contact_panel); always shows a dash when empty. | |
| sections | No | Sections in order: details, stripe, journeys, enrichment, fields, conversations, activity. A section left out is hidden. | |
| hideEmpty | No | Skip pinned fields with no value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, destructiveHint=true and idempotentHint=true; the description adds the workspace-wide blast radius ('for the whole team') and the admin authorization requirement, which are real value. However, 'Only the parts you pass change' sits in tension with the schema's note that an omitted section is hidden, so the destructive potential of omission is under-disclosed rather than explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler: the affected surface is front-loaded, then the patch semantics and the authorization gate. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation with no output schema, the description covers scope, partial-update behavior, and the admin gate, so an agent has what it needs to invoke safely. The remaining gap is that omitting a section hides it ('whole team' also isn't pinned down as workspace-wide), which the description implies is benign.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the five parameters (limit, badges, pinned, sections, hideEmpty) already carries a richer description than the prose. The description's enumeration maps cleanly onto those parameters and confirms the patch semantics, but adds no format, ordering, or constraint 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Change the contact panel') and scopes it explicitly ('for the whole team'), then enumerates the exact facets it governs: section order/visibility, pinned fields, count shown, header badges, hide-empty. An agent can distinguish this from per-contact siblings like update_contact and from the reader get_contact_panel 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Only the parts you pass change' tells the agent the patch semantics, and 'Admins only' is an explicit prerequisite that gates invocation. It lacks explicit when-not guidance or a named alternative (e.g. get_contact_panel for reading the current config), so it lands just 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_conversationUpdate a conversationADestructiveIdempotentInspect
Change a conversation: its status (open, pending, closed), priority, tags (the full list replaces the old one), unread mark, mode (ai answers or human team), or whether training learns from it. Only the fields you pass change.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ai: the AI agent answers the next message; human: the team does. | |
| tags | No | Every tag the conversation should have. | |
| learn | No | false is "Don't learn from this": Training skips the conversation. | |
| status | No | ||
| unread | No | ||
| priority | No | ||
| conversationId | Yes | Conversation id from list_conversations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety bar is partly met. The description still earns credit by disclosing partial-update semantics ('Only the fields you pass change') and the replace-not-append behavior of tags, which is exactly the destructive nuance an agent needs; it says nothing about permissions or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and resource, with the field list and the crucial partial-update caveat placed last where it is most needed. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, no nested objects, and 7 parameters, the description is close to sufficient: it covers partial-update behavior and field semantics. Missing permission requirements and any hint of the response shape keep it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 57%, the description must compensate, and it does: it supplies the status enum values (open/pending/closed), explains mode in business terms, and clarifies tags as a full replacement. Priority and unread remain undescribed beyond their enums, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change a conversation') and enumerates exactly which attributes can be changed, which is more precise than the bare title. It does not, however, differentiate itself from overlapping siblings such as assign_conversation, mark_conversation_read, or snooze_conversation, which cover a subset of the same surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the field list tells the agent what can be edited but not when to prefer this tool over assign_conversation or mark_conversation_read, nor any preconditions. No when-not guidance or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_email_templateUpdate an email templateADestructiveInspect
Renames a saved template, changes its description or category, or replaces its email document. Built-in templates can't be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| category | No | ||
| document | No | The complete new email document. | |
| templateId | Yes | Template id from list_email_templates. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description earns additional credit by disclosing that the document operation fully replaces the existing email body and by adding the built-in immutability rule, neither of which appears in the annotations. It stops short of stating permission requirements or whether partial updates are allowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the mutable-field list is front-loaded ahead of the restriction. Every clause carries a distinct fact an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers the main risks: what can be changed, what 'document' replacement means, and that built-ins are excluded. It omits whether at least one field must be supplied and what the response contains, which is a minor gap given annotations and the schema carry the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (40%), so the description must compensate, and it does: it maps name, description, category, and document to their effects, and clarifies that document 'replaces' the body rather than merging. templateId's meaning comes from the schema (list_email_templates). It does not explain accepted category values or length limits, which the schema handles for category but not the others.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs (renames, changes, replaces) against a specific resource (saved template), enumerating exactly which fields are mutable. It also scopes the tool to 'saved' templates versus built-ins, distinguishing it from create_email_template, delete_email_template, and get_email_template without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a clear when-not constraint ('Built-in templates can't be changed'), which is genuinely useful routing information. However, it never names an alternative for the disallowed case (e.g. use_email_template for built-ins, or create_email_template to duplicate one), so 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.
update_enrichment_settingsUpdate enrichment settingsADestructiveInspect
Turn enrichment on or off, set the monthly lookup cap, choose which LeadFuze fields are saved, or replace the ICP score rules. It only ever enriches confirmed HelpWell form signups.
| Name | Required | Description | Default |
|---|---|---|---|
| icp | No | The ICP score: rules (each with factor seniority, industry, country or email_status and values; or company_size with min/max; or linkedin_connections with min; plus points -100 to 100), and the strong and good thresholds (0 to 100). | |
| fields | No | Field key (from get_enrichment_settings) to true or false. | |
| enabled | No | ||
| monthlyCap | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation/destructiveness profile is covered. The description adds useful scope context (only confirmed HelpWell form signups are enriched) and hints that ICP rules are 'replaced', but does not clarify partial-update semantics across the optional fields or any auth/rate-limit constraints, so it is a modest addition over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads the full set of operations as a scannable list, the second adds the scoping constraint. No filler or repetition, and the key capabilities appear first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, zero-required partial-update tool with a nested icp object and no output schema, the description covers every operation and the enrichment scope. It could be slightly more complete by noting that any subset of fields may be supplied (or that only specified settings change), which matters given zero required params.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage, the description meaningfully compensates: 'turn enrichment on or off' explains the undocumented enabled flag and 'monthly lookup cap' explains the undocumented monthlyCap. It also ties the fields map to LeadFuze and the icp object to score rules, though it adds no syntax detail for the nested rule structure already covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and enumerates the four distinct mutations the tool performs (toggle enrichment, set monthly cap, pick saved LeadFuze fields, replace ICP rules), which map cleanly onto the four schema parameters. An agent can immediately tell what this tool does and how it differs from the read-side get_enrichment_settings counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied through the enumerated operations but never stated as explicit when/when-not guidance, and no alternatives (e.g. get_enrichment_settings for reads) are named. The line 'It only ever enriches confirmed HelpWell form signups' scopes the enrichment behavior but does not tell the agent when to call this tool versus a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_form_settingsUpdate form settingsADestructiveInspect
Turns double opt-in or enrichment on or off for one form. Enrichment runs only on a HelpWell form's confirmed sign-ups, after double opt-in, and turning double opt-in off turns enrichment off.
| Name | Required | Description | Default |
|---|---|---|---|
| enrich | No | ||
| formId | Yes | Form id from list_form_settings. | |
| productId | Yes | Product id from list_products. | |
| doubleOptIn | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so safety is covered. The description adds a genuine side effect not in the annotations: turning double opt-in off also turns enrichment off, which is exactly the kind of hidden coupling 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core action front-loaded and the dependency caveat immediately after. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema but with annotations covering the safety profile, the description covers the semantic behavior well. It leaves unstated whether the change is reversible or how it affects already-collected contacts, which is a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%; the two bare booleans (enrich, doubleOptIn) have no schema descriptions. The description compensates by explaining what enrichment is, what triggers it, and how doubleOptIn interacts with enrich, which meaningfully disambiguates both undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (turns on/off) and resource scope (double opt-in / enrichment for one form), which is precise enough to distinguish from workspace-wide siblings like update_enrichment_settings. It does not name or exclude 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence supplies real operating conditions: enrichment only applies to HelpWell confirmed sign-ups and depends on double opt-in being enabled. That tells the agent when this setting is meaningful, but there is no explicit guidance on choosing this tool over update_enrichment_settings or list_form_settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_frequency_capUpdate the frequency capADestructiveIdempotentInspect
Set the most marketing emails (1 to 50) one contact gets in the rolling window, or null to turn the cap off. Emails over the cap are skipped for that contact.
| Name | Required | Description | Default |
|---|---|---|---|
| frequencyCap | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint, idempotentHint and readOnlyHint=false, so the bar is lower. The description still adds genuine behavioral context beyond the annotations by disclosing the consequence of exceeding the cap (those emails are skipped for the contact) and the disable path via null — consistent with, not contradicting, destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core behavior front-loaded and no filler. The phrasing 'Set the most marketing emails' is slightly garbled (should read 'maximum number of'), which costs a little readability but not length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter setter with no output schema and annotations that cover the safety profile, the description supplies what an agent needs: parameter semantics, the disable value, and the downstream effect. Only the duration of the 'rolling window' and the scope of 'marketing emails' remain undefined, which slightly limits completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does for the important semantics: null turns the cap off, which the schema's type union does not explain. The '1 to 50' range merely restates the schema's min/max, so it adds no extra value, keeping this just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (frequency cap) plus the exact scope it governs: the number of marketing emails a single contact receives within a rolling window. The added effect clause ('emails over the cap are skipped for that contact') makes the purpose unmistakable, and no sibling tool competes for this function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool to call when it wants to limit marketing email volume, but the description never states when to reach for it or whether any precondition (e.g. plan, workspace-level setting) applies. No alternative tool is named because none exists, so the gap is minor but real.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_help_center_settingChange a help center or widget settingADestructiveInspect
Change one help center, widget or changelog setting of a hosted product by its dotted path (from get_help_center_settings), e.g. "widget.appearance.accent" or "helpCenter.search", or product.supportEmail, product.timezone or product.locale. The agent is set up in Agent training, and webhooks and secrets in the app.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The dotted settings path. | |
| value | Yes | The new JSON value. Its type must match the selected setting. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real value beyond them by scoping the call to changing one setting at a time and pointing to get_help_center_settings as the discovery path; it does not, however, spell out failure behavior for invalid paths or type mismatches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary sentence is front-loaded, information-dense, and wastes nothing. The second sentence ("The agent is set up in Agent training, and webhooks and secrets in the app") is a verbless fragment whose intent is hard to parse, slightly hurting structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description supplies the path namespace, examples, the discovery tool, and a scope note on where other settings live. It is nearly complete, missing only what happens on invalid path/type, which the value parameter's schema description partly covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by listing concrete, real dotted-path examples that the schema's generic "The dotted settings path" does not provide. This materially helps the agent construct a valid path argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Change) plus the exact resource domain (help center, widget, or changelog setting of a hosted product), and names the sibling get_help_center_settings as the source of valid paths. Concrete dotted-path examples ("widget.appearance.accent", "helpCenter.search") make the target unambiguous versus neighbors like update_workspace_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent to obtain the path from get_help_center_settings and gives example paths, which is clear usage context. The trailing note implies settings for the agent, webhooks, and secrets are handled elsewhere (Agent training / the app), giving a soft scope exclusion, but it never explicitly contrasts against alternatives such as update_workspace_settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_journeyUpdate a journeyADestructiveInspect
Saves a journey’s full definition (read it with get_journey, change it, send it back). On a published journey this is a draft: the live version keeps running until publish_journey.
| Name | Required | Description | Default |
|---|---|---|---|
| journeyId | Yes | Journey id from list_journeys. | |
| definition | Yes | The journey document: { name, description, trigger (one of: ticket.created, ticket.escalated, ticket.closed, ticket.reopened, ticket.tagged, ticket.unresolved, ticket.rated, customer.replied, human.replied, chat.started, chat.answer_rated, contact.subscribed, contact.created, contact.updated, contact.tagged, custom.event, page.visited, login.succeeded, login.failed, email.delivered, email.opened, email.clicked, stripe.customer.created, stripe.customer.updated, stripe.checkout.completed, stripe.subscription.created, stripe.subscription.updated, stripe.subscription.cancelled, stripe.subscription.trial_ending, stripe.subscription.product_status, stripe.invoice.paid, stripe.invoice.payment_failed, stripe.charge.refunded, form.submitted, form.confirmed, contact.enriched, segment.entered, segment.left, article.viewed, article.rated, search.failed, roadmap.idea, roadmap.voted, roadmap.shipped, changelog.viewed, survey.answered, journey.entered, journey.completed, journey.converted, date.reached, manual.enrolled), triggers?: [{ event, ... }], productId, stopOnReply, reentry: always|once|after_completion, entry?: conditions, goal?, settings?: { quietHours, timeZone, emailCap }, steps: [...] }. Steps (1 to 50, each may have an id): { type: "wait", minutes }, { type: "email", campaignId } (a ready journey email), { type: "tag", tag }, { type: "remove_tag", tag }, { type: "set_attribute", ... }, { type: "branch", conditions, yes, no }, { type: "wait_event", ... }, { type: "message", ... }, { type: "note", body }, { type: "notify", ... }, { type: "exit" }, among others. Existing journey documents include the full step configuration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and readOnly=false, so the write/destructive profile is known. The description adds meaningful extra context: changes on a published journey are a draft and the live version keeps running until publish_journey. It does not, however, spell out that the prior definition is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste. The core action and its main caveat (draft vs live) are front-loaded, and the parenthetical workflow is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-object tool with no output schema, the description covers the important lifecycle behavior (draft semantics, publish requirement). It is nearly complete, though it could note the return value or the draft-id surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (journeyId, definition) are already fully documented in the schema. The description frames definition as 'full definition' but adds no format or structural detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (saves) and resource (a journey's full definition), and clarifies it is a full-document write rather than a partial edit. It also names siblings get_journey and publish_journey, so the agent can place it precisely in the journey lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit read-modify-write workflow ('read it with get_journey, change it, send it back') and the key when-not condition: on a published journey this only creates a draft, so the agent must call publish_journey to go live. Alternatives are named directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mail_domainUpdate an email domainBDestructiveInspect
Change an email domain's purposes or turn its open and click tracking on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Email domain (from get_email_setup) id. | |
| purposes | No | What the domain is for: support (sends support replies), marketing (sends newsletters and journey email), replies (receives customer replies). | |
| tracking | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds which attributes are affected, but says nothing about reversibility, whether turning tracking off loses data, or required permissions beyond what the annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and the two mutable attributes front-loaded. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description is thin: it does not say whether `purposes` replaces or merges existing values, what turning tracking off implies, or what a successful update returns. Annotations carry the safety signal, so the gaps are notable but not fatal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema leaves the `tracking` boolean entirely undescribed, and the description fills that gap by explaining it is the toggle for both open and click tracking. It also names the two mutable concepts matching `purposes` and `tracking`. It adds little syntax beyond the already well-documented domainId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change) and resource (email domain) and names exactly which fields are mutable (purposes, open/click tracking). This distinguishes it from the many add/remove/check/verify domain siblings, but it never explicitly contrasts 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only says what the tool does, with no when-to-use context, no prerequisites, and no mention of alternatives such as register_mail_domain or get_email_setup. The agent must infer that this is the edit path for an existing domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mail_reputation_thresholdsUpdate reputation thresholdsADestructiveInspect
The complaint and bounce rates (over 7 days) at which HelpWell warns admins and pauses marketing email. Rates are fractions: 0.0008 is 0.08%. Each warning level must be at or below its pause level.
| Name | Required | Description | Default |
|---|---|---|---|
| bounceWarn | Yes | ||
| bouncePause | Yes | ||
| complaintWarn | Yes | ||
| complaintPause | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is covered structurally. The description adds useful domain context that updating these thresholds can pause marketing email and that values are 7-day rates, but it omits what confirmation or auth is required and how existing settings are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what the thresholds govern, then the unit convention, then the constraint. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive settings-mutation tool with no output schema, the description covers the meaning, units, and the key ordering constraint. It stops short of describing persistence behavior or what a successful update returns, but the essential information to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden, and it does: it explains that rates are fractions (0.0008 = 0.08%) and that each warning level must be at or below its pause level, a cross-parameter constraint absent from the schema. The four parameter names are self-describing, so the remaining gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (complaint and bounce rates over 7 days) and the effect (warn admins, pause marketing email), which lets an agent understand the domain well. It is framed as a noun phrase rather than an explicit 'sets/updates' verb, but the tool name supplies the verb, so the intent is unambiguous and distinguishable from settings siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, no prerequisite, and no reference to any alternative tool (e.g., get_send_settings or resume_marketing_email). The only rule given is an internal value constraint, not usage guidance, so the agent must infer the context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_my_notification_preferencesUpdate my notification preferencesBDestructiveInspect
Change the signed-in person's own notification preferences. Anything left out stays.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | Per notification kind, which channels deliver it (inApp, push, email, slack). Only the kinds and channels given change. | |
| quiet | No | Working hours: notifications outside them wait. days are 0 (Sunday) to 6; times like 09:00. | |
| digest | No | The desk digest email: on or off, the hour (0 to 23) and the days (0 to 6). | |
| timeZone | No | IANA time zone, like America/Phoenix. | |
| waitingMinutes | No | Minutes a customer waits before "waiting long" fires. | |
| emailDelayMinutes | No | Minutes before an unread notification is emailed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), so the safety bar is lower. The description adds top-level partial-update semantics ('Anything left out stays') that the schema only states for the `kinds` field, but says nothing about required permissions, reversibility, or how the destructive hint interacts with a merge-style update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the operation and its merge semantics front-loaded. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a 6-param, deeply nested mutation with no output schema and full schema coverage, but thin given the tool's complexity: no mention of how to clear/reset a preference, no time-zone dependency note for quiet hours or digest, and no routing to the read or reset siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and nested objects carry their own descriptions (channels per kind, quiet-hours day/time encoding, digest hour), so the schema does the heavy lifting. The description adds no per-parameter meaning beyond the blanket merge note; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource: 'Change the signed-in person's own notification preferences.' The self-scoping phrase 'signed-in person's own' usefully distinguishes it from update_team_notification_defaults and reset_my_notification_preferences, though 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_notification_preferences (read first?), reset_my_notification_preferences, or update_team_notification_defaults. Routing is only inferable from the name, which is a gap in a cluster of four notification-preference tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_newsletterUpdate a newsletterADestructiveInspect
Changes a draft or ready newsletter: name, audience, subject, preheader or body fields, or marks it ready (ready: true) or back to draft. Changing a body field rebuilds the body from the plain fields, replacing block edits made in the editor; subject, preheader and audience changes keep the body. Pass document to replace the whole email document as get_newsletter returns it.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Optional: a full HTML body instead of the blocks (it is sanitized; the brand header, address and unsubscribe footer are added). | |
| name | No | ||
| ready | No | true marks it ready to schedule or use in a journey; false back to draft. | |
| title | No | The headline. | |
| ctaUrl | No | Button link (https). | |
| layout | No | ||
| eyebrow | No | Small line above the title. | |
| signoff | No | Closing line. | |
| subject | No | Subject line. | |
| audience | No | Who it goes to: contacts in ANY (match "any") or ALL (match "all") of the included segments, tags and filters, minus the excluded ones. Nothing included means every contact of the product. Consent and suppressions are always applied on top. | |
| ctaLabel | No | Button label. | |
| document | No | Optional: the complete email document (as get_newsletter returns it). | |
| sections | No | Body sections, each with a heading and body text. | |
| subjectB | No | Optional second subject for an A/B test (half the audience gets each). | |
| preheader | No | Preview text after the subject. | |
| productId | No | Product id, or null for every product. | |
| campaignId | Yes | Newsletter id from list_newsletters. | |
| introduction | No | Opening paragraph(s). {{first_name}} and other merge tags work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and non-idempotency, but the description goes further and states exactly what is lost: changing a body field rebuilds the body from plain fields and discards block edits made in the editor, while subject/preheader/audience edits preserve the body. That is precisely the kind of "what gets destroyed" context the annotations cannot convey. It omits return/validation behavior, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the changeable state and fields, then the destructive body-rebuild warning, then the document override. Dense but each sentence carries distinct information. Slightly baroque in phrasing but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter destructive mutation with no output schema, the description covers the highest-risk behavior (body rebuild vs. preservation) that an agent needs before calling. It does not address partial-update semantics for the many optional fields or any confirmation requirements, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so a baseline of 3 applies, but the description adds real meaning: it explains the side-effect difference between body-field edits and subject/preheader/audience edits, and that `document` replaces the whole email document exactly as get_newsletter returns it. That interpretation guidance is not derivable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (changes/updates) and resource (a draft or ready newsletter), and enumerates the fields it can touch, so it is clearly distinct from create_newsletter, get_newsletter or schedule_newsletter. It stops short of explicitly naming siblings to route against, so it lands just under a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description assumes the agent already knows to reach for this when editing an existing newsletter, and never says when NOT to use it (e.g., create, generate, or schedule_newsletter for those intents). It does clarify the accepted states (draft or ready), which is useful but not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_playbook_ruleUpdate a playbook ruleADestructiveIdempotentInspect
Rewrite one playbook rule (ids from get_training_overview). Admins only.
| Name | Required | Description | Default |
|---|---|---|---|
| ruleId | Yes | The rule id from get_training_overview. | |
| content | Yes | The new text of the rule. | |
| productId | Yes | Product id from list_products. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the mutation profile is covered. The description adds the auth requirement ('Admins only'), which is genuine context not present in the structured fields. It does not describe what the old rule text is replaced with or whether a prior version is recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight clauses with the action front-loaded and the ID source and permission constraint following. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, fully documented mutation with no output schema, the description covers purpose, ID provenance, and the admin gate, while annotations carry the destructive/idempotent profile. Only minor gaps remain around replace-vs-merge semantics and error behavior for invalid ids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including the 'from get_training_overview' provenance for ruleId that the description merely repeats. It adds no syntax, format, or constraint 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rewrite one playbook rule'), and the singular 'one' scopes it to a single existing rule, implicitly distinguishing it from the sibling add_playbook_rule. It stops short of explicitly naming the alternative, but an agent can tell add from rewrite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives invocation prerequisites ('ids from get_training_overview') and a permission gate ('Admins only'), which help the agent decide if it can call the tool. However, it offers no explicit when-to-use vs when-not guidance or naming of the add/update sibling pair as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_proactive_messageUpdate a proactive messageADestructiveInspect
Changes a message. Each part given (content, audience, pages, trigger, frequency, schedule, goal) replaces that part; parts left out stay. A live message must stay complete.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | What counts as success: { event (a journey trigger name such as page.visited, or null), name (for custom.event), days, stop: stop showing it to people who reached it }. | |
| name | No | Internal name. | |
| pages | No | Page paths: { include: ["/pricing", "/docs/**"], exclude: [] }. No includes means every page. | |
| content | No | By kind. chat: { text (markdown, at most 300 chars, {{first_name}} works), sender: {type:"agent"} | {type:"member",userId} | {type:"team",name}, display: "bubble"|"messenger", buttons: [{label, action: url|chat|article|dismiss|reply, value}], replyable }. popup: { slides: [{ title, text, button: {label, action, value} | null, media: null }], size: small|medium|large, layout: top|side|background, dismissible }. banner: { text (at most 120 chars), position: top|bottom, style: inline|floating, tone: accent|neutral|warning, cta: { type: none|link|button, label, url }, dismissible }. | |
| trigger | No | Popups and banners only: when it shows. { type: "load" } | { type: "delay", seconds } | { type: "scroll", percent } | { type: "exit" } | { type: "time_on_page", seconds } | { type: "inactivity", seconds } | { type: "click", selector } | { type: "event", name } | { type: "manual" }. | |
| audience | No | Who sees it: { who: all|identified|anonymous|journey ("journey" only when a journey sends it), device: any|desktop|mobile, utm: {source, medium, campaign}, conditions: rules on contact fields }. | |
| priority | No | Higher shows first. | |
| schedule | No | { start, end }: ISO dates or null. | |
| frequency | No | { repeat: once|session|days, days (for "days"), skipIfChatted: skip people who chatted in the last day }. | |
| messageId | Yes | Proactive message id from list_proactive_messages. | |
| productId | No | One product, or null for every product. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), so the description's real contribution is the merge semantics: each supplied part replaces that part and omitted parts persist, with live messages required to remain complete. That partial-replace behavior is genuinely non-obvious for an 11-parameter mutation and is exactly the kind of context annotations cannot convey. It stops short of saying what is lost or whether the update 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the replace rule, then the constraint. No filler. The opening 'Changes a message' is a touch thin for a mutation tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation with no output schema, the description covers the essential write semantics but leaves gaps: it does not say whether the target must be a draft, what happens when an update would invalidate a live message, or how the messageId relates back to list_proactive_messages. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description raises it by explaining that each listed field is swapped wholesale rather than merged field-by-field, which the schema does not state. Minor gap: the enumerated list omits name, priority, and productId, which are also present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Changes') on a specific resource and enumerates the mutable parts, plus the non-obvious patch semantics. The resource is only called 'a message' rather than 'proactive message', so the agent relies on the title and sibling names (create_/delete_/get_proactive_message) to disambiguate, but the intent is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternatives. Nothing tells the agent this is the edit counterpart to create_proactive_message or that list_proactive_messages supplies the required messageId (that is only in the schema). The lone constraint, 'A live message must stay complete', is a hint at validation rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_proactive_settingsSet the message capBDestructiveInspect
The workspace rule for proactive messages: at most perSession new messages per visitor in a visit of sessionMinutes.
| Name | Required | Description | Default |
|---|---|---|---|
| perSession | Yes | ||
| sessionMinutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partially covered. The description adds useful behavioral meaning by explaining the resulting rule (a per-visitor message cap within a session window), but it does not clarify that this overwrites existing workspace settings, who may call it, or why it is flagged destructive despite being a settings update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the subject ('the workspace rule for proactive messages') before the parameter semantics. It is efficient, though the fragmentary phrasing slightly delays clarity about the action being performed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema and no schema descriptions, the description adequately explains the parameters but leaves the action verb, the overwrite behavior, and sibling differentiation (update_frequency_cap) 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does well: it explains that perSession is the number of new messages allowed and sessionMinutes is the length of the visitor visit window, giving meaning to both parameters beyond the bare min/max. It still omits units for sessionMinutes and the 0-10 ceiling on perSession, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('the workspace rule for proactive messages') and even defines the rule's semantics, but it is written as a noun phrase rather than a verb+resource action, so the agent must infer that it sets/updates rather than reads it. It also fails to distinguish itself from a close sibling like update_frequency_cap, leaving the exact scope ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., admin permission, existing proactive message needing a cap), and no mention of the similarly named update_frequency_cap or update_proactive_message as alternatives or complements. The agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productUpdate a hosted productADestructiveInspect
Change a hosted product's name (as customers see it in the help center and widget), its site address, the origins allowed to load its widget (the full list replaces the old one), or its help center slug ( in the default help center address).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A new product name. | |
| slug | No | Lower-case letters, numbers and dashes. | |
| siteUrl | No | The product website, like https://acme.com; null clears it. | |
| productId | Yes | Product id from list_products. | |
| allowedOrigins | No | Every origin the widget may load on, like https://app.acme.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine extra context: the allowedOrigins list is a full replacement rather than a merge, which explains why the operation is destructive. Auth requirements and partial-update semantics are still unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence enumerating the four updatable fields with tight parenthetical clarifications; no filler. A bulleted or clause-per-field layout would be marginally easier to scan, but nothing here is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool, all parameters are documented and the annotations carry the destructive/idempotent profile. The description doesn't say what an unchanged field does or what the call returns, which is a minor gap since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema: it explains that the name is customer-facing in the help center and widget, and that the slug appears in the default help center address. The replacement semantics for allowedOrigins is user-facing meaning the schema's terse 'Every origin the widget may load on' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Change') and resource ('a hosted product') and enumerates the exact mutable fields (name, site address, allowed origins, help center slug), which separates it from create_product, get_product and list_products. It does not name a sibling explicitly, so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the field enumeration — an agent can infer this is the tool for editing an existing product — but there is no stated when-to-use, no prerequisites (e.g. needing productId from list_products), and no exclusions versus near-neighbours like update_help_center_setting or update_brand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_saved_replyUpdate a saved replyADestructiveIdempotentInspect
Change a saved reply's title, body, tags or sharing. Only the fields you pass change. A shared reply is changed by its author or an admin.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| tags | No | ||
| title | No | ||
| shared | No | ||
| savedReplyId | Yes | Saved reply id from list_saved_replies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds value beyond that with patch semantics ('Only the fields you pass change') and an author/admin permission rule for shared replies, though it never says what 'destructive' actually means here (e.g. tag replacement or overwriting).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, and the core action is front-loaded before the partial-update and permission clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema this covers the essentials: what changes, that it is a partial update, and who may change a shared reply. Missing only edge behavior - tag replacement semantics, the item limit, and whether other users are affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just savedReplyId), so the description must compensate - and it does by naming the four updatable fields and mapping them to the optional parameters, plus clarifying that omitted fields are untouched. It still omits details like the 10-tag cap or the 'sharing' vs 'shared' naming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Change') and resource ('a saved reply') and enumerates the mutable fields (title, body, tags, sharing), which distinguishes it from create_saved_reply, delete_saved_reply and render_saved_reply. It does not name any sibling explicitly, but the operation type is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the mutation verb rather than stated. The one real guideline is a precondition - 'A shared reply is changed by its author or an admin' - which is useful context, but no alternatives (e.g. save_reply_draft, draft_reply_with_ai) are named or contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_segmentUpdate a segmentADestructiveInspect
Renames a segment or replaces its rules. Newsletters and journeys that use it follow the change. Journeys that start on 'entered a segment' may start for people who now match.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| rules | No | Conditions on contact fields. mode "all" or "any"; each rule is { field, operator, value }. Fields: contact.name, contact.email, contact.consent (subscribed | unknown | unsubscribed), contact.email_status, contact.product_id, contact.created_at, contact.last_seen_at, contact.attributes.<field> (tags are contact.attributes.tags), contact.events.<event>. Operators: is, is_not, contains, not_contains, gt, lt, exists, missing, before, after (dates are ISO or now-7d). | |
| segmentId | Yes | Segment id from list_segments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds real downstream context the annotations cannot convey: newsletters and journeys follow the change, and 'entered a segment' journeys may newly trigger for contacts who now match. That consequence disclosure is valuable beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core action is front-loaded ahead of the side-effect disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive nested-object mutation tool with no output schema, the description covers the main risk an agent must know (downstream effects on newsletters and journeys). It is slightly incomplete on partial-update semantics, but the schema carries the rules detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with the nested rules object carrying a very detailed inline description of fields, operators, and date formats. The prose description adds nothing about parameters (e.g., whether omitting name leaves it unchanged or whether rules fully replace existing rules), so it only meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States two specific operations (rename, replace rules) on a named resource, so the agent knows exactly what the tool mutates. It does not name a sibling or explicitly contrast with create_segment/list_segments, but the verb+resource combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description notes the two mutation modes but never says when to prefer this over create_segment, or what prerequisites (segment ownership, plan limits) apply. No explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sender_identityUpdate the sender identityADestructiveInspect
Set who email comes from: the sender name, company name and postal address (required for marketing), the support and marketing addresses (the part before @ and the domain), the reply domain, and the DMARC report address. Only the fields given change; null or empty clears one.
| Name | Required | Description | Default |
|---|---|---|---|
| dmarcRua | No | Email address for DMARC reports. | |
| senderName | No | ||
| companyName | No | ||
| supportLocal | No | Like "support". | |
| replyDomainId | No | A receiving domain id. | |
| mailingAddress | No | ||
| marketingLocal | No | Like "hello". | |
| supportDomainId | No | A sending domain id. | |
| marketingDomainId | No | A sending domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety bar is partly met; the description earns credit for explaining exactly why mutation is risky — partial updates plus 'null or empty clears one' means an omitted-versus-empty distinction that is easy to get wrong. It also flags the compliance constraint that postal address is required for marketing. It does not cover permission requirements or what breaks when fields are cleared, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first enumerates the mutable surface, the second states the update/clear semantics. The field enumeration is dense and would read faster as a list, but nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, all-optional mutation tool with no output schema and a destructive hint, the description covers purpose, mutability surface, and clear semantics — the core things an agent needs. Gaps remain around id resolution (which domain ids are valid, sending vs receiving) and the consequence of clearing the marketing postal address, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% and several properties (senderName, companyName, mailingAddress) have no schema text at all, so the description does real work by mapping each named field to its role. Most valuable is 'the part before @ and the domain' for the support/marketing pairs, which is the only place the local-versus-domainId split is explained. It does not clarify what a 'receiving' vs 'sending' domain id implies in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-plus-resource framing ('Set who email comes from') and enumerates exactly which identity fields are under its control — sender name, company name, postal address, support/marketing local parts and domains, reply domain, DMARC address. That makes it clearly distinct from domain-level siblings like update_mail_domain or read-only siblings like get_email_setup. It stops short of explicitly naming an alternative, which keeps it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does operationally ('Only the fields given change; null or empty clears one'), which implies a partial-update patch workflow, but it never states when an agent should reach for this versus update_mail_domain, update_support_inbox, or update_workspace_settings. There are no stated prerequisites (e.g., that domain ids must already exist via list_resend_domains/register_mail_domain).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_support_inboxUpdate the support inboxADestructiveInspect
Set the public support address customers already write to (which forwards into HelpWell) and the product its emails belong to. Changing the address resets its forwarding check.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | No | Product for emailed conversations. | |
| forwardFrom | No | Like support@acme.com; null clears it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, establishing the mutation profile. The description adds a concrete side effect beyond annotations: "Changing the address resets its forwarding check." This is useful behavioral context, though it does not cover auth needs or the effect of changing productId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. Purpose is front-loaded, and the behavioral caveat follows immediately, making it appropriately sized and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with rich annotations and no output schema, the description covers the core action and a key side effect. It is nearly complete, though it omits how the productId parameter behaves when null and does not route the agent among sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, establishing a baseline of 3. The description adds slight meaning by implying that the address parameter triggers a forwarding-check reset, but provides no syntax or null-handling details beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Set") and resources ("public support address" and "the product its emails belong to"), making the purpose clear. It does not explicitly differentiate this tool from siblings like update_mail_domain or send_support_inbox_test, 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.
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, no prerequisites, and no alternative-tool routing. It implies configuration of the support address but leaves the agent to infer context and distinguish it from 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_team_notification_defaultsUpdate team notification defaultsADestructiveInspect
Change the notification defaults everyone on the team starts with (people who customised their own keep theirs). Anything left out stays.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | Per notification kind, which channels deliver it (inApp, push, email, slack). Only the kinds and channels given change. | |
| quiet | No | Working hours: notifications outside them wait. days are 0 (Sunday) to 6; times like 09:00. | |
| digest | No | The desk digest email: on or off, the hour (0 to 23) and the days (0 to 6). | |
| timeZone | No | IANA time zone, like America/Phoenix. | |
| waitingMinutes | No | Minutes a customer waits before "waiting long" fires. | |
| emailDelayMinutes | No | Minutes before an unread notification is emailed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, but the description adds genuinely useful behavioral context beyond them: this is a merge-style partial update ('Anything left out stays') and it deliberately leaves customized users untouched. It doesn't cover permission requirements or immediacy of propagation, so it's not exhaustive, but it materially softens and clarifies what 'destructive' means here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the core action (changing team defaults) front-loaded and the two key caveats (custom users unaffected, omitted fields preserved) following. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full schema coverage and annotations covering the safety profile, the description supplies the two nuances an agent most needs: team-wide scope and partial-update semantics. It omits error behavior and whether the change applies immediately, but no output schema is needed and the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each nested object (kinds, quiet, digest, timeZone) is already documented in the schema, so the description carries no per-parameter burden. Its only param-relevant content is the collective partial-update rule 'Anything left out stays,' which matches the baseline 3 for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change the notification defaults') and pins the scope ('everyone on the team starts with'), which implicitly contrasts with the 'my' siblings like update_my_notification_preferences and reset_my_notification_preferences. An agent can tell team-wide vs individual scope 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope clause and the parenthetical 'people who customised their own keep theirs' tell the agent when this tool's effect applies and what it won't touch. It stops short of explicitly naming the individual-preference alternative, so it gives clear context without a full when-to-use/when-not-plus-alternative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workspace_settingsUpdate workspace settingsCDestructiveInspect
Rename the workspace or change its time zone (IANA, like America/Phoenix).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| timeZone | No | IANA time zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is largely covered structurally. The description adds nothing behavioral beyond that—it does not say what the 'destructive' flag actually means here (e.g., whether a rename breaks existing links, invites, or email configuration), nor whether omitted fields are left untouched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence with the verb front-loaded and a parenthetical example that is genuinely useful rather than filler. No redundancy, though it is minimal to the point of omitting structure that could have held usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent settings mutation with two optional parameters and no output schema, the description covers the fields but omits side effects, the zero-argument case, and any confirmation/validation behavior. Adequate as a minimum-viable definition, but noticeably thin for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (name is undocumented in the schema), so the description must carry some load. It does so by supplying a concrete IANA format example (America/Phoenix) and by implying via 'or' that both parameters are optional and independent, but it does not clarify that name has a 100-character cap or what happens when both are supplied together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verbs (rename/change) paired with a clear resource (workspace) and the exact fields affected (name, time zone), so an agent immediately knows this is a workspace-level mutation rather than a read like get_workspace_settings. It stops short of explicitly naming a sibling or scope restriction, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 prerequisites or permissions, and no pointer to alternatives such as get_workspace_settings for reading current values. Usage is only loosely implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_email_templateStart an email from a templateAInspect
Copies a template into a new draft email: a newsletter, or (purpose journey) an email a journey step can send. Later template changes never alter it. Nothing is sent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the new email. | |
| purpose | No | ||
| productId | No | Product id from list_products. | |
| templateId | Yes | Template id from list_email_templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations (readOnly=false, idempotent=false, destructive=false) by disclosing copy semantics ('Later template changes never alter it') and a safety guarantee ('Nothing is sent'). These are genuinely useful behavioral traits an agent could not infer from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and then the two key behavioral facts. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately covers what the tool produces (a new draft email) and what it does not do (send). It could say more about the resulting draft's state or the productId requirement, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents most parameters, and the description adds meaning by tying the 'purpose journey' value to the journey-email outcome. It does not clarify the productId/broadcast relationship or the name parameter, so it sits at the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Copies a template into a new draft email') and clarifies the two flavors it can produce (newsletter or journey email). This clearly distinguishes it from create_email_template, update_email_template, and get_email_template, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (starting a draft from an existing template) and maps the two purposes to newsletter vs journey emails, but it names no alternatives and gives no explicit when-not-to-use guidance relative to siblings like create_newsletter or create_email_template.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_managed_repliesReceive replies on a Resend addressBDestructiveInspect
Receive customer replies on Resend's managed .resend.app address, with no DNS records. The person copies it from Resend under Emails → Receiving.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The address or domain, ending in .resend.app. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, yet the description frames the tool as passively 'receiving' replies and never says what is replaced, overwritten, or irreversible. For a destructive, non-idempotent mutation the description should disclose consequences, and instead it reads like a harmless read/setup step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the key mechanism (managed address, no DNS) comes first. The second sentence is somewhat UI-manual in tone but is brief and earns its place by telling the caller where the address comes from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive, non-idempotent mutation with no output schema and only one documented parameter. The description omits what happens to existing receiving/mail-domain configuration, whether the action is reversible, and what the tool returns, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'address' parameter is already documented as the .resend.app address. The description's note that the address is copied from Resend under Emails → Receiving adds minor sourcing context but no format or validation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (receive replies) and a specific mechanism (Resend's managed <id>.resend.app address) that implicitly separates it from the DNS-based siblings like add_mail_domain and register_mail_domain. It does not explicitly name those siblings, so an agent must infer the contrast, but the purpose itself is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'with no DNS records' hints at the condition for choosing this over the mail-domain tools, and the second sentence points to the UI location for obtaining the address, but usage is implied rather than stated. There is no explicit when-to-use/when-not or prerequisite (e.g., whether a managed address can coexist with an existing custom mail domain).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_mail_domainVerify an email domainAIdempotentInspect
Ask Resend to verify an email domain now, after its DNS records were added, and refresh its status.
| Name | Required | Description | Default |
|---|---|---|---|
| domainId | Yes | Email domain id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds that this pushes a request to the external Resend service immediately ('now') and refreshes status, which is useful context beyond the annotations, but it doesn't cover whether verification is async, how long it takes, or what failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and with no filler. It is efficient, though the trailing 'after its DNS records were added' clause slightly crowds the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with full schema coverage and annotations covering safety, no output schema needed, the description supplies the essential trigger context. It is complete enough to call correctly, with only the async/verification lifecycle left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single domainId parameter, so the baseline is 3. The description adds nothing about the parameter's format or where to obtain the ID, so it earns no credit above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (verify) and resource (email domain) plus the actor (Resend), so the agent knows exactly what operation runs. It stops short of distinguishing itself from near siblings like check_mail_domain and update_mail_domain, which the agent would have to sort out on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger condition: run this 'after its DNS records were added.' That is genuine when-to-use guidance. It does not name alternatives or state when not to use it (e.g., vs. check_mail_domain), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_proactive_message_copyWrite message text with AIAInspect
Has the workspace's AI draft or rework the text of a chat message, pop-up slide or banner. It only returns the text; save it with create_ or update_proactive_message.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| text | No | A version to improve (optional). | |
| field | No | title is a pop-up title. | |
| productId | No | Product id from list_products. | |
| instruction | No | What it is for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is not read-only, not destructive, and not idempotent. The description adds important context beyond that: the tool does not persist anything and returns only the generated text, so the caller must save it separately with create_ or update_proactive_message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences: the first states the action, the second states the critical non-persistence behavior and next step. There is no filler, and the important save requirement is front-loaded after the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly states that only text is returned and tells the agent how to persist it. It is nearly complete for a generation tool, though it does not mention prerequisites such as AI settings being enabled or any failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already carries most parameter meaning. The description does not add detail about productId or instruction and only loosely maps 'text' to the text parameter, so it remains at the baseline for a well-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: using the workspace AI to draft or rework text for a chat message, pop-up slide, or banner. It also distinguishes itself from the sibling save tools by saying it only returns text and must be followed by create_ or update_proactive_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear post-use routing by naming create_proactive_message and update_proactive_message as the save step, which is exactly what an agent needs after drafting. It does not explicitly contrast with other AI-generation siblings such as draft_reply_with_ai, so it falls short of full alternative coverage.
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.
216 tool updates
- First observed
accept_held_reply - First observed
add_help_center_domain - First observed
add_mail_domain - First observed
add_note - First observed
add_playbook_rule - First observed
add_redirect - First observed
apply_mail_layout - First observed
approve_code_update - First observed
approve_training_proposal - First observed
archive_article - First observed
assign_conversation - First observed
build_knowledge_base - First observed
cancel_newsletter - First observed
change_teammate_role - First observed
check_help_center_domain - First observed
check_mail_domain - First observed
check_newsletter - First observed
count_contacts - First observed
count_duplicate_contacts - First observed
count_newsletter_audience - First observed
create_article - First observed
create_changelog_entry - First observed
create_collection - First observed
create_contact - First observed
create_email_template - First observed
create_journey - First observed
create_journey_from_recipe - First observed
create_newsletter - First observed
create_proactive_message - First observed
create_product - First observed
create_saved_reply - First observed
create_segment - First observed
decide_code_update_batch - First observed
define_field - First observed
delete_changelog_entry - First observed
delete_email_template - First observed
delete_external_mail - First observed
delete_journey - First observed
delete_proactive_message - First observed
delete_saved_reply - First observed
discard_code_update - First observed
discard_journey_draft - First observed
disconnect_resend - First observed
dismiss_gap - First observed
dismiss_get_started - First observed
dismiss_held_reply - First observed
dismiss_training_proposal - First observed
draft_article_from_conversation - First observed
draft_changelog_from_releases - First observed
draft_reply_with_ai - First observed
edit_code_update - First observed
enrol_in_journey - First observed
generate_journey - First observed
generate_newsletter - First observed
get_activity - First observed
get_agent - First observed
get_ai_settings - First observed
get_app_screenshots - First observed
get_audit_log - First observed
get_billing_status - First observed
get_brand - First observed
get_code_updates - First observed
get_consent_settings - First observed
get_contact - First observed
get_contact_panel - First observed
get_conversation - First observed
get_email_setup - First observed
get_email_template - First observed
get_enrichment_settings - First observed
get_help_center_settings - First observed
get_journey - First observed
get_journey_performance - First observed
get_journey_run - First observed
get_newsletter - First observed
get_newsletter_results - First observed
get_notification_preferences - First observed
get_proactive_message - First observed
get_proactive_message_report - First observed
get_product - First observed
get_reports - First observed
get_security_settings - First observed
get_send_settings - First observed
get_setup_status - First observed
get_slack_status - First observed
get_suppression_summary - First observed
get_training_overview - First observed
get_widget_install - First observed
get_workspace_settings - First observed
import_brand_from_website - First observed
import_email_html - First observed
import_suppressions - First observed
invite_teammate - First observed
list_agent_conversations - First observed
list_ai_models - First observed
list_article_versions - First observed
list_articles - First observed
list_blocked_senders - First observed
list_changelog_entries - First observed
list_collections - First observed
list_conversations - First observed
list_email_templates - First observed
list_external_mail - First observed
list_fields - First observed
list_form_settings - First observed
list_gaps - First observed
list_help_center_domains - First observed
list_journey_people - First observed
list_journey_recipes - First observed
list_journey_runs - First observed
list_journeys - First observed
list_merge_candidates - First observed
list_newsletters - First observed
list_notifications - First observed
list_proactive_messages - First observed
list_products - First observed
list_redirects - First observed
list_resend_domains - First observed
list_saved_replies - First observed
list_segments - First observed
list_team - First observed
list_training_proposals - First observed
mark_all_notifications_read - First observed
mark_conversation_read - First observed
mark_external_mail_spam - First observed
mark_notification_read - First observed
merge_conversations - First observed
merge_duplicate_contacts - First observed
move_external_mail_to_inbox - First observed
pause_journey - First observed
pause_proactive_message - First observed
preview_newsletter - First observed
publish_journey - First observed
publish_proactive_message - First observed
read_agent_conversation - First observed
read_article - First observed
read_article_source - First observed
register_mail_domain - First observed
remove_help_center_domain - First observed
remove_mail_domain - First observed
remove_redirect - First observed
remove_teammate - First observed
render_saved_reply - First observed
reopen_gap - First observed
repair_mail_webhook - First observed
reply_to_conversation - First observed
report_summary - First observed
resend_invitation - First observed
reset_my_notification_preferences - First observed
resolve_gap - First observed
restore_article_version - First observed
restore_conversation - First observed
restore_journey - First observed
resume_journey - First observed
resume_marketing_email - First observed
retake_app_screenshots - First observed
retry_product_setup - First observed
retry_training_publish - First observed
reuse_resend_domain - First observed
revoke_invitation - First observed
run_agent_evaluation - First observed
save_reply_draft - First observed
schedule_newsletter - First observed
search_articles - First observed
search_contacts - First observed
send_support_inbox_test - First observed
send_test_email - First observed
send_test_newsletter - First observed
set_contact_consent - First observed
set_primary_help_center_domain - First observed
settings_link - First observed
snooze_conversation - First observed
snooze_notification - First observed
stop_journey_run - First observed
tag_contacts - First observed
test_journey - First observed
test_proactive_message - First observed
trash_conversation - First observed
unblock_sender - First observed
unlock_field - First observed
unsnooze_conversation - First observed
update_agent - First observed
update_ai_settings - First observed
update_app_screenshots - First observed
update_article - First observed
update_brand - First observed
update_changelog_entry - First observed
update_code_update_settings - First observed
update_collection - First observed
update_consent_settings - First observed
update_contact - First observed
update_contact_panel - First observed
update_conversation - First observed
update_email_template - First observed
update_enrichment_settings - First observed
update_form_settings - First observed
update_frequency_cap - First observed
update_help_center_setting - First observed
update_journey - First observed
update_mail_domain - First observed
update_mail_reputation_thresholds - First observed
update_my_notification_preferences - First observed
update_newsletter - First observed
update_playbook_rule - First observed
update_proactive_message - First observed
update_proactive_settings - First observed
update_product - First observed
update_saved_reply - First observed
update_segment - First observed
update_sender_identity - First observed
update_support_inbox - First observed
update_team_notification_defaults - First observed
update_workspace_settings - First observed
use_email_template - First observed
use_managed_replies - First observed
verify_mail_domain - First observed
write_proactive_message_copy
Publisher details
- Operator
- Workado, LLC · Publisher source
- Operator website
- https://helpwell.ai
- Vendor relationship
- First-party
- Trust center
- Unknown
- Restrictions
- A HelpWell account and workspace are required. OAuth restricts access to the workspace, role and tool areas approved by the user. Feature availability depends on the workspace plan and configuration; email delivery requires a configured Resend integration, and Stripe workflows require the corresponding integration.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.