commsharbor
Server Details
Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
TDQS
Scored across 139 tools
Every tool targets a distinct resource and action, and the descriptions repeatedly disambiguate tricky boundaries like tenant CRM vs platform CRM, transactional send vs campaign launch, and the various export types. The main risk is volume: report/export/delivery tools are conceptually close enough that an agent must read carefully to avoid misselection.
Most tools follow a readable commsharbor_<resource>_<action> pattern, but conventions are mixed. Lists are sometimes bare plurals (audiences, templates, inboxes) and sometimes explicit _list (crm_contacts_list, crm_deals_list), and there are single-word outliers like health, me, context, and logout, plus a standalone pricing tool without the commsharbor_ prefix.
At 139 tools, this is an extreme MCP surface, far beyond the threshold where a tool set becomes unwieldy. Even with strong grouping into domains, the sheer size imposes a large cognitive and context burden on an agent choosing among tools.
The surface is unusually comprehensive: full CRUD for CRM entities, audiences, templates, campaigns, imports, exports, domains, inboxes, webhooks, billing, and preferences. Some lifecycle gaps remain—suppressions can be created but not removed, webhooks have no update or enable, and domains/inboxes lack remove or re-enable operations.
Available Tools
139 toolscommsharbor_audience_createAInspect
Create an audience or saved segment. Only allowlisted filter fields are accepted — a saved segment cannot be turned into an arbitrary query over the CRM.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | static or saved_segment | |
| name | Yes | Audience name | |
| filter | No | The saved filter, for `saved_segment`. Allowlisted fields only. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It clearly signals a create/write operation and the important limitation about allowlisted filter fields, but it does not mention permissions, failure behavior for invalid filters, duplicate names, or what the created resource returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The action is front-loaded, and the second sentence carries the single most important constraint. 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 create operation with no output schema and no annotations, the description leaves the filter structure, allowed field list, and response shape undefined. It is minimally sufficient because the schema covers required/optional parameters, but an agent still lacks concrete guidance for building a valid filter object.
Complex tools with many parameters or behaviors need more documentation. 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 reinforces the filter constraint already present in the schema ('Allowlisted fields only') and adds the 'arbitrary query over the CRM' framing, but it does not meaningfully enhance the parameter docs.
Input schemas describe structure but not intent. Descriptions should explain 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 opening sentence names a specific verb and resource: 'Create an audience or saved segment.' It identifies the two supported kinds (static, saved_segment) and is clearly distinct from sibling update/delete/get tools, which address different operations on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 does not name alternatives or state when to prefer this tool over audience_update or audiences, but it does give an operative constraint: only allowlisted filter fields are accepted, so a saved segment cannot be an arbitrary CRM query. That is useful context for deciding whether this tool fits, but not explicit selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_deleteAInspect
Delete an audience and its memberships. Contacts themselves are untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the deletion includes memberships and leaves contacts untouched, which is useful. However, it does not mention permanence, required permissions, or any side effects beyond the audience itself, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous words. The primary action is front-loaded, and the clarifying note about contacts follows immediately. It is highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two well-documented parameters and no output schema, the description covers the essential behavior: what is deleted and what is not. It does not mention error handling or prerequisites, but those are minor for this tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (audience_id and organization_id) are already documented in the schema. The description adds no additional parameter-level meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('an audience'), and the scope ('and its memberships'), while explicitly noting that contacts are untouched. This distinguishes it from sibling tools like create, get, and member_remove, and the 'contacts untouched' note clarifies it does not delete the underlying contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (to delete an audience) but does not explicitly mention alternatives or when not to use it. It could have clarified that individual member removal should use member_remove instead, but the core usage is inferred from the clear action statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_getAInspect
Read one audience of this organization.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. 'Read' indicates a non-mutating operation and 'one audience' limits scope, but the description does not say what data is returned, how missing audiences are handled, or any constraints beyond the organization scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word—'Read', 'one', 'audience', 'this organization'—earns its place and contributes to scoping the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 get with fully documented inputs, the description is minimally sufficient for selecting and invoking the tool. However, with no output schema and no mention of the returned audience structure or error behavior, the response shape is left entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with clear descriptions for both parameters, so the baseline is 3. The description adds no parameter syntax or format details; it only reinforces that the audience belongs to the active organization, which matches the schema's 'Active organization ID' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read'), names the resource ('one audience'), and scopes it to 'this organization,' which distinguishes it from listing, creating, updating, or deleting audiences. Even without explicitly naming a sibling, the singular 'one' separates it from commsharbor_audiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Read one audience' establishes the retrieval context clearly and implies this tool is for fetching a single audience rather than listing or mutating audiences. It does not explicitly name alternatives or say when not to use it, but the singular/read framing gives an agent enough context to choose correctly among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_member_addAInspect
Add a CRM contact to a static audience. Only for static audiences: a saved segment's membership comes from its filter, not from this route.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | CRM contact ID | |
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the important static-only constraint, but it does not disclose side effects, such as whether duplicate memberships are prevented, whether the contact must already exist, or what happens on failure. The static-audience nuance adds value, but the mutation behavior remains under-described.
Agents need to know what a tool does to the 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 tight sentences with no filler. The primary action is stated first, and the critical scope restriction follows immediately. 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 a simple three-parameter endpoint with full schema coverage, the description is nearly complete: it explains the action, the target resource, and the key limitation about static audiences. Minor gaps remain around idempotency and error behavior, especially since there is no output schema to clarify expected results.
Complex tools with many parameters or behaviors need more documentation. 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 percent, so the schema already documents all three parameters as IDs. The description adds no additional meaning about how the parameters interact or what valid values look like, 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 uses a specific verb and resource: 'Add a CRM contact to a static audience.' It also distinguishes this tool from sibling audience tools by explicitly scoping it to static audiences, so an agent can tell it apart from audience_create or member_remove without guessing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Only for static audiences') and when not to use it ('a saved segment's membership comes from its filter, not from this route'). This gives clear exclusion criteria and prevents misuse on segment-managed audiences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_member_removeCInspect
Remove a contact from a static audience.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | CRM contact ID | |
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the contact is permanently removed, whether the operation is idempotent, what happens if the contact is not in the audience, or any side effects. The word 'Remove' implies mutation, but the actual behavior is not detailed enough for an agent to understand the consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that uses minimal words. It is appropriately sized and front-loaded with the action. It lacks additional detail but does not waste words, so it earns a 4 for conciseness and 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?
Given the tool's simplicity (3 required parameters, no output schema, no annotations), one might expect a higher score, but the description is still incomplete. It does not mention prerequisites (e.g., the audience must exist, the contact must be in the audience), the result (e.g., success or error messages), or any caveats like the difference between static and dynamic audiences. An agent can call it correctly from the schema, but it lacks important contextual details.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is 100% and all three parameters have descriptive names and brief descriptions (e.g., 'CRM contact ID', 'Audience ID', 'Active organization ID'). The description adds no further meaning beyond these, so the baseline of 3 is appropriate. However, it does not clarify the relationship between audience_id and contact_id or clarify what 'Active organization ID' means in the context of removal.
Input schemas describe structure but not intent. Descriptions should explain 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 'Remove a contact from a static audience' clearly states the action (remove) and the resource (contact from audience). It differentiates from sibling tools like 'add' and 'members' by indicating removal, but does not explicitly contrast with the sibling 'audience_member_add' or clarify 'static audience', which could be ambiguous against dynamic audiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool vs. alternatives. There is no mention of when removal is appropriate, whether it is reversible, or how it relates to the audience member add tool. An agent might need to infer that this is the inverse of 'audience_member_add' but that is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_membersAInspect
List the contacts currently in one audience.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, maximum 100 | |
| cursor | No | Opaque pagination cursor | |
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It clearly conveys a read-only snapshot of current audience membership, but it does not disclose pagination behavior, result shape, or behavior for invalid or missing audience 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?
The description is a single focused sentence with no filler. The core action and resource are front-loaded, making it appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description identifies what the tool returns conceptually (contacts in an audience), and the schema covers required parameters and pagination. It is slightly thin on result shape and pagination behavior, but for a low-complexity read/list tool this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter, including cursor as an 'Opaque pagination cursor' and limit as 'Page size, maximum 100'. The description adds no additional parameter semantics beyond the audience/contact context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('contacts currently in one audience'), making the tool's purpose clear. It distinguishes itself from sibling tools like commsharbor_audiences (listing audiences) and member_add/remove (mutating membership), though it does not explicitly contrast with commsharbor_audience_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tool when you need the current contacts in a specific audience. However, there is no explicit when-not guidance or routing to alternatives such as commsharbor_audience_get, so the context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audiencesBInspect
List static audiences and saved segments.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, maximum 100 | |
| cursor | No | Opaque pagination cursor | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the read operation 'List' and does not mention pagination behavior (despite cursor/limit parameters), result ordering, or the distinction between static audiences and saved segments. This leaves significant behavioral traits undisclosed.
Agents need to know what a tool does to the 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 no filler. It efficiently communicates the core action and resource, fitting the minimal structure expected for a simple list 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?
The tool has a fully documented schema and no output schema, so the description need not explain return values. However, it does not clarify what differentiates 'static audiences' from 'saved segments' or explicitly note the paginated nature of the response, leaving some context for the agent to infer from the parameters.
Complex tools with many parameters or behaviors need more documentation. 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 parameters (organization_id, limit, cursor) are documented. The description adds no additional parameter-level meaning, such as how 'static audiences' relates to the query or when to use cursor. Baseline 3 is appropriate given the high schema 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?
The description 'List static audiences and saved segments' clearly specifies the verb (list) and resource (audiences and saved segments). It distinguishes this from sibling tools like commsharbor_audience_get (singular fetch) and commsharbor_audience_members (list members), though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the verb 'List' – use this to retrieve a collection of audiences. However, there is no explicit guidance on when to choose this over siblings, such as commsharbor_audience_get for a single audience, or mention of prerequisites beyond the required organization_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_audience_updateBInspect
Rename an audience or change its saved filter.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Audience name | |
| filter | No | New saved filter. Allowlisted fields only. | |
| audience_id | Yes | Audience ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It names the mutation ('rename' or 'change saved filter') but does not explain whether the update is a partial or full replacement, what happens to existing audience references, whether validation errors can occur, or what the response looks like. This is a meaningful 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?
The description is a single efficient sentence with no filler. It clearly lists the two supported update operations and is 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?
Given no output schema and no annotations, the description is too thin for a mutation tool with a nested filter object. It omits usage context, side-effect transparency, and any indication of success or failure behavior, so an agent gets only the bare minimum needed to understand the 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%: name, filter, organization_id, and audience_id all have descriptions. The tool description adds no significant parameter semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: rename an audience or change its saved filter. It clearly distinguishes this tool from siblings like create, delete, get, and member operations, so an agent can identify what it does at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 description—modify an existing audience's name or filter—but there is no explicit guidance about when to use this tool versus alternatives like commsharbor_audience_create or commsharbor_audience_delete. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_auditBInspect
List tenant audit events. Audit records are never rewritten and never carry recipient PII.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque cursor | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds useful context: 'Audit records are never rewritten and never carry recipient PII,' implying immutability and privacy. However, it does not explicitly confirm the operation is read-only, nor does it mention pagination behavior, ordering, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary purpose is front-loaded, and the additional behavioral notes are concise and relevant. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list operation with two parameters and no output schema, the description is minimally sufficient. It lacks details on how to use the cursor for pagination, what fields the returned audit events contain, and any ordering or time-range constraints, which would help the agent fully understand the tool's 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% — both parameters have descriptions ('Opaque cursor' and 'Active organization ID'). The tool description adds no additional parameter meaning beyond what the schema already provides, 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 states the verb and resource: 'List tenant audit events.' It identifies a specific, distinct resource that no sibling tool explicitly appears to cover, but it does not explicitly differentiate itself from other event-listing tools like commsharbor_delivery_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any exclusions, prerequisites, or context such as compliance or security review scenarios. The agent must infer usage solely 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.
commsharbor_billingAInspect
Read the organization's plan, limits and global entitlements. Read this before a bulk send: state.active says whether sending is allowed and warning says when the plan runs out. A new organization's trial starts with its first domain or send (state.started).
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the read-only nature ('Read') and adds behavioral context by explaining the state fields (active, warning, started) and trial behavior, which helps the agent interpret the response. Does not mention side effects or errors, but for a simple read this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, then specific guidance on key fields. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description explains the key response fields (state.active, state.warning, state.started) that the agent needs to make decisions. It doesn't enumerate every field, but the essential ones for the stated use case are covered, making the tool usable.
Complex tools with many parameters or behaviors need more documentation. 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 parameter (organization_id) is fully described in the schema ('Active organization ID') with 100% coverage. The description adds no additional parameter 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?
The description clearly states the tool reads the organization's plan, limits, and global entitlements. It distinguishes itself from siblings like commsharbor_billing_catalog (catalog) and commsharbor_billing_purchase (purchase) by focusing on the read-only billing 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?
Explicitly instructs to read before a bulk send and explains the meaning of state.active and state.warning, giving a clear when-to-use directive. Does not mention alternatives or when not to use it, but the context is sufficient for this read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_billing_catalogAInspect
Read plans, prices and x402 network. Public and unauthenticated: an agent should be able to learn what things cost before deciding whether to sign up at all.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly states the operation is read-only and unauthenticated, which are the key behavioral traits an agent needs. It does not describe response shape or freshness, but for a zero-parameter public catalog this is acceptable.
Agents need to know what a tool does to the 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 with the core action front-loaded. The second clause is rationale rather than tool behavior, but it is brief and adds decision-relevant context 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 simple public catalog with no parameters and no output schema, the description provides the essential expectations: no authentication, read-only behavior, and what data is returned. It could mention that no arguments are required in prose, but the empty input schema already conveys that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameter semantics to document. The description confirms the tool can be called freely without inputs, matching the baseline for a no-parameter 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 states a specific verb ('Read') and a concrete resource ('plans, prices and x402 network'), and adds that it is public and unauthenticated. This makes the tool's purpose clear, but it does not explicitly differentiate it from sibling tools like commsharbor_billing or pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a clear use case: learn costs before deciding whether to sign up. It also clarifies that no authentication is needed. It does not explicitly discuss exclusions or alternative tools, but the context is strong enough for an agent to know when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_billing_purchaseAInspect
Buy a pass or top-up through the house's payment door (credit or x402); 409 while live checkout is off. While catalog.checkout_live is false this answers 409 checkout_disabled — nobody is charged by accident; the local dev stack completes it with the house's simulated payment. Otherwise, without payment it answers the standard 402 with accepts[] and both doors (a cred_… credit token, or X-PAYMENT). What it buys is a global entitlement: a pass runs 30 days (stacked after the current one), a top-up 365 days and needs an active pass. The same payment never grants twice, and the Idempotency-Key makes a credit retry safe.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Which purchase to request. | |
| idempotency_key | Yes | Stable logical purchase key | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does so richly: it discloses the 409 checkout_disabled response, the 402 flow with accepts[], the two payment doors (cred token and X-PAYMENT), entitlement durations, stacking behavior, and idempotency safety. This is far beyond what the schema reveals.
Agents need to know what a tool does to the 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 dense and every sentence earns its place, front-loading the core purchase action and payment door. However, it runs long and uses jargon like 'x402' that mildly hurts readability; a little more explicit structure would push it to 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?
For a 3-parameter tool with no output schema and no annotations, the description is remarkably complete: an agent knows the main success path, the failure modes, payment mechanisms, retry semantics, and what constitutes a valid purchase. Nothing essential for selecting or 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?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains what 'pass' versus 'topup' entails (30 vs 365 days, stacking, active-pass requirement) and that the idempotency_key makes credit retries safe. This lifts it 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 opens with a specific verb and resource: 'Buy a pass or top-up'. It also states the payment method ('credit or x402') and the global entitlement outcome, distinguishing it clearly from related tools like commsharbor_billing_catalog and commsharbor_billing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context for using the tool: it is for purchasing a pass or top-up, with explicit behavior when checkout is disabled versus enabled. It does not explicitly name alternatives or state when not to use it, so it falls 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.
commsharbor_campaign_createBInspect
Create a campaign draft. All three must already exist and be usable: a draft cannot be created against an unverified domain or an unpublished template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| domain_id | Yes | Active sending domain ID | |
| audience_id | Yes | Audience ID | |
| template_id | Yes | Published marketing template ID | |
| organization_id | Yes | Active organization ID | |
| template_version | No | Published version to freeze into the campaign. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It discloses a key behavioral constraint (dependencies on verified domain and published template) but omits other critical traits: what the response contains (e.g., campaign ID), error behavior, and any side effects. It is a write operation, but that is inferred from 'Create,' not stated. The single constraint is useful but insufficient for a mutation tool with 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?
Two sentences with no filler. The main purpose is front-loaded, and the prerequisite constraint is stated succinctly. 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 creation tool with 6 parameters and no output schema, the description is thin. It does not mention the optional template_version parameter or what the success response looks like. An agent would not know whether the draft ID is returned or how to reference it later. Given no annotations and no output schema, this is a notable 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 parameters are fully documented. The description adds no new parameter-level information beyond the schema; it reiterates that domain and template must be active/published, which the schema already states. Thus it meets the baseline but adds minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a campaign draft') and specifies the resource type. It differentiates from siblings like campaign_launch and campaign_update by emphasizing 'draft.' The prerequisite mention further clarifies 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?
It implies when to use it (to create a draft) but does not explicitly contrast with alternatives such as campaign_launch or campaign_update. It provides context that the draft cannot be created against unverified domains or unpublished templates, which is a usage constraint, but it does not name sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_campaign_getAInspect
Read one campaign, without any recipient data.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral transparency burden. It states the operation is a read and explicitly excludes recipient data, which is useful. However, it does not disclose output shape, error behavior, or auth requirements, though these are less critical for a simple 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?
The description is a single sentence with no filler, and the core action and scope are front-loaded. 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 low-complexity two-parameter read operation, the description and schema together cover invocation well. The key exclusion ('without any recipient data') is explicitly stated. A return-value description is missing, but the simplicity of the operation makes this 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%, and both parameters have clear descriptions in the schema. The tool description adds no additional parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('one campaign'), and adds a critical scope qualifier ('without any recipient data'). This clearly distinguishes it from sibling tools like campaign_report or campaigns that would return aggregate or recipient-level information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'without any recipient data' implies when this tool is appropriate versus a more data-rich alternative, but it never names an alternative or states explicit when-to-use/when-not-to-use conditions. The intended context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_campaign_launchAInspect
Freeze and launch or schedule a campaign idempotently. The freeze happens once and never again: consent, suppressions and audience membership are evaluated at this moment, and the resulting set is what gets sent. Replaying the same Idempotency-Key returns the same campaign and produces no second dispatch.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID | |
| scheduled_for | No | Optional ISO-8601 instant with offset | |
| idempotency_key | Yes | Stable launch key | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It thoroughly explains idempotency (replaying the same key returns the same campaign and produces no second dispatch), the one-time freeze, and that consent, suppressions, and audience membership are evaluated at freeze time. This goes well beyond a basic 'launches a campaign' and gives the agent a clear mental model of side effects and guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place. The main action is front-loaded, followed by the critical freeze behavior and the idempotency guarantee. No fluff or repetition; every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a launch tool with no output schema, the description covers the essential behaviors: idempotency, freeze timing, and what gets sent. It does not mention error cases (e.g., campaign not found, invalid state) or required preconditions (e.g., campaign must exist), but these are often expected to be handled generically. The freeze and idempotency details are sufficiently complete for an agent 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 parameters already have descriptions. The description adds meaningful context for the idempotency_key by explaining its replay semantics (returns same campaign, no second dispatch) and clarifies that scheduled_for controls scheduling versus immediate launch. This goes beyond the schema's one-line descriptions and enriches understanding, though it does not enumerate each parameter explicitly.
Input schemas describe structure but not intent. Descriptions should explain 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 opens with a specific verb+resource: 'Freeze and launch or schedule a campaign idempotently.' It clearly states what the tool does (launches or schedules a campaign) and distinguishes it from sibling tools like campaign_create (creation), campaign_get (retrieval), and campaign_update (modification). The freeze semantics add specificity, leaving no doubt this is the launch 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?
The description implies when to use this tool (when launching or scheduling a campaign) but does not explicitly contrast it with alternatives or state conditions like 'use this instead of campaign_update' or prerequisites such as the campaign must exist. The 'launch or schedule' wording covers both immediate and delayed dispatch, but there is no explicit guidance on choosing between them beyond the scheduled_for parameter. This is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_campaign_reportAInspect
Reconcile campaign deliveries and feedback. Counts only. Which specific person opened what is not something this API answers.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that the tool returns only counts, not individual-level data, which is a key behavioral trait. It also implies read-only behavior by describing a reconcile/aggregate function. While it doesn't mention side effects or permissions, the disclosure of output scope is valuable and exceeds a 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?
The description is extremely concise: two sentences that front-load the purpose and immediately clarify the limitation. Every word earns its place, and there is no fluff or redundancy. It is appropriately sized for a simple 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?
Given the tool's simplicity (two required parameters, no output schema), the description adequately conveys what the tool does and what it returns. It clarifies the scope and the nature of the output (counts only). It doesn't mention prerequisites or errors, but for a read-only report tool this is sufficient. A 5 might be warranted if it specified return structure or error cases, but it's not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptions ('Campaign ID' and 'Active organization ID'), achieving 100% coverage. The tool description adds no additional meaning beyond that, so it does not elevate beyond the baseline. It doesn't clarify formats, relationships, or usage nuances for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with the verb 'Reconcile' and the resource 'campaign deliveries and feedback.' It also explicitly distinguishes this tool from any that would provide per-person open details, which helps differentiate it from sibling tools like commsharbor_delivery_events or commsharbor_campaign_get. 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?
The description provides clear context on when to use this tool: when aggregate counts are needed. It also gives an explicit exclusion: 'Which specific person opened what is not something this API answers,' which tells the agent this tool is not suitable for individual-level queries. However, it does not name alternative tools for that need, so it falls slightly 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.
commsharbor_campaignsAInspect
List the campaigns of the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden of conveying behavior. 'List' correctly suggests a read-only, non-mutating operation, but the description does not disclose pagination, ordering, result shape, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. Every word contributes to meaning, and the key action and scope 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 simple list operation with a single fully described parameter, the description is adequate but minimal. It does not mention pagination, filtering, or return value expectations, which would help an agent fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter, organization_id, is described as 'Active organization ID'. The description adds little beyond reinforcing the organization scope, so the schema is carrying the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain 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 ('List') and resource ('campaigns') and scopes the operation to the organization. It clearly conveys a collection-reading operation, though it does not explicitly differentiate itself from sibling tools like commsharbor_campaign_get or commsharbor_campaign_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this tool is for listing all campaigns, and sibling names suggest alternatives for single-campaign or campaign-specific operations. However, there is no explicit guidance about when to choose this over related tools or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_campaign_updateAInspect
Edit, pause, resume or cancel a campaign. Content can only change while the campaign is a draft. After launch this route moves state — the frozen recipient set and the frozen template version do not change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Campaign name | |
| status | No | paused, running or canceled | |
| domain_id | No | Active sending domain ID | |
| audience_id | No | Audience ID | |
| campaign_id | Yes | Campaign ID | |
| template_id | No | Published marketing template ID | |
| organization_id | Yes | Active organization ID | |
| template_version | No | Published version to freeze into the campaign. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It goes beyond a simple 'update' by explaining the freeze semantics for the recipient set and template version after launch, which is valuable state-change information. It does not mention auth, error cases, or response details, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The action list is front-loadedaging, and the important lifecycle constraint follows 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?
The description gives the key lifecycle logic but omits some context needed for confident invocation: the exact status mapping for pause/resume/cancel, any state-transition validation rules, and the response shape (no output schema). The sibling campaign_launch tool could be referenced to clarify the launch boundary. These gaps make it functional yet not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes all eight parameters with 100% coverage, so the baseline is 3. The description adds useful context around template_version and draft-only content changes, but it does not resolve the inconsistency between the status enum ('paused', 'sending', 'cancelled') and the schema description saying 'paused, running or canceled'. It provides no additional parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific set of actions—edit, pause, resume, or cancel—applied to a campaign, with the resource clearly identified. It also distinguishes itself from launch/create/get siblings by focusing on post-create state and content updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clearly explains the main usage constraint: content changes are only possible while the campaign is a draft, and after launch only state transitions occur. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_file_getAInspect
Download a tenant CSV before expiry. Files expire seven days after creation. Durable audit and row-level results survive the file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Contact file ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds meaningful behavioral context: files expire after 7 days and that durable audit and row-level results persist beyond the file. This goes beyond a simple 'download' and helps set expectations about the data's lifecycle, though it does not explicitly state the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the primary action front-loaded. Every phrase adds value: the action, the expiry warning, and the persistence note. No fluff 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 simple download tool with only two parameters and no output schema, the description covers the essential context: the file type, expiration, and what data persists. It does not describe the response format, but that is likely self-evident for a file download. Minor omission given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (file_id, organization_id) are already described. The description adds no additional semantic detail about the parameters, so it meets the baseline but does not enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Download a tenant CSV' with a specific resource, but does not explicitly differentiate from sibling download tools like commsharbor_data_export_download or commsharbor_contacts_export. The 'tenant' qualifier is slightly ambiguous but the intent is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 contextual guidance ('before expiry') and explains the 7-day expiration, but it does not mention when to avoid this tool or name alternative tools. There is no explicit routing, so an agent might not know this is the right download for contact files specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_import_confirmAInspect
Confirm an import with a mandatory idempotency key. The idempotency key is mandatory here. Reusing it returns the same import and never creates a second Queue message — which is what keeps a retry from importing everyone twice.
| Name | Required | Description | Default |
|---|---|---|---|
| import_id | Yes | Contact import ID | |
| idempotency_key | Yes | Unique confirmation key | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well by disclosing the key behavioral trait: reusing the idempotency key returns the same import and never creates a second Queue message. It leaves some behaviors unspecified (e.g., error handling or what confirmation triggers), but the most important side-effect is clearly 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?
The description is short and front-loaded, with the core action in the first sentence. It could be slightly tighter because 'mandatory idempotency key' is repeated as 'The idempotency key is mandatory here,' but the overall structure is efficient and 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?
For a simple three-parameter tool with no output schema, the description covers the essential invocation context and the one behavioral nuance that matters for correct use. It does not describe the response format or failure modes, but nothing critical is missing for an agent 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 the baseline is 3. The description adds meaningful semantics for idempotency_key beyond the schema's 'Unique confirmation key' by explaining that reuse returns the same import and prevents duplicate Queue messages. It adds nothing new for import_id or organization_id, but their schema descriptions are sufficient.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Confirm an import') and a specific resource with a notable constraint (mandatory idempotency key). It distinguishes this tool from sibling read/preview operations like contact_import_get and contact_import_preview, though it does not name 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 description gives clear context: this tool is for confirming an import and requires an idempotency key, with reuse returning the same import. It explains the practical reason for the idempotency requirement (avoiding duplicate imports on retry) but does not explicitly contrast it with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_import_errorsAInspect
List the row-numbered errors of one import, so the source file can be fixed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, maximum 100 | |
| cursor | No | Opaque pagination cursor | |
| import_id | Yes | Contact import ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It communicates a read-only list operation and adds that results are row-numbered per import, but does not address pagination behavior, response contents beyond row numbers, or other operational details. The verb 'List' signals safety, yet the description is otherwise minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler; the key facts (list, row-numbered errors, one import, purpose) are front-loaded and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with fully documented parameters, this is mostly complete: the agent knows the required identifiers, the pagination knob, and the purpose. The main gap is the lack of an output schema or a statement of what fields each error entry contains, but 'row-numbered errors' provides enough to call and interpret the tool at a basic 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?
The input schema already describes all four parameters completely ('Page size, maximum 100', 'Opaque pagination cursor', 'Contact import ID', 'Active organization ID'). The description adds only a general context of row-numbered errors and does not elaborate parameter usage, so it is 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?
The description uses a specific verb ('List') and a specific resource ('row-numbered errors of one import'), and attaches a clear purpose ('so the source file can be fixed'). It is immediately distinguishable from siblings like contact_import_preview or contact_import_get because it is explicitly about error rows for a single import.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 purpose clause implies the intended use—when an import produced row-level errors that need correction in the source file. However, it does not explicitly state when not to use it or name alternatives, so the agent has to infer the tool-selection boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_import_getAInspect
Read one durable contact import and its current counts.
| Name | Required | Description | Default |
|---|---|---|---|
| import_id | Yes | Contact import ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that this is a read operation and returns current counts, which implies non-mutating behavior. However, it does not mention any other behavioral aspects (e.g., whether it includes errors, if counts are live, or any auth requirements). This is a minimal but adequate disclosure for a simple get 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?
The description is a single, front-loaded sentence that immediately states the core purpose. It is concise with zero wasted words, and the key information (read, single import, counts) is presented upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 get operation with two well-documented parameters, the description is largely complete. It specifies the returned data (counts) and the action. Minor gaps include not clarifying what 'durable' means or what exactly the counts include, but these are not critical for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented (import_id and organization_id). The description does not add any meaning beyond the schema, so the baseline of 3 is appropriate. No extra clarification or format details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Read) and the resource (one durable contact import) plus what is returned (current counts). It is specific and distinguishes from siblings like confirm, errors, preview, and imports by focusing on reading a single import with counts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (confirm, errors, preview, imports). The description only states what it does, not the conditions that would select it over alternatives. Given the large sibling list, explicit routing would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_import_previewAInspect
Upload and preview a consent-declared CSV. Nothing is created by this call. The consent declaration is mandatory: an import that cannot say why these people may be emailed is an import that does not happen.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | Yes | CSV, maximum 5 MB and 10,000 rows | |
| basis | Yes | Consent basis | |
| source | Yes | Consent source | |
| mapping | Yes | Which CSV column feeds which contact field, e.g. `{ "email": "Email" }`. | |
| captured_at | Yes | ISO-8601 capture time | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It explicitly states the most critical side-effect ('Nothing is created by this call') and the mandatory consent declaration, adding meaningful behavioral context beyond the schema. It does not mention return values or follow-up behavior, but these are less critical for a preview operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the key action front-loaded. The third sentence, while memorable, is slightly long-winded ('an import that cannot say why these people may be emailed is an import that does not happen') and could be tightened to 'The consent declaration is mandatory.' Overall, it is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 required parameters and no output schema, so the description should clarify what the preview returns or how to follow up (e.g., calling commsharbor_contact_import_confirm). It does not mention return values, error handling, or next steps, leaving an important gap for an agent deciding whether to proceed.
Complex tools with many parameters or behaviors need more documentation. 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 does not add parameter-specific details beyond the schema; it merely reinforces the consent-related parameters ('consent-declared CSV') without explaining individual params. The schema already handles parameter semantics effectively.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Upload and preview a consent-declared CSV.' It further clarifies the non-mutating nature with 'Nothing is created by this call,' which distinguishes it from sibling tools like commsharbor_contact_import_confirm. This is a clear, specific, and non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'preview' and the explicit statement 'Nothing is created by this call' provide clear context that this tool is for pre-flight validation rather than final import. However, it does not explicitly name alternatives (e.g., 'use commsharbor_contact_import_confirm to actually import'), 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.
commsharbor_contact_importsAInspect
List the contact imports of the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, maximum 100 | |
| cursor | No | Opaque pagination cursor | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'List', which implies a read operation, but it fails to mention pagination (despite the cursor parameter), response format, or any other operational behavior. The description does not contradict annotations (there are none), but it is dangerously underinformative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource without any filler. Every word earns its place, and it is appropriately sized for a list operation with minimal complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even for a simple list tool, the description is incomplete. It does not explain that results are paginated via the cursor, nor does it describe the output shape. Since there is no output schema, the agent has no guidance on what to expect in the response, making the description insufficiently complete for a tool with pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for all three parameters (organization_id, limit, cursor) with 100% coverage. The description adds no new meaning—'of the organization' merely echoes the schema's organization_id description. Thus, the schema does the heavy lifting, and the description contributes nothing extra.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (contact imports) with an explicit scope (organization). It differentiates from sibling tools like commsharbor_contact_import_get by being plural and implying a collection listing, making it immediately distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a clear use case: list all contact imports for the organization. However, it does not explicitly state when to avoid this tool or mention alternatives such as commsharbor_contact_import_get for retrieving a single import, leaving the choice largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_marketing_getAInspect
Read consent and preference for a CRM contact. Being in the CRM is not permission to email. This resource is where permission actually lives.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | CRM contact ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states the operation is a read, implying no side effects, and adds domain context about where permission lives. However, it does not disclose response shape, error behavior, or any special conditions around consent/preference data. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action. The two follow-up sentences add meaningful context about the consent concept rather than fluff. Slight redundancy between 'Being in the CRM is not permission to email' and 'This resource is where permission actually lives' keeps it from being a perfect 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?
The tool is simple with two fully described parameters, and the description conveys the core domain concept. But with no output schema and no annotation coverage, an agent does not learn what the response will contain or how preferences are represented. This is a minor gap for such a simple read, but it prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. 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 parameters are already fully documented in the schema. The description adds no additional parameter-level meaning beyond identifying what the resource represents. Baseline 3 is appropriate because 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 opens with a specific verb and object: 'Read consent and preference for a CRM contact.' It identifies the exact resource and clarifies that this is the permission source, distinguishing it from general CRM contact reads. The warning 'Being in the CRM is not permission to email' reinforces that this tool serves a distinct purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this tool when you need the actual consent/preference record for a contact. It also provides a strong exclusion signal by warning that CRM membership alone is not permission. However, it does not explicitly name alternative sibling tools such as commsharbor_crm_contacts_get or commsharbor_preference_get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contact_marketing_putAInspect
Record permission-based marketing consent. This NEVER restores a previous unsubscribe. If the contact opted out, they stay out and marketing_enabled remains false — recording consent after the fact does not undo their decision.
| Name | Required | Description | Default |
|---|---|---|---|
| basis | Yes | explicit or documented_relationship | |
| source | Yes | Consent source | |
| contact_id | Yes | CRM contact ID | |
| captured_at | Yes | ISO-8601 capture time | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it delivers the most important safety-critical trait: recording consent NEVER restores a previous unsubscribe, and marketing_enabled remains false for opted-out contacts. This prevents a serious misuse that an agent could easily make.
Agents need to know what a tool does to the 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 focused sentences with no wasted words. The primary purpose is front-loaded, and the critical caveat follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given fully documented parameters, no annotations, and no output schema, the description covers the central safety context an agent needs. It is slightly incomplete in that it does not mention response behavior or explicitly contrast with related marketing/suppression tools, but it is nearly sufficient for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented in the input schema. The description adds no parameter-level nuance, though it does reference the marketing_enabled field, which is not part of the input schema and helps explain the tool's effect.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Record permission-based marketing consent') on a defined resource, and immediately clarifies the tool's role versus a generic consent toggle. The explicit warning about not restoring an unsubscribe makes its purpose unmistakable even among many sibling 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?
It gives clear when-to-use context: record permission-based consent. It also states a critical when-not-to-use case: do not use it to restore a previously opted-out contact. It does not explicitly name alternative sibling tools such as contact_marketing_get or suppression_create, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contacts_exportBInspect
Create a CSV export of the organization's contacts, retained for seven days.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that the export is 'retained for seven days,' which is a useful behavioral detail beyond the schema. However, it does not disclose other important aspects like the format details, whether the export is synchronous or asynchronous, or how to retrieve the output. Since no annotations are provided, the description carries the burden, but it only partially covers 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, concise sentence that front-loads the action and resource, with a brief retention detail. Every word contributes meaning with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is fairly simple with one parameter and no output schema, so the description is almost adequate. However, some context is missing: what to do after the export is created, how to access the file, and the format (CSV) is stated but no link to retrieval tools. Given the simplicity, a 3 seems right; more could be added about retrieval workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the only parameter (organization_id) with a description, reaching 100% coverage. The description adds no additional semantic value beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Create') with a specific resource ('CSV export of the organization's contacts'), which is distinct enough from the sibling tools like commsharbor_contact_import_* or commsharbor_crm_contacts_*. It does not mention any alternative or differentiate explicitly, 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 guidance on when to use this tool versus other export-related tools such as commsharbor_data_export_create or commsharbor_contact_file_get. The description gives a general sense of usage (export contacts as CSV) but lacks exclusions or alternative routing, leaving the agent to infer when this is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_contextAInspect
Resolve the active organization identity. Read this before a write when you are not certain which tenant is active. Guessing is how data lands in the wrong organization. An organization API key answers kind: api_key with its scopes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation ('Resolve' and 'Read this before a write') and gives a concrete detail about the response ('An organization API key answers `kind: api_key` with its scopes.'). However, it does not explicitly state that the tool is non-destructive or what happens when no active organization is set, but for a context-resolution tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes a critical usage warning. Every sentence earns its place: the first defines what it does, the second explains when and why to use it, and the final detail about API keys adds practical context. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides enough for an agent to understand when to call it and what kind of response to expect. It mentions the API key response type but doesn't specify the full return structure (e.g., organization ID, name). Still, for a simple context tool, this 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?
The tool has zero parameters, so the schema provides no parameter documentation. The description adds value by explaining the tool's output behavior ('An organization API key answers `kind: api_key` with its scopes.'), which helps the agent interpret the result. Since there are no params, the baseline is high, and the description contributes context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Resolve the active organization identity.' This is a specific verb ('resolve') and resource ('active organization identity'), and it distinguishes itself from siblings like commsharbor_me or commsharbor_organization_get by focusing on the active tenant context. It also frames its use case ('before a write when you are not certain which tenant is active'), which makes it 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?
Explicit guidance is provided: 'Read this before a write when you are not certain which tenant is active.' This tells the agent exactly when to invoke it. It also warns against guessing, which clarifies the risk of not using it. While it doesn't list alternative tools, the context is clear enough that the agent knows this is the go-to for tenant disambiguation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_activities_createBInspect
Creates a activity in the tenant CRM. Required: note. Needs crm:write on the organization. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | note | |
| deal_id | No | deal id | |
| activity_type | No | activity type | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add useful context beyond the schema: the permission requirement (crm:write), the required 'note' field, and the return behavior (created resource with absolute URL). However, it does not disclose error behavior, validation rules, side effects, or what happens when optional fields like deal_id or activity_type are omitted, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no waste. It front-loads the core action ('Creates a activity'), then quickly covers required fields, permission, and return value. It is appropriately sized for a tool of this complexity, though a minor grammatical error and lack of structure (e.g., bullets) prevent a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 create tool with no annotations and no output schema, the description gives the essential facts: purpose, permission, required field, and return shape. It does not mention that organization_id is also required (only 'note' is highlighted), nor does it explain how activity_type or deal_id should be used. Given the sibling naming pattern, it could also clarify the tenant-vs-platform distinction more explicitly, so it is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter meaning beyond the schema: it highlights 'note' as required. It does not clarify the expected format, allowed values, or relationships among parameters such as deal_id or activity_type, so it neither raises nor lowers the baseline. The schema's own descriptions are extremely terse but 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 states a clear verb ('Creates') and a specific resource ('a activity in the tenant CRM'). The 'tenant CRM' qualifier helps distinguish this tool from the platform_crm_activities_create sibling, though it stops short of naming that alternative explicitly. Minor grammar issue ('a activity') does not obscure meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating activities within a tenant CRM, and it states a prerequisite ('Needs crm:write on the organization'). However, it does not mention when to prefer this over sibling tools like commsharbor_crm_activities_update or platform_crm_activities_create, nor does it state when not to use it. The usage context is clear but 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.
commsharbor_crm_activities_deleteBInspect
Deletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | activity_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It clearly indicates a destructive action and describes a key error response, but it does not mention success behavior, irreversibility, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no fluff, and the core action is stated first. It is well-structured for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a delete operation, the description covers the essential action, required permission, and an error case. However, it omits the success response and any details about the deletion being permanent or having cascading effects, which would improve 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?
Both parameters have schema descriptions but they are merely repetitions of the parameter names ('activity_id', 'organization_id'), providing zero semantic insight. The description text adds no clarification about the purpose or format of these parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Deletes' and the resource 'one activity' from the tenant CRM. It is specific enough to distinguish from other operations, though it does not explicitly name a 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?
Provides a prerequisite (crm:write permission) and an error condition (404 for foreign/missing id), but does not indicate when to prefer this over alternative delete tools (e.g., platform vs tenant).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_activities_getAInspect
Reads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | activity_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the required permission (crm:read) and the 404 behavior for foreign or missing IDs. This is meaningful behavioral context beyond the raw schema, though it does not describe response shape 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?
Two short sentences, front-loaded with the primary purpose, followed by permission and error behavior. Every sentence earns its place and 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 a simple two-parameter get operation, the description covers purpose, scope, required permission, and a key error case. It does not explicitly describe the return value, but no output schema is provided and 'Reads one activity' reasonably implies the activity object is 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?
Schema description coverage is 100%, so the baseline is 3 even though the schema's parameter descriptions are only the parameter names. The description adds context by tying the tool to the organization and tenant CRM, but it does not clarify formats, constraints, or how the IDs relate beyond what the schema already names.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Reads'), a clear resource ('one activity'), and a scope ('from the tenant CRM'), which distinguishes it from list/create/update/delete siblings. The singular 'one activity' makes the tool's role unambiguous even 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 clearly implies this is the tool for retrieving a single activity by ID, and the sibling names for listing/creating/updating/deleting provide natural contrast. It also states the required crm:read permission, but it does not explicitly say 'use list for multiple activities' or name an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_activities_listAInspect
Lists activities in the tenant CRM — something that happened with a contact, company or deal. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, deal_id, contact_id, company_id, activity_type. Needs crm:read on the organization. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| deal_id | No | deal_id | |
| company_id | No | company_id | |
| contact_id | No | contact_id | |
| activity_type | No | activity_type | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses cursor-based pagination (limit 1-100, opaque cursor), required permission (crm:read), and notes that every item includes an absolute URL. This gives a good behavioral profile, though it doesn't detail response structure or error 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 sentences with no fluff. The core purpose is front-loaded, followed by pagination, filters, auth, and a response note. 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?
The description covers the essential aspects: purpose, pagination, filters, auth, and a response detail. It doesn't mention sorting or default behavior beyond the schema's default limit, but for a list tool it is reasonably complete. The lack of an output schema is mitigated by the URL 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 coverage is 100% but the schema descriptions are trivial (just parameter names). The description adds meaning by clarifying which parameters serve as filters (q, deal_id, contact_id, company_id, activity_type) and explains the pagination mechanics for limit and cursor. This compensates for the thin schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb ('Lists') and resource ('activities in the tenant CRM') and defines scope ('something that happened with a contact, company or deal'). It clearly distinguishes from sibling CRUD tools (create/update/delete/get) and from other list tools for different entities (companies, contacts, deals).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use it: whenever a list of CRM activities is needed, with optional filters. It does not explicitly name alternatives or exclusions, but the context of sibling tools makes the usage obvious. The mention of filters and pagination gives practical guidance on how to refine the query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_activities_updateAInspect
Updates one activity in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | note | |
| deal_id | No | deal id | |
| activity_id | Yes | activity_id | |
| activity_type | No | activity type | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses PATCH-style semantics, the required permission, and an error condition (404). The only notable omission is the success response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core behavior, then permission and error behavior. No filler or repetition of schema field names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 simple flat schema and low parameter count, the description covers the essentials for a correct call: action, partial-update semantics, required permission, and id-related error behavior. It would be more complete if it stated the success response, but the tool is simple enough that 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 100%, so the baseline is 3. The description adds meaningful parameter context beyond the schema: only sent fields change, so optional body fields act as a partial update set, and the 404 clause clarifies that activity_id must be present and belong to the organization.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Begins with a specific action and resource: 'Updates one activity in the tenant CRM.' The 'one activity' qualifier plus the partial-update phrase clearly differentiates it from create/delete/get/list siblings, and 'tenant' distinguishes it from the platform-scoped update sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided: it is for modifying an existing activity, needs crm:write, and gives a 404 signal when the id is missing or foreign. It stops short of explicitly naming alternatives or when-not-to-use, so it misses a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_companies_createAInspect
Creates a company in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name | |
| domain | No | domain | |
| website | No | website | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions the permission requirement (crm:write) and the return value ('Returns the created resource with its absolute url'), which are useful. However, it does not disclose side effects (e.g., potential duplicates, required field validations, or error conditions). For a mutation tool with zero annotation coverage, more detail would be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, highly concise, and front-loaded with the core purpose. Every sentence adds useful information: purpose, required field, permission, and return type. No fluff 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?
The description explains the return format, which is good since there is no output schema. However, it leaves the optional parameters (domain, website) entirely unexplained, and does not mention any uniqueness or validation rules. For a create operation with 4 parameters, an agent would benefit from more detail on what constitutes a valid company (e.g., is name unique? does domain need to be a URL?). The description is minimal but covers the core, so it is just adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the parameter descriptions are tautological (e.g., 'name', 'domain'), providing no meaning. The description only restates that name is required, which is already in the schema. It does not explain what domain or website represent or any format constraints. With such unhelpful schema descriptions, the tool description should compensate, but it does not add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Creates a company in the tenant CRM.' It uses a specific verb (creates), resource (company), and context (tenant CRM), which differentiates it from sibling tools like commsharbor_crm_companies_delete, get, list, and update. An agent can immediately understand this is the creation operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating a company, which is clear from the context. It also states a prerequisite: 'Needs crm:write on the organization,' which is a useful guideline. However, it does not explicitly contrast with sibling create tools (e.g., contacts, deals), though the resource name makes this evident. No exclusions or alternative routing are given, so it is slightly above baseline but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_companies_deleteAInspect
Deletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | company_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the permission requirement and the 404 response for missing or foreign ids, which are useful behavioral traits. However, it does not mention permanence, cascading effects on related records, or the success response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, action-first with no filler. It front-loads the purpose and then adds necessary permission and error context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters and no output schema, the description covers the essential permission and error behavior. Missing details like success response and irreversible nature are minor given the simplicity and common expectations for delete operations.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions for both parameters are tautological ('company_id', 'organization_id'), adding no semantic value. The tool description indirectly implies their meaning via 'company' and 'tenant CRM', but it does not explicitly map parameters to their roles. Schema coverage is 100%, so the baseline is 3, and the description adds only marginal context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Deletes'), a specific resource ('one company'), and a scope ('tenant CRM'). This distinguishes it from sibling tools like create, get, list, and update, and 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?
It provides context for use by stating the required permission (crm:write) and the behavior for invalid ids (404). While it does not explicitly contrast with alternatives, the delete intent is obvious from the name, and the permission/error details help an agent decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_companies_getAInspect
Reads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | company_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses two key behaviors: the permission requirement (crm:read) and the 404 response for foreign or missing ids. This goes beyond the schema and provides actionable knowledge for the agent. It does not describe response shape or pagination, but for a single-get operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler. The primary purpose is front-loaded, followed by the permission requirement and the 404 behavior. Every sentence earns its place; no redundancy or off-topic 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 get operation with only two parameters and no output schema, the description covers purpose, permission, and error handling. It does not describe the return object, but that is often implicit for a get operation. The description is sufficiently complete for an agent to call it correctly, though it could note what is 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?
Schema coverage is 100% (both parameters have descriptions, albeit trivial ones that just repeat the parameter names). The description adds no extra meaning about organization_id or company_id, leaving the agent to infer from the names. Baseline of 3 is appropriate since the schema already documents both parameters; the description does not compensate further.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Reads'), resource ('one company'), and scope ('tenant CRM'). The phrase 'one company' distinguishes it from list operations, and the mention of id-based lookup is implied by 'a foreign or missing id answers 404.' Clearly distinguishable from siblings like commsharbor_crm_companies_list and commsharbor_crm_companies_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?
The description implies the use case (fetching a single company by id) but does not explicitly name alternatives or provide when-not-to-use guidance. It mentions the permission requirement (crm:read) but that is a prerequisite rather than usage context. No exclusions or comparisons to list/create/update tools are given, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_companies_listAInspect
Lists companies in the tenant CRM — an organization in the tenant CRM — a customer of the customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningfully disclose behavior: the endpoint is cursor-paginated, requires crm:read on the organization, and returns items with an absolute URL. It stops short of describing error or rate-limit behavior, but for a read-only list tool this is strong 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?
The description is short, front-loaded with the primary action, and packs pagination, filtering, authentication, and output URL information into a compact form. The middle em-dash clause is slightly confusing and does not earn its place as cleanly as the rest, preventing 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?
For a list endpoint with no output schema, the description covers the key operational details: required organization context, pagination cursor/length, filtering via q, permission requirement, and a guarantee that every item has an absolute URL. It does not describe the full item shape or error cases, but an agent has enough to invoke 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?
Although schema coverage is 100%, the schema's descriptions for q and organization_id are tautological ('q', 'organization_id'). The description compensates by clarifying the cursor mechanism, the limit range, the q filter, and the permission context tied to the organization, adding 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 opens with a specific verb, 'Lists', and a clear resource, 'companies in the tenant CRM', so an agent can immediately identify the operation. It does not explicitly name a sibling alternative for comparison, and the em-dash clause defining companies is somewhat awkward, 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 provides practical context: pagination parameters (limit 1-100, opaque cursor), a q filter, and a crm:read permission requirement. However, it does not state when to choose this over sibling tools (e.g., getting a single company) or mention exclusions, 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.
commsharbor_crm_companies_updateAInspect
Updates one company in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | name | |
| domain | No | domain | |
| website | No | website | |
| company_id | Yes | company_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the partial-update behavior, the required permission, and the 404 response for invalid or missing ids. This is significant behavioral context beyond the schema. It does not mention the return format, but for a mutation this is often not critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. It front-loads the primary purpose, then adds permission and error behavior. Every sentence earns its place, and the structure is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description covers the essential aspects: action, partial update, permission, and error handling. It does not describe the response body, but that is not always required for mutations. The description is sufficiently complete for an agent to call the tool correctly, though it could explicitly note that only required fields are identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but each parameter's description is just the field name (e.g., 'name', 'domain'). The description adds real semantics by clarifying that only provided fields change, implying the optionality of non-required fields. It also indicates that company_id and organization_id are identifiers via the 404 behavior. This adds meaning beyond the minimal schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update), the target (one company in the tenant CRM), and the key behavior (only the fields sent change). This differentiates it from create/delete/get/list and other entity updates. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (update an existing company) but does not explicitly state when to use it versus alternatives like create, delete, or get. It provides a permission requirement (crm:write) and an error condition (404 on bad id), which are contextual but not explicit routing to sibling tools. A clear 'use this when modifying an existing company' would have been stronger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_contacts_createAInspect
Creates a contact in the tenant CRM. Required: email, first_name. Needs crm:write on the organization. Returns the created resource with its absolute url. Being in the CRM is not permission to email: consent lives in the marketing sub-resource.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| company_id | No | company id | |
| first_name | Yes | first name | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it discloses that this is a mutating operation, the required permission, the return shape ('created resource with its absolute url'), and a meaningful behavioral caveat about consent living in the marketing sub-resource. This goes well beyond the simple verb.
Agents need to know what a tool does to the 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 tightly packed sentences, each earning its place: what it does, what is required/permitted, what is returned, and an important non-obvious caveat. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple create tool: it states required fields, permission, return value, and a crucial compliance boundary. It does not explicitly mention organization_id in the required list, though the schema marks it required, 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 baseline applies because the schema already documents every parameter. The description adds some context about required fields and the marketing/consent sub-resource, but it does not add meaningful meaning to individual parameters like company_id or organization_id.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Creates a contact in the tenant CRM.' It clearly distinguishes itself from sibling contact operations (get/list/update/delete) and names the minimally required fields. The scope is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 being a create operation and mentions the required crm:write permission, but it does not explicitly state when to use this tool versus update/list or when not to use it. There are no exclusions or alternatives provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_contacts_deleteAInspect
Deletes one contact from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the marketing sub-resource.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | contact_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers key behavioral aspects: it discloses the required permission ('crm:write'), the error behavior for missing or foreign IDs ('answers 404'), and a domain-specific nuance about consent residing in the 'marketing' sub-resource. This goes beyond the schema and adds meaningful context, though it doesn't detail side effects or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it opens with the core purpose, then delivers critical operational details (permission, error behavior, consent caveat) in just four sentences. No filler or redundancy, and it front-loads the most important 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 delete operation with two parameters and no output schema, the description covers the essential operational context: purpose, permission, error handling, and a relevant domain rule. It doesn't address potential side effects or reversibility, but given the simplicity, 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?
The schema provides descriptions for both parameters, but they are just the parameter names ('contact_id', 'organization_id') with no added semantics. The description does not elaborate on these parameters either. Since schema coverage is 100% but trivial, the description adds no extra value, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deletes one contact') and the resource ('tenant CRM'), distinguishing it from sibling operations like get, create, or update. The verb and object are explicit, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 naming the delete operation, but it does not explicitly compare with alternatives or state when to prefer this tool over others. It also doesn't mention when not to use it. However, the intent is clear enough that an agent can infer it's for removing contacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_contacts_getAInspect
Reads one contact from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the marketing sub-resource.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | contact_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the permission requirement ('Needs crm:read on the organization'), error behavior ('A foreign or missing id answers 404'), and a non-obvious consent caveat ('Being in the CRM is not permission to email: consent lives in the marketing sub-resource'). It does not describe the return format, but for a simple read that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. The primary purpose is front-loaded, followed by essential operational details (permission, error handling, consent). Every sentence adds value and there is no redundant 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?
Given the absence of an output schema and annotations, the description covers the critical aspects: operation type, required permission, error response for missing/foreign IDs, and a consent nuance. It does not describe the response structure, but for a single-contact read that is often inferred. The coverage is sufficient for an agent 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 description coverage is 100%, but the descriptions are tautological (just the parameter names). The tool description adds no additional meaning to contact_id or organization_id, though it implies contact_id identifies the contact and organization_id identifies the tenant via context. This meets the baseline of 3 but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Reads') and resource ('one contact from the tenant CRM'), immediately distinguishing it from list, create, delete, and update siblings. It also specifies the scope ('tenant CRM') and implies a single record retrieval by ID, which is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly name alternatives or state when to use this tool versus commsharbor_crm_contacts_list or others. It provides context about required permission (crm:read) and a consent caveat, but the selection guidance is only implied by the verb 'Reads one contact' rather than explicit exclusions or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_contacts_listAInspect
Lists contacts in the tenant CRM — a person in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, company_id. Needs crm:read on the organization. Every item carries an absolute url. Being in the CRM is not permission to email: consent lives in the marketing sub-resource.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| company_id | No | company_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so exceptionally: it discloses cursor pagination mechanics, limit range, opaque cursor reuse, permission requirements, absolute URL per item, and an important compliance caveat about CRM membership not granting email permission. This is far beyond a generic list description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-ordered: definition, pagination, filters, permission, output guarantee, then the consent caveat. Every sentence adds distinct value without redundancy, and critical details 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 list endpoint with 5 params and no output schema, the description covers invocation essentials: required permission, pagination, filter parameters, and a subtle behavioral caveat about email consent. Nothing critical for an agent to select and call 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?
Although schema coverage is 100%, the schema descriptions are mostly tautological ('q', 'company_id', 'organization_id'). The description adds real meaning by identifying q and company_id as filters, constraining limit to 1-100, and explaining cursor as opaque and derived from the previous page, which compensates for the weak parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lists contacts in the tenant CRM', and clarifies what a contact is ('a person in the tenant CRM'). It distinguishes this list operation from the sibling get/create/update/delete contact tools through its explicit listing focus and pagination cues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool: listing with cursor pagination, filters (q, company_id), and the required crm:read permission. It does not explicitly contrast with alternatives like commsharbor_crm_contacts_get or commsharbor_contacts_export, but the listing semantics and filter hints make the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_contacts_updateAInspect
Updates one contact in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the marketing sub-resource.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| company_id | No | company id | |
| contact_id | Yes | contact_id | |
| first_name | No | first name | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It does: mutation, required permission (crm:write), 404 on invalid id, and the domain-specific caveat that CRM membership does not grant email consent. This covers authorization, error, and domain constraints well, though it omits details like idempotency or response format, which are minor for a simple 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?
The description is three sentences, each with a distinct purpose: core action, permission requirement, and error/consent caveat. It is front-loaded with the primary purpose and avoids fluff. Every sentence earns its place, making it efficient 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 mutation tool with fully described parameters and no output schema, the description covers the essential operational aspects: permission, error handling, and a critical domain rule. It could mention the response format, but that is not necessary for correct invocation. Overall, it is sufficiently complete for an agent to use 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?
The input schema describes all 5 parameters with simple labels (email, company_id, contact_id, etc.), achieving 100% coverage. The description adds meaningful context by stating that only sent fields change (partial update) and that contact_id must be valid. However, it does not elaborate on each parameter beyond the schema, so it stays at the baseline 3 for full schema 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?
The description states the action precisely: 'Updates one contact in the tenant CRM' with a specific resource (contact) and verb (update). It distinguishes from sibling tools by emphasizing partial update semantics ('only the fields you send change') and by contrasting with create/delete/get/list siblings. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it requires crm:write permission, explains error behavior for missing/foreign ids (404), and warns that email consent is handled separately in the marketing sub-resource. It doesn't explicitly name alternative sibling tools (e.g., 'use create for new contacts'), but the guidance is sufficient for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_deals_createAInspect
Creates a deal in the tenant CRM. Required: title, pipeline_id, stage_id. Needs crm:write on the organization. Returns the created resource with its absolute url. Money is in minor units: value_minor: 10000 with currency: "USD" is $100.00, not $10,000.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | title | |
| currency | No | currency | |
| stage_id | Yes | stage id | |
| pipeline_id | Yes | pipeline id | |
| value_minor | No | value_minor | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden and does substantial work: it states the required permission (crm:write), declares the return behavior (created resource with absolute url), and documents the minor-units convention with a concrete conversion example. This last point is genuinely subtle behavioral context that would otherwise cause real-world bugs. It does not cover idempotency or conflict behavior, but the critical mutation-relevant traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler, each one earning its place: the core action and requirements, the permission and return contract, and a subtle unit convention with a concrete example. The minor-units example is slightly verbose but is exactly the kind of clarification that prevents a costly bug. Front-loading is correct — the action and requirements come 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 create tool with no output schema and no annotations, the description covers the essential contract: required inputs, the permission needed, and what is returned. The money-unit clarification is especially valuable given the flat schema. Minor gaps remain — the response shape beyond the URL isn't sketched, and there's no mention of behavior on duplicate/conflicting values — but nothing an agent needs 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?
Schema description coverage is reported at 100%, but every schema description is a tautological one-word echo of the parameter name ('title', 'currency', 'value_minor'), so the schema carries essentially no semantic weight. The description compensates for the money fields by explaining the value_minor/currency pairing and unit scale, but adds nothing for title, pipeline_id, stage_id, or organization_id beyond what the schema itself implies. Baseline 3 is appropriate: the description only partially compensates for the weak schema semantics.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Creates a deal in the tenant CRM.' The 'tenant CRM' qualifier usefully distinguishes it from the commsharbor_platform_crm_* sibling family, and the create verb sets it apart from the other commsharbor_crm_deals_* operations (get/list/update/delete). It lacks an explicit contrast with those siblings, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage context (creating a deal) and adds scope context ('tenant CRM' vs the platform-level siblings), but it never explicitly states when to choose this tool over alternatives, nor does it list exclusions such as using update for existing deals. Requirements are implied through 'Required: title, pipeline_id, stage_id' but are stated in prose rather than as explicit when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_deals_deleteAInspect
Deletes one deal from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: value_minor: 10000 with currency: "USD" is $100.00, not $10,000.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | deal_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and addresses key runtime behavior: the needed auth scope, the 404 response for foreign or missing ids, and the destructive intent. It doesn't mention irreversibility or side effects, but for a simple delete operation that would be expected.
Agents need to know what a tool does to the 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 primary action and scope. The auth requirement and 404 behavior each earn their place; the minor-units note is somewhat tangential to deletion but does not bloat the 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?
For a simple two-parameter delete with no output schema, the description covers the core invocation concerns: scope, permission, and error behavior. It does not describe the success response, but that is less critical when no output schema exists and the operation is straightforward.
Complex tools with many parameters or behaviors need more documentation. 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 at least named in the schema, but their descriptions are tautological ('deal_id', 'organization_id'). The tool description adds context about tenant/org scope and auth, but no concrete parameter-level meaning 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 and resource ('Deletes one deal from the tenant CRM') and clarifies the singular scope ('one deal'). It clearly separates this from sibling deal tools like create, get, list, and 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?
The description conveys when to use it: to delete a single deal, and it supplies the required permission ('crm:write on the organization'). It does not explicitly name alternatives or exclusion cases, but the context is clear enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_deals_getAInspect
Reads one deal from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Money is in minor units: value_minor: 10000 with currency: "USD" is $100.00, not $10,000.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | deal_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden and does so well. It discloses the required permission, the 404 behavior for foreign/missing IDs, and the important money-unit convention in responses. These are non-obvious traits an agent needs to interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what the tool does, the permission needed, and the two behavioral caveats (404 and currency units). 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 simple single-get operation with two required parameters and no output schema, the description covers the essential operational details: permission, error semantics, and response value interpretation. Nothing critical is missing for an agent 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 description coverage is 100%, but the schema descriptions are only the parameter names themselves. The description adds context by tying organization_id to the tenant and crm:read permission, and deal_id is implied by 'one deal.' However, it does not explain ID formats or where to obtain them, so it remains at the baseline for schema-covered 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 opens with a specific verb and resource: 'Reads one deal from the tenant CRM.' It clearly distinguishes this from list operations such as commsharbor_crm_deals_list by emphasizing a single deal, and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: it requires crm:read permission and states that foreign or missing IDs return 404. It does not explicitly contrast with sibling list/get tools, but the 'one deal' wording and error behavior make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_deals_listAInspect
Lists deals in the tenant CRM — an opportunity moving through a pipeline. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, pipeline_id, stage_id, status. Needs crm:read on the organization. Every item carries an absolute url. Money is in minor units: value_minor: 10000 with currency: "USD" is $100.00, not $10,000.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| status | No | status | |
| stage_id | No | stage_id | |
| pipeline_id | No | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals cursor-based pagination with a limit range, opaque cursor semantics, required permission scope, and a critical data-format caveat (minor units with a concrete example). These are non-obvious behaviors that prevent misinterpretation and go well beyond a generic list description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the purpose, then packs pagination, filters, auth, and a concrete money-unit example into the remaining text. Every clause earns its place and no information is needlessly 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?
The description covers the main operational essentials: purpose, pagination, filters, auth, and a hint about response items (absolute url and money units). However, it does not enumerate the full deal fields returned, ordering guarantees, or error/empty behavior, and there is no output schema to compensate. This is a minor gap given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although all parameters have schema descriptions, they are merely echoed names (e.g., 'q', 'status'). The description adds real meaning: limit bounds and cursor reuse, identifies which parameters act as filters, and connects organization_id to the tenant and permission context. This lifts it above the baseline 3 for full schema 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?
The description states a specific verb and resource: 'Lists deals in the tenant CRM — an opportunity moving through a pipeline.' It clearly distinguishes this from sibling tools like crm_deals_get, crm_deals_create, and other CRM list endpoints by naming the exact resource (deals) and its domain context (pipeline opportunities).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use the tool: it lists deals with filters and pagination, and requires crm:read permission. It does not name alternative tools or explicit when-not-to-use conditions, but the role as a list/filter/paginate operation is clearly conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_deals_updateAInspect
Updates one deal in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: value_minor: 10000 with currency: "USD" is $100.00, not $10,000.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | title | |
| deal_id | Yes | deal_id | |
| currency | No | currency | |
| stage_id | No | stage id | |
| pipeline_id | No | pipeline id | |
| value_minor | No | value_minor | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses the partial-update semantics, the required permission (crm:write), the 404 error on missing/foreign IDs, and the minor-unit money format. It does not specify the response on success (e.g., whether the updated deal is returned), which is a minor gap for a mutation tool, but the provided behavioral details are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose and partial-update behavior, followed by permission, error, and unit clarifications. Every sentence provides necessary information with no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers essential operational details: partial update, permission, error behavior, and unit semantics. It lacks a statement about what the tool returns on success, which would be helpful for an agent to know if it needs to fetch the result, but overall it is quite complete for a focused update 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?
The input schema has high coverage (100%) but the descriptions are trivial (just parameter names). The description adds meaningful context for value_minor and currency by explaining the minor-unit relationship, which is critical to avoid misuse. Other parameters like title, stage_id, and pipeline_id are self-explanatory, so the description compensates adequately for the schema's lack of 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?
The description states a specific verb ('Updates'), a clear resource ('one deal'), and a distinctive scope ('in the tenant CRM'). It also clarifies the partial-update behavior ('only the fields you send change'), which distinguishes it from other deal operations like create, delete, or get. The name and description together unambiguously identify the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage when an agent needs to update a single existing deal, but it does not explicitly contrast this tool with alternatives such as commsharbor_crm_deals_create or commsharbor_crm_deals_get. No 'when-not' or alternative-routing guidance is provided, so usage 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.
commsharbor_crm_pipelines_createAInspect
Creates a pipeline in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name | |
| stages | No | Stage names to create with the pipeline, in order. | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the permission requirement (crm:write) and the return value (created resource with absolute URL), which are useful. However, it does not mention side effects beyond creation, potential failure modes, or any constraints on stages. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action ('Creates a pipeline'), then packs required fields, permission, and return value with zero waste. It is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with three parameters and no output schema, the description covers the main purpose, a required field, permission, and return type. However, it omits that organization_id is also required and does not describe the optional stages parameter. These gaps are partially filled by the schema but could be clearer in text.
Complex tools with many parameters or behaviors need more documentation. 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 adds that 'name' is required, but it does not mention 'organization_id' as required (though the schema does). It also does not explain the 'stages' parameter beyond what the schema provides. The description adds minimal value over 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 a specific verb and resource: 'Creates a pipeline in the tenant CRM.' This clearly distinguishes it from sibling operations like list, get, update, and delete. It also mentions required field and permission, further clarifying the 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?
The description implies usage (when you need to create a pipeline) but does not explicitly compare to alternatives or state when not to use it. The mention of the required crm:write permission is a form of guidance, but there is no explicit routing away from other pipeline tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_pipelines_deleteAInspect
Deletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the destructive action and error behavior, but without annotations it carries the full burden. It does not mention whether deletion is permanent, cascades to related stages or deals, or returns any confirmation payload.
Agents need to know what a tool does to the 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 compact sentences with no redundant wording. Each clause adds useful information: the action, the permission requirement, and the 404 behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with no output schema, the description covers the essential action, required permission, and error case. It omits only optional details like success response shape or cascading effects, which are not strictly necessary to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are only the parameter names, so the baseline is neutral. The tool description adds context like 'tenant CRM' and 'foreign or missing id' but does not explicitly define organization_id as the tenant identifier or clarify pipeline_id semantics beyond the self-explanatory name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Deletes'), the resource ('one pipeline'), and the scope ('from the tenant CRM'). It unambiguously distinguishes this tool from the sibling create, get, list, and update pipeline 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?
The intended use is evident from the verb and resource, and the description adds the prerequisite 'crm:write on the organization' plus 404 behavior for foreign or missing IDs. It does not explicitly contrast with alternatives, but no plausible alternative exists for deleting a pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_pipelines_getAInspect
Reads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the required permission (crm:read) and error semantics (404 for foreign or missing id), which is valuable context beyond the schema. Since no annotations are provided, the description carries the full burden and does it well, though it doesn't detail the return payload.
Agents need to know what a tool does to the 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 zero wasted words. The core purpose is front-loaded, and the permission and error details follow logically without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation, it covers permission and error cases, which is sufficient for calling the tool correctly. However, it doesn't mention the return format, and with no output schema, a note like 'Returns the pipeline object' would improve completeness. Still, it's largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions are merely the parameter names, adding no real meaning. The description adds no extra parameter details either, but schema coverage is 100%, 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 ('Reads') and resource ('one pipeline') and clarifies it's from the tenant CRM. This clearly distinguishes it from list operations like commsharbor_crm_pipelines_list and other entity gets, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies singular use by saying 'one pipeline' but doesn't explicitly name alternatives or when to use the list sibling. It could benefit from stating 'For multiple pipelines, use commsharbor_crm_pipelines_list,' but the singular phrasing provides some guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_pipelines_listAInspect
Lists pipelines in the tenant CRM — a named sequence of stages that deals move through. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the tool is cursor-paginated, with limit range and opaque cursor mechanics, and that every item includes an absolute URL. It also discloses the auth requirement (crm:read). This goes beyond basic schema info and gives the agent a clear picture of how the tool behaves. It does not contradict any annotations (none provided).
Agents need to know what a tool does to the 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 compact three sentences, front-loaded with the core purpose, followed by pagination details, filters, permission, and a response hint. Every sentence adds distinct information with no redundancy or filler. It is well-structured and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool with no output schema, the description covers essential aspects: pagination mechanics, filter, required permission, and a hint about response items (absolute URL). It does not describe the full structure of a pipeline object, but that is not required given the tool's simplicity. The description is sufficiently complete for an agent to call it correctly and understand the result format at a high level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the q parameter as a filter, the limit as page size (1-100), and cursor as an opaque value from the previous page. This is more informative than the schema's bare 'q' and 'cursor' descriptions. It doesn't add much on organization_id, but that is a standard identifier. Overall, it enriches the parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists pipelines in the tenant CRM, and defines a pipeline as a named sequence of stages. This distinguishes it from other CRM list tools like deals, contacts, or stages. The verb 'lists' and specific resource 'pipelines' make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool by naming the resource (pipelines) and giving operational details like cursor pagination and filters. It does not explicitly mention alternatives or exclusions, but the resource-specific naming makes the intended use obvious. It also mentions the required permission (crm:read), which helps the agent decide if this 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.
commsharbor_crm_pipelines_updateAInspect
Updates one pipeline in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | name | |
| stages | No | Stage names to create with the pipeline, in order. | |
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses partial update semantics ('only the fields you send change'), the required permission (crm:write), and error behavior (404 for foreign/missing id). This is strong for a mutation tool, though it does not mention the return value or whether it is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core purpose is front-loaded. 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?
The description covers the key aspects an agent needs: what the tool does, permission requirements, error handling, and partial update semantics. For a simple update with two required IDs and two optional fields, this is sufficient. It does not mention return format, but no output schema is present, and the description does not promise 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 the baseline is 3. The description adds value by clarifying that only sent fields are updated, which gives meaning to the optional name and stages parameters. It does not elaborate on stages format beyond what the schema already states, so it does not exceed 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?
The description clearly states the verb ('Updates') and the resource ('one pipeline in the tenant CRM'), and specifies partial update behavior. It distinguishes itself from sibling create/delete/get/list tools by focusing on updating an existing pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (updating an existing pipeline) and states a prerequisite (crm:write permission). It does not explicitly name alternatives like the create tool, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_stages_createAInspect
Creates a stage in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name | |
| position | No | position | |
| pipeline_id | Yes | pipeline_id | |
| probability | No | probability | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the required permission (crm:write) and the return format (created resource with absolute url), which are useful behavioral details beyond the schema. It does not cover idempotency or error cases, but the provided info is substantive.
Agents need to know what a tool does to the 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 filler. The action and required field are front-loaded, followed by permission and return info. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits that organization_id and pipeline_id are also required, which could mislead an agent into thinking only name is needed. It gives return and permission info, but for a tool with 5 parameters and no output schema, this is a noticeable gap. It also does not explain the meaning of optional fields, though those are in 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 coverage is 100%, but the schema descriptions are trivial (just property names), so the baseline is 3. The description adds only 'Required: name', which is already in the schema, and does not clarify the semantics of position, probability, or the role of organization_id and pipeline_id. It provides no meaningful compensation for the weak schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Creates') and the resource ('a stage in the tenant CRM'), which distinguishes it from sibling tools like delete, get, list, and update. It also mentions a required field, reinforcing the specific 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?
The description implies usage for creating new stages but does not explicitly compare with alternatives or state when not to use it. It provides constraints like the required name and crm:write permission, but these are more about invocation conditions than choosing among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_stages_deleteAInspect
Deletes one stage from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| stage_id | Yes | stage_id | |
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose the required permission ('Needs crm:write on the organization') and the error behavior for missing or foreign IDs ('A foreign or missing id answers 404'). However, it omits what happens on success (e.g., return payload or status) and whether deletion is irreversible or cascades to associated records. It gives some key behavior but not a complete picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with the primary action. It states what the tool does first, then adds the essential permission and error context. There is no fluff or repetition. Every sentence earns its place, making it highly efficient for an agent 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 delete operation with three required parameters and no output schema, the description covers the action, the permission prerequisite, and a notable error condition (404). It does not describe the success response or any cascading effects, but for a straightforward deletion, these are secondary. The core information an agent needs to decide and execute correctly is present. Minor gaps are acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters, but each description is just the parameter name (e.g., 'stage_id'), providing no semantic detail. The tool description itself does not elaborate on the parameters. However, the parameter names are self-explanatory: stage_id, pipeline_id, organization_id. Since schema coverage is 100% and the names are meaningful, the description does not need to compensate, but it also adds no extra value beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Deletes one stage from the tenant CRM.' It specifies the resource (stage), the scope (tenant CRM), and the operation (delete). This distinguishes it from sibling tools like create, get, list, and update stages. The wording is direct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention scenarios where deletion is appropriate or contraindicated, nor does it reference sibling tools. The only usage hint is the permission requirement, which is more about prerequisites than selection criteria. An agent gets no explicit direction on when to pick this delete over other stage operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_stages_getAInspect
Reads one stage from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| stage_id | Yes | stage_id | |
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the read-only nature, the permission requirement, and the 404 behavior for foreign or missing ids, which is meaningful beyond the tool name and 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?
Three short sentences, each carrying distinct information: operation, auth requirement, and error behavior. 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 simple three-string-parameter read, the description provides purpose, permission, and error semantics; nothing needed to call it correctly is absent. Return-shape detail is not essential for this get 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 baseline is met; the schema's descriptions are tautological but the parameter names are self-explanatory. The description adds minimal parameter-level meaning beyond the id-relationship implied by 'foreign id'.
Input schemas describe structure but not intent. Descriptions should explain 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 opens with 'Reads one stage from the tenant CRM', giving a specific verb, resource, and singular scope. This clearly distinguishes it from list, create, update, and delete stage 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?
It clearly implies use for retrieving a single CRM stage and adds a prerequisite ('Needs crm:read on the organization'). It does not name sibling alternatives or specify when not to use it, so it falls just 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.
commsharbor_crm_stages_listAInspect
Lists stages in the tenant CRM — one step of a pipeline, addressed under the pipeline it belongs to. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Needs crm:read on the organization. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| pipeline_id | Yes | pipeline_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the transparency burden. It discloses cursor pagination, page-size bounds (1-100), the required auth scope (crm:read), and a response property (absolute url). It does not mention ordering, rate limits, or the exact next-cursor field, but for a read-only list this is a 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 concise sentences with no filler. The purpose is front-loaded, followed by pagination, auth, and return-value detail. 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?
The description provides the required scope, pagination mechanics, permission, and item-level detail, which is enough to invoke the tool correctly. Since there is no output schema, it could have added next-cursor or ordering details, but nothing essential to a successful call 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 schema already documents limit, cursor, pipeline_id, and organization_id. The description reinforces that pipeline_id is the scoping parameter and repeats pagination details, but it adds little 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 uses a specific verb and resource: 'Lists stages in the tenant CRM' and clarifies that stages are scoped to a pipeline. This distinguishes it from stage get/create/update/delete tools and from pipeline list tools. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 conveys the structural context: stages belong to a pipeline and are listed under that pipeline, so an agent knows to supply pipeline_id. It also states the crm:read permission requirement. However, it does not explicitly name alternative tools or exclusion conditions, 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.
commsharbor_crm_stages_updateAInspect
Updates one stage in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | name | |
| position | No | position | |
| stage_id | Yes | stage_id | |
| pipeline_id | Yes | pipeline_id | |
| probability | No | probability | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses partial-update behavior, permission requirement, and 404 for invalid IDs. This is good but could mention success response or idempotency; still above average 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?
Three concise sentences with the action first, then partial-update nuance, then permission and error. No filler, information-dense and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param tool with no output schema and no annotations, it covers the essential behavioral aspects: what it does, partial update, permission, and error handling. It doesn't explain parameter meanings (e.g., probability range) but schema covers their names, so it's 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 covers all 6 parameters with descriptions (though those are just names). The description adds no parameter-specific meaning beyond what schema provides, 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?
Clearly states it updates one stage in the tenant CRM, distinguishing it from create/delete/get/list siblings. The phrase 'only the fields you send change' clarifies it is a partial update, adding specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates usage (updating an existing stage) and provides prerequisites (crm:write permission) and error behavior (404 for foreign/missing id). However, it does not explicitly compare to alternatives like the create or delete tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_tasks_createAInspect
Creates a task in the tenant CRM. Required: title. Needs crm:write on the organization. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | title | |
| status | No | status | open |
| deal_id | No | deal id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral disclosure burden. It transparently states this is a create operation, the authorization requirement (crm:write on the organization), and the return shape (the created resource with its absolute URL). It does not describe potential side effects or idempotency, but for a simple creation tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver purpose, key requirement, permission, and return value with no filler. The most important information is front-loaded, and 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 a 4-parameter create tool, the description covers the core facts needed to invoke it correctly: what it does, required fields (mostly), authorization, and the response. There is no output schema, so the explicit return-value note is valuable. The main gap is that it does not explain what organization_id represents in relation to the tenant CRM or how deal_id connects to an existing deal, but these are obtainable from the schema and domain context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the schema descriptions are mostly tautological ('title', 'status', 'deal id'). The description adds some meaning by flagging title as required and tying the operation to an organization, but it does not clarify the relationship of deal_id to the task or explain the status semantics beyond the enum. It also highlights title as required while omitting that organization_id is also required per the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Creates a task') and scopes it to the tenant CRM, which clearly distinguishes it from getting, updating, deleting, or listing tasks. This is enough to separate it from the many sibling CRM tools without needing to inspect 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 description gives useful operational context by noting the required title and the crm:write permission needed on the organization. However, it does not explicitly guide the agent on when to choose this tool over related alternatives, such as commsharbor_platform_crm_tasks_create or the other CRM create tools, so usage guidance is mostly 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.
commsharbor_crm_tasks_deleteAInspect
Deletes one task from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | task_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses permission prerequisites and an error condition (foreign/missing id -> 404). Since no annotations are provided, the description carries the burden; it gives meaningful behavioral context but does not mention success response or other potential 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?
Three short, focused sentences with no unnecessary details. Each sentence adds value: what it does, what permission is needed, and a key error response.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core behavior, permission, and a common error. It lacks details about success response shape or other error codes, but for a simple delete operation this is arguably 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 description only vaguely references 'foreign or missing id' without clarifying which parameter it refers to or how organization_id and task_id relate. The schema provides no additional description beyond names, so parameter semantics are poorly explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Deletes one task from the tenant CRM.' The verb 'delete' and noun 'task' make the operation unambiguous, and it is distinct from sibling create/get/list/update operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage-relevant information: requires 'crm:write' permission and indicates that a foreign or missing id results in a 404. It doesn't explicitly name alternatives, but the delete verb makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_tasks_getAInspect
Reads one task from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | task_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It reveals the permission requirement and a key error outcome (404), which helps the agent anticipate results. It does not mention that no data is modified, but the verb 'Reads' implies read-only 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 short, direct, and free of extraneous detail. Every sentence contributes meaningful information about the action, permission, or error behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers permission and error cases but does not describe the response shape or the fields that will be returned for the task. Since there is no output schema, this is a notable gap for an agent that may need to consume the result.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions are just the parameter names, adding no semantics. The description adds context that the task belongs to a tenant CRM and that organization_id scopes the read, but it does not explain ID formats, relationships, or expected values beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reads one task') and the resource ('tenant CRM'), distinguishing it from plural fetch, create, update, and delete siblings. No ambiguity about the tool's core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides actionable guidance by mentioning the required permission (crm:read) and the 404 behavior for foreign or missing IDs. It does not explicitly name an alternative for listing multiple tasks, but the singular 'one task' implicitly directs usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_crm_tasks_listAInspect
Lists tasks in the tenant CRM — work someone still has to do in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, deal_id, contact_id, assignee_user_id. Needs crm:read on the organization. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| status | No | status | |
| deal_id | No | deal_id | |
| contact_id | No | contact_id | |
| organization_id | Yes | organization_id | |
| assignee_user_id | No | assignee_user_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure. It discloses pagination behavior, the permission requirement (crm:read), and a response trait (every item has an absolute URL). It doesn't mention exact response envelope or sorting, but the read-only list behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the main purpose front-loaded. The phrase 'in the tenant CRM' appears twice in the first sentence, a minor redundancy, but the rest is dense and each sentence adds scoping, pagination, or output detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers required auth, pagination mechanics, filter options, and an output trait. Since there is no output schema, a fuller description of the item shape would help, but for a list call this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are placeholder names only ('q', 'status', etc.), so 100% coverage is superficial. The description adds framing by labeling q, status, deal_id, contact_id, and assignee_user_id as filters and distinguishing pagination params limit and cursor. However, it doesn't define the meaning of q or valid status values, leaving some semantics to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'Lists tasks in the tenant CRM — work someone still has to do in the tenant CRM,' giving a specific verb and resource. The plural 'lists' clearly distinguishes this from sibling get/create/update/delete task operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly communicates how to use the tool: cursor-paginated with limit 1-100, opaque cursor, filterable fields, and required crm:read permission. It does not mention alternatives like commsharbor_crm_tasks_get or commsharbor_platform_crm_tasks_list, so it lacks explicit 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.
commsharbor_crm_tasks_updateAInspect
Updates one task in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | title | |
| status | No | status | open |
| deal_id | No | deal id | |
| task_id | Yes | task_id | |
| organization_id | Yes | organization_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses partial-update semantics, the required permission ('Needs crm:write on the organization'), and error behavior ('foreign or missing id answers 404'). This is substantial coverage for a mutation tool, though it omits the response format and idempotency 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 sentences with zero waste. The core purpose is front-loaded, followed by the permission and error constraints. Every word contributes essential 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 5-parameter, 2-required mutation tool with no output schema, the description covers permission, error behavior, and partial update semantics. Missing is any indication of the response (e.g., whether it returns the updated task), but this is not critical for invocation. It does not need to repeat schema fields.
Complex tools with many parameters or behaviors need more documentation. 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 descriptions cover 100% of parameters, but they are bare (e.g., 'title', 'status'). The description adds the crucial partial-update semantics (only sent fields change), which informs how all optional parameters behave. However, it does not elaborate on individual parameters beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it 'Updates one task in the tenant CRM' and adds partial-update behavior ('only the fields you send change'). The mention of 'tenant' distinguishes it from platform-level siblings, and the 404 error for foreign/missing id adds specificity. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives guidance. The sibling list includes commsharbor_platform_crm_tasks_update and other task tools, but the description never contrasts them or states when to prefer this one. The 'tenant' qualifier is implicit, not an explicit usage instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_data_export_createAInspect
Create a seven-day tenant JSON export. Scoped to one organization by construction: an export can never contain another tenant's data.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the scoping guarantee and the export type, which is useful. However, it does not mention whether the operation is asynchronous, what the response contains (e.g., an export ID), or any prerequisites beyond the organization_id. This is a moderate gap for a create operation with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. It front-loads the action and then adds a critical constraint. It is appropriately sized for the tool's simplicity and does not include 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 simple create tool with a single well-documented parameter and no output schema, the description covers the essential purpose and a key guarantee. It does not specify the response format or next steps (e.g., downloading the export later), but those may be handled by sibling tools. Given the low complexity, it is mostly complete, though a brief note on return value would improve 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%, so the schema already documents organization_id as an 'Active organization ID'. The description adds no further parameter-specific details, such as format, validation, or typical usage. With high schema coverage, the baseline of 3 is appropriate; the description does not add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('seven-day tenant JSON export'), and adds a clarifying scoping constraint. This distinguishes it from sibling tools like commsharbor_contacts_export or commsharbor_data_exports, which have different purposes. It is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting the export is scoped to one organization, which signals it is not suitable for cross-tenant exports. However, it does not explicitly name alternatives or provide when-to-use versus when-not-to-use guidance, leaving the agent to infer when this tool is the right choice compared to download or list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_data_export_downloadAInspect
Download one tenant-scoped JSON export before it expires.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | Tenant export ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys that the result is a JSON export, that it is scoped to a single tenant, and that it has an expiration window – all useful behavioral traits beyond the schema. However, it does not disclose what happens when the export has expired or what the exact response format is.
Agents need to know what a tool does to the 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 no filler. Every word adds meaning, and the core action and object 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 simple two-parameter download tool, the description covers the essentials: what is downloaded, its scope, and its expiration risk. However, it omits how to obtain a valid export_id and does not describe expiration error behavior, which would matter to an agent trying to invoke the tool correctly. With no output schema, a bit more context about the expected result would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters at 100% coverage ('Tenant export ID' and 'Active organization ID'), so the description has little to add. The description gives no additional detail about where export_id comes from or how organization_id is resolved, but the baseline of 3 is appropriate given the schema's full 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?
The description uses a specific verb ('Download'), a clear resource ('one tenant-scoped JSON export'), and a distinctive constraint ('before it expires'). This makes the tool's purpose unmistakable and naturally distinguishes it from create/list siblings like commsharbor_data_export_create and commsharbor_data_exports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it expires' implies a timing-related usage condition, but the description does not explicitly say when to use this tool versus alternatives, nor does it mention that the export_id likely comes from a preceding create/list step. An agent can infer the usage context, but the guidance is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_data_exportsAInspect
List the tenant data exports, which are retained for seven days.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add one behavioral detail: exports are 'retained for seven days', which is useful. However, it does not explicitly state that the operation is read-only (though 'List' implies it), nor does it address authentication, rate limits, or response shape. This is moderate transparency for a simple list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action ('List the tenant data exports') and appends a concise retention note. There is no filler, redundancy, or irrelevant detail; every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one well-documented parameter and no output schema, the description provides the essential action and a relevant retention detail. It does not describe the response format, but an agent can reasonably infer a list of export records. The only notable gap is the lack of usage context relative to sibling export tools, which is covered under usage_guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, organization_id, has 100% schema description coverage ('Active organization ID'). The description itself adds no additional parameter semantics, so the baseline of 3 applies. The agent can correctly populate the parameter 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 starts with 'List the tenant data exports', clearly stating the action (list) and resource (tenant data exports). It is implicitly distinguished from sibling tools like commsharbor_data_export_create and commsharbor_data_export_download by the verb and scope, and the retention detail adds useful context without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives like data_export_create or data_export_download. It does not mention any exclusions, prerequisites, or suggest that this tool should be used to locate exports prior to downloading. The only implied usage is the literal 'list' action, which is not sufficient guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_dead_letter_replayAInspect
Replay one campaign or webhook dead letter. One record at a time, addressed explicitly. There is no "replay everything": a bulk replay of an unknown set is how a bad hour becomes a bad day.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | Dead-letter record ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds useful context about single-record scope and the operational risk of bulk replay, but it does not explain what 'replay' does in practice, such as whether it redelivers a message, whether it is idempotent, or whether special permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler. The first sentence states the core action, and the next two reinforce scope and safety without redundancy. The warning about bulk replay earns its place by preventing unsafe usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 action with full schema coverage, the description covers the essential scenario and a safety caveat. However, with no output schema and no mention of response or side effects, an agent still has some uncertainty about what success looks like or what happens after the replay is invoked.
Complex tools with many parameters or behaviors need more documentation. 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. The description reinforces that record_id refers to a single addressed dead-letter recordasiivne, but it does not add format details, sources for the ID, or other 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 states a specific verb ('Replay'), a specific resource ('one campaign or webhook dead letter'), and a clear scope: one record at a time. It explicitly rules out bulk replay, which differentiates it from any bulk operation and from the sibling commsharbor_dead_letters listing 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?
It clearly says this tool is for replaying a single dead letter and that a bulk replay of an unknown set is not supported. It does not explicitly name an alternative sibling tool, but the single-record constraint and the warning against bulk use provide enough guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_dead_lettersAInspect
Inspect nominal dead letters. What ended up here after every retry. Records are addressed by opaque ID and carry no recipient PII.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that records carry no recipient PII and are addressed by opaque ID, which is useful privacy context. However, it does not explicitly state that the operation is read-only (though 'inspect' implies it), nor does it describe potential side effects, response format, or whether it returns a list or a single item. The description is not misleading but leaves several behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, beginning with the core action and resource ('Inspect nominal dead letters') before adding context. Both sentences serve a purpose—defining the operation and clarifying the content—and there is no redundant or filler text. It is well-structured and easy to parse quickly, though it could be slightly more explicit about the tool's 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 simple tool with a single parameter and no output schema, the description covers the key aspects: what it does (inspects dead letters), when it applies (after every retry), and a critical privacy characteristic (no PII). It does not explain the return format or pagination, but given the simplicity and the presence of sibling tools that handle related actions, the description is sufficiently complete for an agent to understand its role. The lack of annotations is partially compensated by the description's clarity.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is 100%, as the only parameter (organization_id) already has a description ('Active organization ID'). The tool description does not add any additional meaning to the parameter beyond what the schema provides. Since the schema fully documents the parameter, a baseline score of 3 is appropriate; the description does not need to repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Inspect') and resource ('dead letters'), and adds context ('What ended up here after every retry'). It distinguishes from the sibling 'commsharbor_dead_letter_replay' by implying a read-only inspection rather than a mutation, though it does not explicitly name the alternative. This is specific and unambiguous, but lacks the explicit sibling differentiation seen in higher-scoring examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about the tool's purpose (dead letters after retries) and a privacy note (no PII), which implies appropriate usage scenarios. However, it does not explicitly state when to use this tool versus alternatives like 'commsharbor_dead_letter_replay' or 'commsharbor_delivery_events'. The guidance is implicit rather than explicit, leaving the agent to infer the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_deletion_cancelAInspect
Cancel a scheduled tenant erasure. That is what the seven days are for: after they pass, there is nothing left to cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | Deletion request ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the key side-effect boundary: the cancellation is only possible before the seven-day window ends, after which erasure is irreversible. It doesn't cover permissions or response behavior, but the most important behavioral context is present.
Agents need to know what a tool does to the 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 the primary action front-loaded in the first sentence. The second sentence adds the critical time constraint without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 cancellation tool with no output schema, the description plus schema is sufficient for correct invocation. It explains the purpose, the timing window, and the irreversible consequence, leaving no major operational 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%, with both parameters already described in the input schema ('Deletion request ID' and 'Active organization ID'). The description adds no parameter-specific detail, but none is needed 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 and resource: 'Cancel a scheduled tenant erasure.' This clearly differentiates it from sibling tools like commsharbor_deletion_request and commsharbor_deletion_schedule, since it performs the opposite action on a pending deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear temporal usage condition: cancellation is only meaningful within the seven-day window before erasure. It also implies a when-not ('after they pass, there is nothing left to cancel'), though it does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_deletion_requestAInspect
Read the latest tenant deletion request. status: "none" means no erasure was ever requested — the resource always answers, so a client never has to interpret a 404 as "nothing scheduled".
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does this well by explicitly stating that the resource always answers and that status: "none" means no erasure was ever requested, so clients never need to interpret a 404 as 'nothing scheduled'. This is valuable behavioral context beyond a generic read 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?
Two sentences, front-loaded with the primary operation and followed by the most important behavioral nuance. Every sentence earns its place, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation with no output schema, the description covers the critical edge case that could confuse callers: the difference between 'no deletion ever requested' and a missing resource. It does not enumerate other possible status values or response fields, but the essential invocation and interpretation context 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 100%, as the only parameter, organization_id, is described as 'Active organization ID'. The description adds no meaningful parameter-level detail beyond that, 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 clearly states the verb 'Read' and the resource 'latest tenant deletion request', making the tool's purpose immediately understandable. It does not explicitly differentiate from sibling tools like commsharbor_deletion_schedule or commsharbor_deletion_cancel, but the read semantics are obvious from the description and 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?
The description gives no explicit guidance on when to use this tool versus the related deletion_schedule or deletion_cancel siblings. The intended use is implied by the word 'Read', but there are no stated alternatives, exclusions, or prerequisites beyond the schema-required organization_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_deletion_scheduleAInspect
Schedule tenant erasure after seven days using the exact confirmation phrase. The confirmation phrase must be exactly delete <organization_id> — typing the id is the point, so nobody erases the wrong tenant by clicking. Erasure deletes the workspace data in CommsHarbor; the organization itself and what it bought (global entitlements, payment receipts) live in the shared account and stay, as does the audit trail.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmation | Yes | Exact phrase: delete <organization_id> | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It explicitly states that erasure deletes workspace data, retains the organization and its purchased entitlements, and explains the purpose of the confirmation phrase. This provides substantial transparency about the destructive action and its limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no fluff. It front-loads the primary action (scheduling erasure) and then explains the confirmation phrase and the deletion scope efficiently. Every sentence contributes to understanding the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key aspects: what it does, the confirmation phrase, and the scope of deletion. However, it does not mention the return value or how to cancel a scheduled deletion (though a sibling tool exists). For a destructive operation with no annotations, these are minor gaps but not critical to 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 100%, so the baseline is 3. The description adds meaningful context for the confirmation parameter by explaining the exact format and the safety rationale behind it, which goes beyond the schema's simple description. It does not add extra meaning for organization_id beyond what the schema states, but the confirmation explanation elevates the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: scheduling tenant erasure after seven days with a specific confirmation phrase. It also clarifies the scope of deletion (workspace data only, not the organization or its entitlements), which distinguishes it from other deletion-related tools like deletion_request or deletion_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (schedule erasure) but does not explicitly contrast with sibling tools like deletion_request (immediate deletion) or deletion_cancel. It would benefit from stating when to use this tool versus those alternatives, but the context is reasonably clear from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_deliverabilityAInspect
Read deliverability and backlog aggregates. This is the operator's single view of whether sending is healthy. It carries no recipient PII.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It adds the useful statement 'carries no recipient PII', which is privacy-relevant, but it does not mention whether the operation is a read-only, the latency, or any side effects. Given the low complexity, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous words. The primary function is stated first, and the PII note adds value. It is appropriately short for a simple 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?
Given the tool's low complexity (one parameter, no output schema) and absence of annotations, the description covers the key aspects: what it does, its purpose, and a privacy guarantee. It lacks detail on the exact metrics returned, but given the simplicity and the schema coverage, it is mostly complete. A clear sibling differentiation would push it to 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?
The schema provides 100% coverage for the single required parameter (organization_id), so the baseline is 3. The description adds no additional parameter-specific meaning beyond indicating aggregates are scoped to an organization, which is implicit in the schema. It does not introduce new semantics that would elevate the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads deliverability and backlog aggregates, and it identifies itself as the operator's health view. However, it does not explicitly contrast with sibling tools like commsharbor_delivery_get or commsharbor_domain_deliveries, so some ambiguity remains about its exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is for operators to check sending health, but it does not specify when to use this over other deliverability-related tools or provide any explicit conditions. It lacks guidance on when not to use it, leaving the agent to infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_delivery_eventsAInspect
List normalized SES feedback events for one delivery. Open and Click are ADDITIVE: they are recorded alongside delivery state and never overwrite it.
| Name | Required | Description | Default |
|---|---|---|---|
| delivery_id | Yes | Delivery ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: 'Open and Click are ADDITIVE: they are recorded alongside delivery state and never overwrite it.' This is valuable nuance beyond the schema. It does not contradict any annotations (none exist). It does not mention read-only status or return format, but for a list tool this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The primary purpose is front-loaded, and the additive behavior note is delivered succinctly. No redundant 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?
For a simple list tool with 2 params, no output schema, and no annotations, the description covers the core purpose and an important behavioral detail. It does not elaborate on what 'normalized' means or list event types, but these are not essential for invocation. The lack of explicit sibling distinction 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% (both parameters have descriptions). The description adds no additional parameter-level meaning; it merely echoes the scoping to one delivery, which is already implicit in the delivery_id parameter. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('List'), a resource ('normalized SES feedback events'), and a scope ('for one delivery'). It distinguishes from sibling tools like delivery_get by focusing on events rather than delivery details. No tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context that this is for a single delivery, which implies a specific use case. However, it does not explicitly mention when not to use it or name alternative tools, leaving some room for inference. Still, the context is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_delivery_getAInspect
Read one delivery and its SES MessageId without recipient data. ses_message_id is what correlates this record with AWS when you need to chase a message there.
| Name | Required | Description | Default |
|---|---|---|---|
| delivery_id | Yes | Delivery ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that recipient data is excluded (a privacy/behavioral trait) and explains the purpose of the SES MessageId. However, it does not mention error behavior, permissions, or idempotency, leaving some gaps for a read operation with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no waste. The first sentence front-loads the core purpose and the exclusion of recipient data; the second clarifies the significance of the SES MessageId. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read tool with no output schema and no annotations, the description is fairly complete: it explains what is returned (delivery and SES MessageId), what is excluded (recipient data), and why the correlation ID matters. Minor gaps like error handling or explicit return structure are not critical given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% for both parameters (delivery_id and organization_id), so the schema already documents them. The tool description does not add any additional meaning to the parameters, leaving them at the baseline level 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?
The description states a specific verb ('Read'), a specific resource ('one delivery'), and its key field ('SES MessageId'), while explicitly noting it excludes recipient data. This clearly distinguishes it from related sibling tools like commsharbor_delivery_events or commsharbor_domain_deliveries by focusing on a single delivery fetch with a correlation ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case ('when you need to chase a message there') but does not explicitly state when to use this tool versus alternatives, nor when not to use it. It provides context on the SES MessageId correlation but lacks exclusions or comparisons to sibling delivery tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_createAInspect
Register the organization's exact sending domain and queue SES provisioning. Asking twice does not provision twice. Publish the returned DKIM records, then call verify to have the state observed.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Sending domain | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden, and it delivers: it reveals asynchronous provisioning ('queue SES provisioning'), idempotency ('asking twice does not provision twice'), and the crucial post-step behavior of returning DKIM records and requiring a follow-up `verify` call. This is meaningful behavioral context beyond what the schema provides.
Agents need to know what a tool does to the 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 purpose, with no filler. Each sentence earns its place: purpose, idempotency safeguard, and actionable next step are all packed efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description tells the agent everything required to call it correctly: what it does, that it is safely idempotent, that it returns DKIM records, and that `verify` must follow. Nothing needed to invoke the tool successfully 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 both parameters. The description does not add parameter-level detail beyond labeling the operation as registering the organization's 'exact' sending domain, which is a marginal clarification rather than new semantic 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 states a specific action ('Register... sending domain') and a distinct resource ('domain'), and it clearly distinguishes itself from sibling domain tools by framing this as the provisioning step followed by `domain_verify`. It also adds a key scope qualifier ('exact'), so an agent knows precisely what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear operational context: call this to register/set up the sending domain, then publish DKIM records and call `verify` to observe state. It does not explicitly contrast with alternatives like `tracking_domain_create`, but the sequential workflow instruction effectively guides usage away from raw verification calls until after this step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_deliveriesAInspect
List a domain's deliveries without recipient addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Sending domain ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It does add one meaningful behavioral trait — the response intentionally excludes recipient addresses — which tells the agent what not to expect. But it does not disclose pagination, ordering, date filtering, what fields are actually returned, or whether the operation is purely read-only, so the transparency is 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?
Eight words, one sentence, zero filler — the verb and resource are front-loaded, and the 'without recipient addresses' qualifier earns its place by conveying a key behavioral constraint. This is an appropriately minimal description with nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 required scalar params, no nested objects), and the description covers its core purpose. However, there is no output schema and no annotations, so the description bears the burden of explaining the return shape, and it only states what is excluded — not what deliveries look like, how they're paginated, or how this differs from commsharbor_delivery_events and commsharbor_domain_report. Adequate for a simple list tool, 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 description coverage is 100%: both domain_id ('Sending domain ID') and organization_id ('Active organization ID') are documented in the schema, so the baseline of 3 applies. The description reinforces that domain_id scopes the listing but adds no new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a resource ('a domain's deliveries'), and a meaningful scope qualifier ('without recipient addresses'). This is clearer than a bare name, but it doesn't explicitly differentiate from siblings like commsharbor_delivery_get, commsharbor_delivery_events, or commsharbor_domain_report, leaving the agent to infer how 'deliveries' differs from those concepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 qualifier 'without recipient addresses' implies a use case (listing deliveries when recipient PII is not needed or should not be exposed), which gives some directional guidance. However, no alternatives are named and there is no when-to-use vs. when-not-to-use guidance, so the agent must infer usage from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_getAInspect
Read one stored sending-domain resource. This returns what was stored at the last observation. To look again, call verify.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Sending domain ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool reads stored data (non-mutating) and explicitly discloses that the data may be stale ('returns what was stored at the last observation'), implying that 'verify' is the action that refreshes it. This is valuable context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste. It front-loads the purpose ('Read one stored sending-domain resource') and adds the key nuance about staleness and the alternative in the second sentence. No redundant 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?
For a simple single-resource read with two parameters and no output schema, the description adequately explains the core behavior and the main alternative. It doesn't detail the response format, but that is not required given the simplicity and the absence of an output schema. The description is sufficient for an agent to decide when and how to call 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% for both required parameters (domain_id and organization_id), so the schema already documents them adequately. The description adds no additional parameter-level detail, which is acceptable given the high coverage; 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 ('Read') and resource ('one stored sending-domain resource'), and distinguishes it from the 'verify' sibling by clarifying that it returns the last observation rather than a fresh check. The singular 'one' differentiates it from plural list tools like 'domains'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative 'verify' and the condition under which to use it ('To look again, call verify'), which gives clear guidance for the most relevant sibling. It does not enumerate other domain tools, but those serve different purposes (report, deliveries, smoke), so the key distinction is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_reportCInspect
Read domain delivery and feedback aggregates.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Sending domain ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It only says 'Read', implying a non-mutating operation, but it does not disclose what aggregates are included, what time range applies, or what the response will contain.
Agents need to know what a tool does to the 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 one short sentence with no filler and front-loads the action. It is appropriately concise, though it sacrifices useful 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?
With no output schema and no annotations, the description should explain return values and scope more fully. 'Feedback aggregates' is vague, and the tool is not distinguished from several similar delivery-report siblings, leaving gaps for an agent selecting among 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?
The input schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds no further meaning about how the organization_id and domain_id relate or are formatted.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Read') and a specific resource ('domain delivery and feedback aggregates'). It is understandable on its own, but it does not differentiate itself from sibling tools like commsharbor_domain_deliveries or commsharbor_delivery_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus related report/delivery tools. The description simply says what it reads, leaving the agent to infer selection criteria 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.
commsharbor_domainsAInspect
List sending domains with their last observed state. status is what was last OBSERVED at SES and DNS. It does not become active because provisioning was requested.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries behavioral burden. It usefully discloses a non-obvious behavior: `status` reflects the last observed SES/DNS state and does not become `active` merely because provisioning was requested. However, it does not go further to describe response shape, pagination, or error behavior, though 'List' implies a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and no filler. The second sentence earns its place by explaining the potentially surprising meaning of `status`. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with no output schema, the description adequately conveys the return concept and the key status caveat. It could be more explicit about the exact output fields or pagination, but nothing essential is missing 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?
The single parameter `organization_id` is already fully described in the schema as 'Active organization ID,' giving 100% schema coverage. The tool description adds organizational context but no additional parameter-level semantics, so the schema-based 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 opens with a specific verb and resource: 'List sending domains with their last observed state.' The plural 'domains' and the listing verb clearly distinguish it from singular or operation-specific siblings like commsharbor_domain_get and commsharbor_domain_verify. The added status clarification reinforces what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 makes the usage context clear: this is the tool for enumerating sending domains and checking their observed state. It does not explicitly mention alternatives or when not to use it, but for a simple list tool the intended use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_smokeBInspect
Send one controlled smoke to the server-side recipient secret; never accepts a recipient argument. The request never accepts a recipient: the destination is a server-side secret. That is what keeps this from becoming a way to send mail to arbitrary addresses through someone else's verified domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Sending domain ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose an important behavioral guardrail: the destination is fixed server-side and the tool cannot be used to send to arbitrary addresses. However, it does not describe side effects, required permissions, rate limits, or what happens on success or failure.
Agents need to know what a tool does to the 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 first sentence is effective and front-loaded, but the second sentence largely restates the first ('never accepts a recipient argument' vs 'The request never accepts a recipient'). The third sentence adds useful security context, but the redundancy makes the description less crisp than it could 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?
For a simple two-parameter tool, the description covers the core behavior and the recipient restriction. But it omits practical context such as whether the domain must already be verified, whether the smoke requires an active domain owned by the organization, and what response the agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for both required parameters, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema, such as how organization_id and domain_id relate to verified domains.
Input schemas describe structure but not intent. Descriptions should explain 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 action: 'Send one controlled smoke' to a server-side secret recipient, which clearly identifies the tool's function. It emphasizes that no recipient argument is accepted, distinguishing it from general send tools. However, 'smoke' is used as jargon without being spelled out as a smoke test, and no sibling tool is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a critical constraint (never accepts a recipient) and the abuse-prevention rationale, but gives no explicit guidance on when to use this tool versus alternatives like commsharbor_marketing_smoke or commsharbor_message_send. No conditions, prerequisites, or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_domain_verifyAInspect
Refresh domain readiness from real SES and DNS observations. This is the ONLY operation that can move a domain to active, and only because it actually looked.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Sending domain ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose a key behavior: the tool performs live SES/DNS checks and can change domain status to active. It does not disclose what happens on failed verification, whether it can also deactivate a domain, or any other side effects, leaving a meaningful transparency 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?
The description is two sentences with no filler. The core action is front-loaded, and the unique capability is stated immediately after, making the definition easy to scan and process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 refresh operation, the description conveys the core purpose and unique effect, but no output schema exists and the description does not explain what the caller should expect in the response or what happens on failure. This is a notable gap, though not fatal for a simple 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?
Both parameters are already described in the input schema with 'Sending domain ID' and 'Active organization ID', and schema coverage is 100%. The description adds no additional parameter-level meaning, 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 uses a specific verb and resource: 'Refresh domain readiness from real SES and DNS observations.' It also distinguishes the tool from every sibling by stating it is 'the ONLY operation that can move a domain to active.' This gives an agent a precise and unambiguous sense of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear selection context by asserting this is the only operation that can move a domain to active and that it does so by actually performing real observations. It does not, however, name specific alternative tools or state explicit when-not-to-use conditions, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_healthAInspect
Read deployment health and build. Smoke tests wait for their own commit to appear here instead of racing edge propagation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation, but doesn't specify response format, whether it can be polled, or any potential latency or failure modes. The phrase 'wait for their own commit to appear' hints at a polling pattern but is ambiguous. This is adequate for a simple health read, but leaves some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The primary purpose is front-loaded, and the second sentence adds a valuable usage hint without wasting words. Every part 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, read-only tool with no output schema, the description covers the essential function and a key use case. It doesn't explain the exact return payload, but that may be acceptable given the simplicity of the operation and lack of output schema. It's not missing any critical information an agent needs to invoke 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?
The tool has zero parameters, so schema coverage is trivially 100%. With no parameters to document, the description doesn't need to add parameter semantics, and the baseline for zero-parameter tools is 4. The description doesn't mislead or conflict with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Read') and resource ('deployment health and build'), which distinguishes it from sibling tools that handle CRUD, messaging, or other concerns. The added note about smoke tests waiting for their commit to appear here further differentiates it from related smoke-test tools, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage context: smoke tests should use this tool to wait for their own commit instead of racing edge propagation. This implies when to use it, though it doesn't explicitly name alternatives or state when not to use it. It's clear enough for an agent to infer the primary use case, but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_attachmentAInspect
Get a five-minute signed URL for one attachment, by its index in the message. The URL expires; the stored file does not. Two steps on purpose: the URL is what travels to a browser, an agent or a chat, never your credential. It expires in five minutes; the stored object does not expire at all.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Attachment index, from the message | |
| inbox_id | Yes | Inbox ID | |
| message_id | Yes | Inbox message ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states the URL expires in five minutes, that the stored file does not expire, that the URL is what travels (never credentials), and that it's a deliberate two-step process. This gives an agent a clear model of what happens without needing 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?
The description is two sentences and front-loaded with the core function. It repeats the expiration point twice (once at the start and once at the end), which is slightly redundant, but the overall length is appropriate and no unnecessary words are present. It earns a 4 because the repetition is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 getter with no output schema, the description covers the essential aspects: what it returns (a signed URL), the expiration behavior, and the security rationale. It doesn't detail the exact response structure, but that's often not needed for a URL-returning tool. It also doesn't mention error conditions or prerequisites, but the tool's simplicity and the schema's clarity make it 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 each parameter already has a descriptive label. The description adds the concept of 'by its index' but doesn't enrich parameter meaning beyond what the schema provides. For example, it doesn't explain the format of 'index' or how to obtain it, but the schema's 'from the message' is sufficient. The baseline of 3 applies because 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 states a specific action ('Get a five-minute signed URL for one attachment'), identifies the resource (attachment in a message), and the selection method (by index). It clearly distinguishes itself from sibling tools by focusing on a single attachment's temporary URL, which is a unique capability among the inbox-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the purpose of the two-step process and the tradeoff (URL expires, file doesn't), which conveys when this tool is appropriate (when a temporary, safe URL is needed) and implies when it's not (when persistent access is required). However, it doesn't explicitly name alternative tools or provide exclusionary guidance, so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_createAInspect
Create a receiving address on a verified sending domain. Fails with 422 when the domain is not verified: receiving on an unproven domain is relay. The domain must already be verified or active here — receiving on an unproven domain is relay. For mail to actually arrive, the domain's MX must point at this platform's inbound; until it does, the address exists and simply receives nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Verified domain | |
| local_part | Yes | What comes before the @ | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does this well by disclosing a concrete failure mode (422 when the domain is not verified), the existence of an address before MX is configured, and the fact that it receives nothing until then. It omits side-effect details like idempotency or permissions, but covers the most decision-relevant behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose, but it repeats the exact phrase 'receiving on an unproven domain is relay' in consecutive sentences. This redundancy wastes space and makes the wording less crisp; the third sentence adds no new information over the second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 three-parameter create tool with no output schema, the description covers the prerequisites, failure mode, and the important 'address exists but receives nothing until MX points' behavior. The only notable omission is what a successful response returns, but the rest of the context is enough for an agent to invoke 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 description coverage is 100%, so the schema already documents all three parameters. The description adds minor context for domain (verified/active status, MX requirement) but does not substantially explain local_part or organization_id 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 first sentence is a specific verb+resource statement: 'Create a receiving address on a verified sending domain.' It clearly identifies the action, the object created, and the key prerequisite, and it differentiates this from sibling tools like inbox_get, inbox_disable, and domain_verify without needing 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?
The description gives clear conditions for use: the domain must already be verified/active, and mail delivery requires the MX record to point to the platform's inbound. It does not explicitly name an alternative tool (e.g., domain_verify for unverified domains), so it falls short of the explicit when/when-not/alternatives bar, but the context is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_disableAInspect
Stop accepting mail at this address. History stays readable — this disables, it never erases. Disables, never erases: mail already received stays readable, because it is the customer's data and losing it is not a cleanup. New mail to the address is dropped and counted.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | Inbox ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states that new mail is dropped and counted, history remains readable, and it never erases data. The rationale (customer data) is included. However, it does not specify whether the operation is reversible (e.g., can an inbox be re-enabled?) or any permission requirements, but these are not critical for selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three short sentences) and well-structured. It opens with the core action, then emphasizes the non-destructive nature with repetition for clarity. Every sentence serves a purpose, and it extends only slightly to provide important 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?
The tool is simple with only two required parameters and no output schema. The description covers the main behavior and its non-destructive aspect, which is the key contextual information. It does not specify what happens after disabling (e.g., return value) but that may be unnecessary given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (organization_id and inbox_id) are documented in the schema. The description does not add further meaning beyond what the schema provides; it doesn't explain how to find these IDs or any format details. Per baseline, this is a 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 clearly states the action 'disable an inbox' and the specific behavior: stops accepting mail, drops new mail, and keeps history readable. It distinguishes this from deletion (explicitly says it never erases), making it distinct from other inbox-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the effect (drops new mail, keeps history) and implies usage when an inbox should stop receiving mail but maintain access to past messages. It does not explicitly name alternatives like 'inbox_delete' (which doesn't exist in the list, but 'deletion_request' does), but the explicit statement 'it disables, never erases' effectively distinguishes it from any destructive counterpart, providing sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inboxesAInspect
List the addresses this organization receives on. Up to 100, newest first. A disabled address stays listed: its history is still readable.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the pagination limit (up to 100), ordering (newest first), and the critical behavior that disabled addresses remain listed with readable history. These are valuable behavioral insights beyond the schema. It does not mention error conditions or rate limits, but for a read-only list operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose. The second sentence adds two important behavioral details without redundancy. No wasted words; every piece of information earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with a single parameter and no output schema, the description covers the essential: what it lists, ordering, limit, and disabled-address behavior. The only minor gap is that 'addresses' could be ambiguous (bare email strings vs. inbox objects with IDs), but given the tool name and context, this is likely clear to the agent. Overall, 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 100%: the only parameter organization_id has a description ('Active organization ID'). The tool description adds no extra parameter-specific meaning beyond referencing 'this organization'. The schema already documents the parameter, so the description does not need to repeat it. 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 uses a specific verb ('List') and identifies the resource ('addresses this organization receives on'), clearly distinguishing it from sibling tools like inbox_get (single inbox), inbox_messages (messages), and inbox_disable (disable). The scope is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states what the tool does, which implicitly defines its use case (listing all inbound addresses for an organization). While it does not explicitly mention alternatives or exclusion conditions, the purpose is clear enough that an agent would know when to call it. The lack of explicit 'use this instead of X' is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_getAInspect
Read one receiving address and whether it is still accepting mail.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | Inbox ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. 'Read' conveys non-mutating behavior and the status phrase defines the core output, but the description does not disclose error behavior, permissions, or whether the response includes fields beyond acceptance status.
Agents need to know what a tool does to the 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 action verb front-loaded and no filler. It states the resource and the distinctive status output without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple two-parameter GET with complete schema coverage, so the main gap is the return shape. The description partially covers this by mentioning acceptance status, but with no output schema it does not fully describe response fields or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both inbox_id and organization_id already described. The description adds no additional semantic context about parameter formats, relationships, or ownership, so it does not improve on 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 opens with 'Read one receiving address' – a specific verb and resource – and adds the key status trait 'whether it is still accepting mail.' This clearly differentiates it from sibling tools like commsharbor_inboxes (plural listing), commsharbor_inbox_disable (mutation), and commsharbor_inbox_messages (message 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?
No guidance is given on when to use this tool versus commsharbor_inboxes, commsharbor_inbox_disable, or commsharbor_inbox_messages. There are no explicit preconditions, exclusions, or alternative routing instructions; usage context is only weakly implied by the word 'one.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_messageCInspect
Read one message: body, chosen headers and auth. from is text the sender chose; auth is the SPF/DKIM/DMARC verdict the receiving edge reached. Decide on auth. auth is what the receiving edge concluded about SPF, DKIM and DMARC. Treat from as text the sender chose: auth is the part that was checked.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | Inbox ID | |
| message_id | Yes | Inbox message ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It adds valuable context by clarifying that `from` is sender-chosen text while `auth` is the SPF/DKIM/DMARC verdict, and directs agents to base decisions on `auth`. However, it does not disclose error behavior, response format beyond the listed fields, or explicitly confirm read-only safety beyond the verb '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?
The opening phrase is efficient, but the description repeats the `from`/`auth` distinction multiple times across several sentences ('Decide on auth', 'auth is what...', 'Treat from as text...'). This redundancy adds length without adding new 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 single-message read with no output schema or annotations, the description gives a reasonable preview of the returned data and a key interpretation caveat. However, it leaves 'chosen headers' undefined and does not address not-found or error scenarios, so completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are already described in the schema (100% coverage), and the description adds no extra meaning to `organization_id`, `inbox_id`, or `message_id`. The baseline of 3 applies because the schema does the necessary 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 and resource ('Read one message') and explicitly enumerates returned fields (body, headers, auth). It does not explicitly contrast itself with siblings like commsharbor_inbox_messages or commsharbor_inbox_get, 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?
No guidance on when to use this tool versus alternatives such as commsharbor_inbox_messages (listing messages) or commsharbor_inbox_get (getting an inbox). The word 'Read one message' implies a single-message retrieval, but no exclusions or alternative selection criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_inbox_messagesAInspect
List what arrived at one address, newest first. Summaries only, no body. Summaries only — no body. Read one message to get its text, HTML and headers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1 to 100 | |
| cursor | No | Opaque cursor | |
| inbox_id | Yes | Inbox ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly discloses that only summaries are returned, no body, and that ordering is newest first. This is the key behavioral trait for a list tool. It does not mention pagination or rate limits, but the main surprise (no body) is explicitly addressed.
Agents need to know what a tool does to the 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 short but contains a redundant sentence: 'Summaries only, no body. Summaries only — no body.' This duplication wastes a sentence and detracts from conciseness. The first sentence is effective, and the third provides useful guidance, but the repetition is a clear flaw.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool with no output schema, the description covers the essential points: it returns summaries, excludes body, orders newest first, and points to the single-message tool for full content. It does not detail summary fields or pagination, but these are either self-evident or covered by the schema. The description is adequate for an agent 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 the baseline is 3. The description adds no information about the parameters beyond what the schema provides; it mentions 'one address' which maps to inbox_id, but that is already in the schema. No additional semantics are provided, so the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('what arrived at one address') and states the ordering ('newest first'). It also explicitly distinguishes itself from the singular message tool by saying 'Summaries only, no body' and directing the user to 'Read one message' for full content, making 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 description implicitly provides usage guidance by stating that to get full text, HTML, and headers, one should read a single message. This clearly signals when to use this list tool versus the alternative, though it does not name the sibling tool explicitly. The guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_logoutAInspect
Revoke the current session. Bootstrap/CSRF must belong to this browser and session. Other product sessions remain active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the session-scoping constraint and the prerequisite that Bootstrap/CSRF must match, but it does not mention side effects (e.g., subsequent API calls fail), idempotency, or whether the action is reversible. The revoke action is implicitly destructive but not explicitly stated as such.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The core action is front-loaded ('Revoke the current session'), followed by essential constraints and scope. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a logout action, an empty schema, and no output schema, the description is sufficiently complete. It covers the scope (current session only) and the key prerequisite (Bootstrap/CSRF ownership). It does not explicitly state what happens after revocation (e.g., session invalidated), but that is implied by 'revoke' and is not critical for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description correctly does not attempt to describe parameters that do not exist, and there is nothing more needed in this dimension.
Input schemas describe structure but not intent. Descriptions should explain 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 verb ('Revoke') and resource ('current session'), and explicitly notes that only the current session is affected while other product sessions remain active. This distinguishes it from any sibling tools and leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (it affects only the current session) but does not explicitly state when to use it or compare it to alternatives. The constraint that Bootstrap/CSRF must belong to this browser/session is a prerequisite, not a usage guideline. There is no explicit 'use this when...' guidance, though the tool's purpose is fairly obvious from its name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_marketing_smokeAInspect
Send one controlled permission-based marketing smoke. Like the transactional smoke, the destination is a server-side secret. contact_id must be the CRM contact that matches it — you cannot point this at an arbitrary person.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | Active sending domain ID | |
| contact_id | Yes | CRM contact matching the server-side QA recipient | |
| idempotency_key | Yes | Unique send key | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the destination is server-side secret, that it sends one controlled smoke, and that permission-based checks apply. However, it does not mention side effects (e.g., actually sending an email), idempotency behavior, rate limits, or what happens on success/failure. It adds some value but leaves key behavioral aspects 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 with zero fluff. The purpose is stated immediately, the key constraint is front-loaded, and the schema references are concise. No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 send tool with four required params and no output schema, the description is fairly complete. It explains the core purpose, the unusual destination behavior, and the critical contact_id constraint. It does not cover error handling or the meaning of 'controlled,' but the essential information needed to call the tool 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 coverage is 100%, so baseline is 3. The description adds significant meaning to contact_id by clarifying it must be the CRM contact matching the server-side secret and cannot be arbitrary. This goes beyond the schema's 'CRM contact matching the server-side QA recipient' by explicitly warning against arbitrary targets. The other parameters are adequately covered by the schema, so the extra contact_id nuance earns this a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Send one controlled permission-based marketing smoke.' It distinguishes this from transactional smoke by referencing 'Like the transactional smoke,' and the term 'permission-based' clarifies the marketing versus transactional distinction. This makes the tool's purpose clear and separates it from siblings like commsharbor_domain_smoke or commsharbor_message_send.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context for when to use the tool: it is for permission-based marketing smoke tests, with a server-side secret destination. It also provides a critical constraint: contact_id must match the CRM contact and cannot be an arbitrary person. This is useful guidance, though it stops short of explicitly naming alternatives and exclusions, such as 'use transactional smoke for non-marketing tests' or 'use domain_smoke for domain checks.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_meAInspect
Read the current account profile and platform role. user.id is the shared-account ID. Organizations are not listed here: they live in the shared account, which does not list them inside products yet — open a workspace by its ID with GET /api/organizations/{organization_id}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a safe read operation ('Read'), explains the shared-account semantics of `user.id`, and explicitly states what the endpoint does not return. This is reasonable transparency for a simple profile-fetch tool, though it does not detail response shape or auth expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, with the primary purpose front-loaded and each subsequent sentence adding a distinct clarification. No filler or redundant 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?
For a zero-parameter read-only tool with no output schema, the description is nearly complete: it states what the tool returns, clarifies a key field, and routes users away for organizations. A minor gap is that it does not describe the shape of the platform role or full response payload, but this is not critical for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description correctly adds no parameter details and instead clarifies an output field (`user.id`), which is appropriate given there is nothing to document about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Read the current account profile and platform role.' It also distinguishes itself from organizational listing by noting 'Organizations are not listed here' and directing to a different endpoint, so an agent can tell it apart from siblings like commsharbor_organization_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit when-not-to-use instruction: 'Organizations are not listed here' and gives the alternative: 'open a workspace by its ID with GET /api/organizations/{organization_id}.' This leaves no ambiguity about which tool handles organization lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_message_sendAInspect
Queue one idempotent transactional delivery. Same behaviour and same idempotency as POST /api/messages. X-Organization-Id is still required with the session and must match the path. Prefer the canonical route.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email | |
| reply_to | No | Optional reply-to email | |
| domain_id | Yes | Active sending domain ID | |
| variables | Yes | Values for the template's declared variables. | |
| template_id | Yes | Published template ID | |
| idempotency_key | Yes | Unique logical message key | |
| organization_id | Yes | Active organization ID | |
| template_version | No | Published version to use. Without it, the latest published version is used — pin it when the content must not drift. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It reveals idempotency and the header requirement, but does not clarify whether the send is synchronous or async (only 'Queue' hints at it), what the response returns, or how errors are handled. It references the canonical route's behavior but does not spell out the response shape. This is adequate but leaves meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and mostly front-loaded with the purpose, but the final sentence 'Prefer the canonical route' is cryptic and could mislead the agent. The first two sentences are efficient, but the ambiguous closing sentence detracts from conciseness and clarity. It could be tightened by removing or clarifying that 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?
Given the complexity (8 parameters, nested object, no output schema), the description provides core facts (idempotency, header requirement, matching behavior to the API) but does not explain what a successful call returns (e.g., a queued message ID), how the queue behaves (e.g., async delivery), or failure semantics. These are important for an agent to use the tool confidently, and the description leaves them to inference from the schema or prior knowledge of the API.
Complex tools with many parameters or behaviors need more documentation. 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 each parameter. The description adds value by clarifying that X-Organization-Id is 'still required with the session and must match the path'—a constraint not evident from the schema, which simply lists organization_id. This extra context about the header–path relationship helps the agent set up the call correctly.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Queue') and a clear resource ('one idempotent transactional delivery'), and further distinguishes it by referencing the canonical POST /api/messages behavior. It is immediately clear that this tool sends a transactional message with idempotency, and it stands apart from the many other commsharbor tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for transactional delivery and notes a prerequisite (X-Organization-Id header must match the path). However, it does not explicitly state when to use this tool versus any alternative, and the sentence 'Prefer the canonical route' is ambiguous—it could mean prefer this tool or prefer the REST API. No exclusions or sibling comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_messaging_settingsAInspect
Read the organization's timezone and whether marketing is currently paused.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of disclosing behavior. It clearly indicates a read-only operation and specifies the two pieces of information returned. It does not cover failure behavior or response formatting, but those are minor for a simple getter.
Agents need to know what a tool does to the 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, starting with the operative verb 'Read' and then specifying exactly what is read. 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 one-parameter read tool with no output schema, the description gives enough information to call it: pass an organization ID and expect the organization timezone plus marketing paused state. It could be more explicit about return field names or error behavior, but the core call context is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single required parameter with 'Active organization ID', so the baseline applies. The description adds only that the organization's settings are being read, adding no additional format, constraints, or relationship details 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 uses the specific verb 'Read' and names the exact data returned: the organization's timezone and whether marketing is paused. This makes the tool's purpose clear and distinguishes it from the sibling write tool commsharbor_messaging_settings_update and from per-contact marketing 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?
The read-versus-update intent is implied by 'Read', so an agent can infer when to call this tool, especially given commsharbor_messaging_settings_update as a sibling. However, it does not explicitly state when not to use it or name alternatives such as contact-level marketing status tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_messaging_settings_updateAInspect
Update timezone or pause state. Pausing is always allowed. Resuming is not: if the pause came from reputation or SES tenant risk, a healthy observation has to exist first.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | IANA timezone | |
| marketing_state | No | active or paused | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses a critical business rule: pausing is always allowed, but resuming has a precondition (a healthy observation must exist if the pause came from reputation or SES tenant risk). This is valuable and goes beyond typical 'update' semantics, though it does not mention permission requirements or side effects beyond the state 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?
The description is extremely concise, with two sentences that front-load the purpose ('Update timezone or pause state') and then immediately present the key caveat. There is zero wasted words, and the structure makes it 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 update tool with no output schema and no annotations, the description covers the core behavior and the critical business constraint. It does not describe the return value or error cases, but these are not strictly required for an agent to call the tool correctly, given the schema already defines required parameters. The description is sufficiently complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already described in the input schema. The description itself adds no extra parameter semantics beyond referring to 'timezone' and 'pause state', which map to the timezone and marketing_state fields. Since the schema does the heavy lifting, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Update') and the resources ('timezone or pause state'). It is distinct from sibling tools like commsharbor_messaging_settings (which likely reads settings) and other update tools, so an agent can tell what this tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use or when-not-to-use guidance relative to siblings. It does not mention alternatives (e.g., 'to view settings use commsharbor_messaging_settings') or conditions under which this tool should be chosen. The only guidance is a behavioral rule about resuming, which is not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_operationsBInspect
List current operational alerts without PII. Covers dead letters, backlog, worker and SNS failures, reputation, paused sending, quota and conservative SES/SNS cost capacity — never with recipient PII.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It explicitly guarantees no recipient PII ('never with recipient PII') and lists the alert categories, which is useful. However, it doesn't explicitly confirm read-only behavior, mention response format, time-sensitivity, error conditions, or rate limits. 'List' implies a read operation, but more explicit transparency about expected behavior would be better.
Agents need to know what a tool does to the 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 begins with the core action and scope, then enumerates the alert categories. While the list is somewhat long, each item adds specificity and helps set expectations. There is minimal redundancy, and the no-PII guarantee is placed at the end for emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool, the description provides the core purpose, scope, and privacy constraint. However, with no output schema, it does not specify the structure of the returned alerts (e.g., list of objects, counts, status flags) or any pagination behavior. This leaves some uncertainty about how to interpret the tool's response, though the described categories offer a reasonable expectation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%: the only parameter, organization_id, is described as 'Active organization ID'. The tool description adds no additional information about parameters or their usage. Per the baseline rule for high schema coverage, this is acceptable, and the description doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain 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: 'List current operational alerts' with scope 'without PII' and a detailed list of covered categories (dead letters, backlog, worker and SNS failures, reputation, etc.). It distinguishes itself from sibling tools like commsharbor_dead_letters or commsharbor_health by presenting a consolidated operational alert overview, though it doesn't explicitly name these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what the tool does and what alerts it covers (dead letters, backlog, statuses, quotas), but it doesn't explicitly state when to use this tool versus alternatives such as commsharbor_health or commsharbor_operations_refresh. No when-not-to-use guidance or alternative routing is given, leaving usage inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_operations_refreshAInspect
Refresh alerts, quota and capacity observations. The GET reads what was last stored; this goes and looks again. Same distinction as domain verification.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this operation performs a fresh lookup and updates stored observations, which is a behavioral trait. However, it doesn't mention potential side effects like rate limits, latency, failure modes, or whether it modifies stored data permanently. The description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, no filler, and the core purpose is stated upfront. It efficiently conveys both the action and the distinction from the GET operation without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema or annotations, the description is nearly complete. It explains what it does and when to use it. It doesn't describe the return value or error conditions, but those are not critical given the tool's simplicity and the clarity of its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description of the single parameter (organization_id). The tool description does not add any additional meaning or context about the parameter beyond what the schema already states, so it stays at the baseline for full schema 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?
The description clearly states the tool's purpose: refreshing alerts, quota, and capacity observations. It also distinguishes itself from the sibling GET operation by noting that it re-fetches rather than reads stored data. This makes the tool's role 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?
It explicitly contrasts with the GET operation ('The GET reads what was last stored; this goes and looks again'), implying when to use this tool over the GET: when fresh data is needed. The reference to 'domain verification' further clarifies the pattern. However, it doesn't explicitly state conditions like 'use when you need current values' but it is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_organization_getAInspect
Open an organization by id: name, your role and the CommsHarbor plan. This is how a workspace is opened. Name and role come from the shared account (null with an organization API key, which carries neither); the plan is the organization's global entitlement in CommsHarbor.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It usefully states that name and role come from the shared account and are null with an organization API key, and that plan is the organization's global entitlement. However, it does not mention side effects, error conditions, or response shape details; for a simple get this is acceptable but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by two useful clarifications. The punctuation in 'by id: name, your role and the CommsHarbor plan' is slightly awkward, but every sentence earns its place and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read operation with no output schema, the description provides enough context: what is returned, where the data comes from, and how it behaves with different credential types. It lacks explicit error/edge-case detail, but that is not essential for a straightforward organization fetch.
Complex tools with many parameters or behaviors need more documentation. 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 has a clear description ('Active organization ID'). The description adds little beyond restating that the tool fetches by id, so it does not meaningfully improve on 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 verb and resource ('Open an organization by id') and tells the agent exactly what data is returned: name, role, and plan. It further clarifies this is how a workspace is opened, distinguishing it from the many other list/get tools in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'This is how a workspace is opened' gives a clear usage context for the tool. It also explains the API-key vs shared-account nuance that affects how the returned fields behave. It does not explicitly list alternatives or exclusions, but for a singleton organization getter that is not a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_contextBInspect
Confirm the caller's platform role. Tenant ownership grants nothing here: platform access is a separate, explicit grant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It adds one important authorization fact—platform access is separate from tenant ownership—but it does not disclose what the tool returns, whether it errors or returns false when the caller lacks platform access, or any session/authentication requirements. For a context-check tool, this is a significant 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?
The description is only two sentences, both of which earn their place. The core purpose is front-loaded, and the second sentence adds a crucial scope restriction without any 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?
The tool is very simple—zero parameters and no nested schema—so the description doesn't need much. Still, with no output schema and no annotations, it should at least state whether the tool returns a boolean confirmation, a role value, or raises an error when platform access is absent. The existing caveat about tenant ownership is helpful but not enough to fully close that 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?
The input schema is empty and no parameters exist, so the description has no parameter semantics to explain. The explicit empty schema already makes the no-argument call contract clear, which is worth a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Confirm the caller's platform role.' It also distinguishes platform access from tenant ownership, which helps separate it from sibling context tools like commsharbor_context. However, it doesn't explain what 'platform role' concretely is (role name, boolean, access level), 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 description implies when to use it: whenever the caller's platform role needs confirmation. The warning that 'Tenant ownership grants nothing here' provides useful when-not-to-assume guidance. But it doesn't name alternatives such as commsharbor_context or commsharbor_me, nor does it state explicit conditions for choosing this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_activities_createAInspect
Creates a activity in the platform CRM. Required: note. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | note | |
| lead_id | Yes | lead_id | |
| activity_type | No | activity type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that it returns the created resource with its absolute url and that a special permission is required. It does not mention potential errors or side effects, but for a create operation these are less critical. It adds value beyond the schema by clarifying the return format and permission.
Agents need to know what a tool does to the 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 with no fluff. The main action is front-loaded, and the permission and return details are given concisely. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the action, permission, and return value. However, it omits that lead_id is required, and the misleading 'Required: note' reduces completeness. It also doesn't mention that activity_type is optional, though that is in the schema. Overall adequate but with a notable 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% but descriptions are minimal. The tool description says 'Required: note,' which is misleading because lead_id is also required per the schema. It adds no semantic detail about the parameters, and the redundancy could confuse an agent into thinking lead_id is optional. This is a negative contribution.
Input schemas describe structure but not intent. Descriptions should explain 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 verb and resource: 'Creates a activity in the platform CRM.' The platform qualifier distinguishes it from the sibling commsharbor_crm_activities_create, which likely targets tenant-level activities. 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?
It explicitly states a prerequisite: 'Needs a human session with the platform_admin grant; tenant ownership does not qualify.' This gives clear guidance on when the tool is appropriate. It does not explicitly mention the sibling alternative, but the context implies platform vs. tenant scope, so an agent can infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_activities_deleteAInspect
Deletes one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | lead_id | |
| activity_id | Yes | activity_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the operation is destructive, that elevated platform_admin authorization is required, and that foreign or missing ids return 404. It does not mention idempotency, hard versus soft deletion, or the success response, but the core behavior is honestly and usefully 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, no filler, with the primary action first and the authorization and error behavior 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 simple two-parameter delete operation with no output schema, the description covers the action, the key authorization constraint, and an important error case. It omits the success response format, but the information provided is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the schema descriptions only repeat the parameter names (lead_id, activity_id). The description adds a small bit of validation semantics by noting that foreign or missing ids yield 404, but it does not explain what lead_id and activity_id refer to beyond their names.
Input schemas describe structure but not intent. Descriptions should explain 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 opens with a specific verb and resource: 'Deletes one activity from the platform CRM.' The platform CRM qualifier distinguishes it from the tenant-level commsharbor_crm_activities_delete and other activity siblings, so an agent can tell what this tool does immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 about the required human session and platform_admin grant, and states that tenant ownership does not qualify, which implies when this tool is appropriate. However, it never explicitly names an alternative or says 'use this instead of X,' so the routing guidance is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_activities_getAInspect
Reads one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | lead_id | |
| activity_id | Yes | activity_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the authorization requirement (human session with platform_admin) and the error behavior for foreign or missing IDs (404). It does not explicitly state read-only semantics, but the verb 'Reads' strongly implies a non-mutating operation. No side effects or response format are mentioned, but for a simple GET this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, followed by a critical authorization note and an error condition. There is no redundant or filler content; every sentence conveys distinct, actionable 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 GET operation with no output schema, the description covers the essential usage context: what it does, the authorization requirement, and a specific error case. It does not describe the response structure, but that is not strictly necessary for a tool that returns a known CRM activity object. The description is sufficient for an agent 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?
The schema descriptions for lead_id and activity_id are trivial (just the parameter names), so the schema does not add meaningful semantics. The tool description also does not explain these parameters or their relationship. Since schema coverage is 100% (the parameters are named), the baseline of 3 applies; the description adds no additional parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reads') and a precise resource ('one activity from the platform CRM'). The phrase 'one activity' differentiates it from list-style tools, and 'platform CRM' distinguishes it from tenant-level counterparts like commsharbor_crm_activities_get. The purpose is unambiguous even without inspecting 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 provides a key prerequisite: a human session with the platform_admin grant, and notes that tenant ownership does not qualify. However, it does not explicitly explain when to choose this tool over the sibling commsharbor_crm_activities_get or other activity-related tools. The platform vs. tenant distinction is implied but never articulated as a decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_activities_listAInspect
Lists activities in the platform CRM — our note about a prospective tenant. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| lead_id | Yes | lead_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses pagination behavior (cursor, limit), filtering (q), auth requirements, and the presence of an absolute URL in each item. It doesn't mention rate limits or error semantics, but for a read-only list operation, these are the key behavioral traits and they are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each with a distinct purpose: purpose, pagination/filtering, and auth/response detail. It is front-loaded with the core purpose and immediately provides operational details. No waste, and all sentences add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description gives a hint about the return value ('Every item carries an absolute url') but doesn't fully describe the response structure or error handling. However, for a paginated list endpoint, the combination of pagination, filters, auth, and the URL hint is sufficient for an agent to call it correctly. The only minor gap is the missing explanation of lead_id's role, which is more of a parameter semantics issue.
Complex tools with many parameters or behaviors need more documentation. 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% but the descriptions are minimal (e.g., 'q' and 'lead_id' just repeat the name). The description adds meaning for limit (1-100) and cursor (opaque from previous page), and explains q as a filter. However, lead_id is required and not explained in the description, nor is its relationship to the 'prospective tenant' context made explicit. The description partially compensates but leaves a gap for a required 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 specific verb ('Lists'), a specific resource ('activities in the platform CRM'), and clarifies the scope ('our note about a prospective tenant'). It distinguishes from the sibling commsharbor_crm_activities_list by the 'platform' qualifier and the tenant context, making the purpose clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: cursor-paginated with limit 1-100 and opaque cursor, filters via q, and the critical auth requirement (human session with platform_admin grant; tenant ownership does not qualify). It doesn't explicitly name an alternative tool to use instead, but the auth restriction effectively guides when to use this vs other list tools, so it's strong but not perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_activities_updateAInspect
Updates one activity in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | note | |
| lead_id | Yes | lead_id | |
| activity_id | Yes | activity_id | |
| activity_type | No | activity type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses meaningful behavior: partial field mutation, the precise auth model, and the 404 response for foreign or missing ids. These are exactly the behavioral traits an agent needs beyond what a bare schema would show.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying a distinct piece of information: partial-update behavior, auth requirement, and error behavior. The core operation is front-loaded and there is zero 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 and no annotations, the description covers the essentials: behavior, authorization boundary, and error semantics. It is missing only the response shape, but since no output schema exists to fill that gap, the definition is still strong.
Complex tools with many parameters or behaviors need more documentation. 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 even though the schema descriptions merely repeat parameter names ('note', 'lead_id'). The description adds partial-update semantics and the 404-on-foreign-id behavior, which clarifies the role of lead_id/activity_id, but it does not explain what note or activity_type should contain.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Updates'), a specific resource ('one activity in the platform CRM'), and a scope qualifier ('platform') that distinguishes it from the sibling commsharbor_crm_activities_update. The partial-update phrasing ('only the fields you send change') further pins down the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 precondition and exclusion: it requires a human session with the platform_admin grant, and explicitly states tenant ownership does not qualify. This is actionable when-to-use guidance, though it does not name an alternative tool to prefer in the tenant case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_leads_createAInspect
Creates a lead in the platform CRM. Required: email, name. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name | |
| Yes | |||
| stage | No | stage | |
| source | No | source | |
| company_name | No | company name | |
| organization_id | No | organization id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It states the auth requirement and the return value ('Returns the created resource with its absolute url'). However, it does not mention side effects beyond creation, idempotency, or validation rules, which are important for a create 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 sentences, front-loaded with purpose, then required fields, auth, and return. No fluff. Each sentence serves a distinct 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?
Given no output schema, description provides return format. It also covers auth context and required fields. Missing details like error handling, idempotency, or field constraints, but for a simple create it's 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 coverage is 100%, but descriptions are minimal (e.g., 'name', 'email'). The description adds 'Required: email, name' which duplicates schema's required array. It does not explain optional fields like stage, source, company_name, or organization_id. Since coverage is high, baseline is 3; description adds minimal value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb 'Creates' and resource 'lead in the platform CRM', with required fields. The description clarifies it's for the platform CRM and lists required fields, distinguishing it from other create tools like contacts or deals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies a strict auth prerequisite: 'Needs a human session with the platform_admin grant; tenant ownership does not qualify.' This tells the agent when this tool is callable. It does not explicitly mention alternatives, but among siblings there is no other lead-create tool, so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_leads_deleteAInspect
Deletes one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | lead_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the destructive effect, the auth requirement, and the 404 behavior for foreign or missing ids. It does not mention permanence or cascading effects, but for a simple single-resource delete this is reasonable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the primary action first and the auth and error behavior second. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 delete operation with no output schema, the description provides the core purpose, the auth constraint, and the key error case. The only minor gap is not describing the success response or explicitly stating the deletion is irreversible, but the essentials for correct invocation 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 coverage is 100%, so the baseline is 3. The description adds only contextual meaning around the id by mentioning foreign ids and missing ids, but it does not define lead_id format or how to obtain valid ids beyond the schema's tautological 'lead_id' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Deletes one lead from the platform CRM.' This clearly distinguishes it from sibling tools like platform_crm_leads_update, platform_crm_leads_get, and platform_crm_leads_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?
It states a concrete authorization prerequisite: a human session with the platform_admin grant, explicitly excluding tenant ownership. It does not mention alternatives, but no sibling delete-lead tool exists and the scope is clear from the platform prefix and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_leads_getAInspect
Reads one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | lead_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the non-destructive read nature, the specific auth requirement, and the 404 error for foreign/missing ids, which is valuable behavioral context. It stops short of describing the return payload, but that is not critical for a simple get.
Agents need to know what a tool does to the 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 zero waste. The purpose is front-loaded, and the auth and error behavior are stated concisely. 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 a single-parameter read tool with no output schema, the description covers the purpose, auth prerequisite, and error case. It omits the exact return structure, but that is an acceptable gap given the simplicity and 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?
The schema only describes lead_id as 'lead_id', which is trivial. The description adds meaning by clarifying that a foreign or missing id yields a 404, giving the parameter real semantic behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reads' and the resource 'one lead from the platform CRM', distinguishing it from create/update/delete/list siblings. It does not explicitly name a sibling, but the scope 'platform CRM' is specific enough to separate it from other get 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?
It provides an explicit prerequisite (human session with platform_admin grant) and an exclusion (tenant ownership does not qualify), which is strong usage guidance. It does not mention alternatives, but the auth condition is a clear when-not for many users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_leads_listAInspect
Lists leads in the platform CRM — a prospective ORGANIZATION in our own funnel — platform CRM is not tenant data. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, stage. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| stage | No | stage | |
| cursor | No | Opaque cursor returned by the previous page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: cursor-based pagination with limit 1-100 and opaque cursor, available filters (q, stage), the human session requirement with platform_admin, and that every item carries an absolute URL. This goes beyond the bare schema and gives the agent a clear model of how the tool behaves.
Agents need to know what a tool does to the 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 compact and front-loaded: it starts with the core purpose, then pagination, filters, auth, and return format. Every sentence adds value; 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 a list tool with pagination and filters, the description covers the essential invocation details: pagination mechanics, filters, auth prerequisite, and output trait (absolute URL). It does not mention sorting or default values for stage/q, but those are minor for a basic list call. No output schema exists, so the description carries the burden for return info; it adequately conveys what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (each parameter has a description), so baseline is 3. The description repeats limit and cursor semantics already in the schema and mentions q and stage as filters, but does not add deeper meaning (e.g., what q searches, valid stage values). It adds some context but does not fully compensate for the tautological schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (lists) and resource (leads in the platform CRM), and immediately distinguishes it from tenant data: 'platform CRM is not tenant data.' This clearly differentiates it from sibling tenant-level CRM tools like commsharbor_crm_contacts_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?
It gives clear context on when to use this tool (for platform-level leads, not tenant data) and states the access prerequisite: 'Needs a human session with the platform_admin grant; tenant ownership does not qualify.' It does not explicitly name alternative tools or say 'use X instead,' but the scope distinction and auth requirement provide adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_leads_updateAInspect
Updates one lead in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | name | |
| No | |||
| stage | No | stage | |
| source | No | source | |
| lead_id | Yes | lead_id | |
| company_name | No | company name | |
| organization_id | No | organization id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses partial update behavior, the exact authorization requirement, and the 404 error for invalid IDs. It does not mention the return value or other side effects, but the disclosed behaviors are significant for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the purpose and then add constraints. No unnecessary words; each sentence adds critical 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?
The description covers purpose, partial update, auth, and error behavior. It omits the return value, which would be useful given no output schema, but for a simple update tool the provided details are sufficient for an agent 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% but the parameter descriptions are just the field names, providing no added meaning. The description clarifies that only sent fields change, which is helpful for optional parameters, but it does not elaborate on individual fields. The names themselves are self-explanatory, so the baseline 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 clearly states the tool updates one lead in the platform CRM, and the partial update semantics are explicit. The 'platform CRM' qualifier distinguishes it from the sibling commsharbor_crm_leads_update, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for platform CRM leads and specifies a critical prerequisite (platform_admin grant, not tenant ownership). However, it does not explicitly mention the alternative sibling for regular leads, relying on the 'platform' distinction. The auth requirement provides clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_tasks_createAInspect
Creates a task in the platform CRM. Required: title. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | title | |
| due_at | No | due at | |
| lead_id | No | lead id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden, and it does meaningful work: it warns about an unusual authorization requirement and specifies that the created resource, including its absolute URL, is returned. The only significant omission is any detail about how due_at or lead_id affect behavior, but for a create operation the core side effect 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, each informative: the operation, the required field, the auth constraint, and the return shape. No filler or repetition of system-level details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 create with no output schema and no annotations, the description covers the required field, an unusual authorization precondition, and the response shape. Optional parameter semantics are left to the schema's minimal descriptions, but an agent has enough to invoke the tool correctly for the common case.
Complex tools with many parameters or behaviors need more documentation. 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 names every parameter; the description adds only that title is required, which repeats the schema. It adds no extra nuance about due_at or lead_id beyond the terse schema labels, so this sits 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?
The description gives a concrete verb and resource: 'Creates a task in the platform CRM.' It is clearly distinct from list/update/delete siblings, though it never explicitly contrasts with the very similar commsharbor_crm_tasks_create tenant-level tool, so the differentiation is 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?
It gives a valuable gating constraint: a human session with the platform_admin grant is required, and tenant ownership does not suffice. However, it does not say when an agent should choose this tool over the analogous commsharbor_crm_tasks_create or mention any alternative for tenant-level task creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_tasks_deleteAInspect
Deletes one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | task_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the destructive action (deletes), the permission requirement (platform_admin), and the 404 error for invalid or missing ids. It does not mention reversibility or success response, but for a simple delete with one parameter, this is adequate coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences: purpose, permission, and error handling. No unnecessary words; all information is front-loaded and directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 delete tool with no output schema, the description covers purpose, access requirements, and error behavior. An agent can confidently invoke it with the correct session and know what to expect 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% for task_id, but the description adds meaning beyond the trivial schema description by explaining that a foreign or missing id yields a 404. This gives the agent insight into valid input values and error 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 the action explicitly: 'Deletes one task from the platform CRM.' The verb is specific, the resource is clear, and the scope 'platform CRM' differentiates it from the sibling commsharbor_crm_tasks_delete. The permission requirement further clarifies its intended use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it requires a human session with platform_admin grant and explicitly excludes tenant ownership. This tells the agent when this tool is applicable. However, it does not explicitly name the alternative (commsharbor_crm_tasks_delete) or state when not to use it, so it lacks a direct exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_tasks_getAInspect
Reads one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | task_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the permission requirement and the 404 behavior for missing/foreign ids, which is valuable. However, it does not mention the success response shape or other error cases, but for a simple get this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The core purpose is front-loaded, followed by essential constraints. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id operation, it covers the permission gate and a key error case. It implies the return is a task object but doesn't explicitly state fields. Since there is no output schema, a brief mention of the return could improve it, 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 coverage is 100% (the only parameter task_id has a description, albeit tautological). The tool description adds no additional meaning about the parameter, so baseline 3 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reads' and the resource 'one task from the platform CRM', which distinguishes it from the list operation (commsharbor_platform_crm_tasks_list) and other task-related tools. 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?
It provides a specific prerequisite (human session with platform_admin grant) but does not explicitly mention alternatives like list or when to prefer this over other get tools. The condition is useful but the guidance is only implied, not explicit about when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_tasks_listAInspect
Lists tasks in the platform CRM — work on a platform lead — about a prospective tenant, not about a tenant's customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, lead_id, assignee_user_id. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | q | |
| limit | No | Page size from 1 to 100 | |
| cursor | No | Opaque cursor returned by the previous page | |
| status | No | status | |
| lead_id | No | lead_id | |
| assignee_user_id | No | assignee_user_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses pagination details (cursor-based, limit 1-100, opaque cursor), auth prerequisites, and the return format (every item carries an absolute url). This is comprehensive transparency 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?
Three sentences, front-loaded with purpose, then pagination, filters, and auth. Every sentence adds value and there is no redundancy. The structure is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 should hint at the return shape; it does mention the absolute url per item. It covers pagination, filters, auth, and scope. It could go further on error behaviors or full response structure, but for a list tool it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptions but they are just the parameter names (e.g., 'q' -> 'q'), so they add no semantic value. The description compensates by identifying the filter parameters (q, status, lead_id, assignee_user_id) and explaining pagination params, but it does not elaborate on what each filter means or allowed values. This is adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Lists tasks in the platform CRM' and distinguishes it from the regular CRM by noting it's 'work on a platform lead — about a prospective tenant, not about a tenant's customer.' This differentiates it from sibling tools like commsharbor_crm_tasks_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?
The description gives explicit context: it specifies the scope (platform leads, prospective tenants) and the auth requirement ('Needs a human session with the platform_admin grant; tenant ownership does not qualify'). This tells the agent when this tool is applicable and when it is not, effectively routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_platform_crm_tasks_updateAInspect
Updates one task in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | title | |
| due_at | No | due at | |
| lead_id | No | lead id | |
| task_id | Yes | task_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing partial-update semantics, the admin authorization requirement, and the 404 behavior for foreign or missing IDs. It does not mention the return value or other side effects, but the key behavioral effects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences, no filler, with the core purpose first followed by key constraints and error behavior. It earns its place with high information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 four-string-parameter update tool with no nested objects and no output schema, the description is largely complete. It covers the update behavior, required privilege, and error condition, though it could briefly mention what happens when no fields are sent or specify expected output, but that 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?
All four parameters have schema descriptions, but they are tautological ('title', 'due at', 'lead id', 'task_id'). The description adds useful context that only sent fields change and that a foreign/missing task_id returns 404, but it does not clarify formats or relationships (e.g., due_at format). Baseline 3 is appropriate due to full schema 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?
The description clearly states the tool updates one task in the platform CRM, distinguishing it from create/delete/get/list siblings and from non-platform CRM task tools by explicitly scoping to 'platform CRM'. The verb 'Updates' and resource 'one task' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides practical usage guidance: only provided fields are changed, a human session with platform_admin grant is required, and tenant ownership is not sufficient. It does not explicitly name alternative tools, but the platform context and update semantics make the intended use clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_preference_getAInspect
Read preference through a signed capability. The token IS the credential. It reveals preference state and nothing else — no email address, no CRM record.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Signed preference token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the token is the sole credential, that the operation is a read (reveals preference state), and explicitly limits the scope ('nothing else — no email address, no CRM record'). This goes beyond the schema, though it doesn't mention error behavior or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero redundancy. It front-loads the primary action and follows with the key contextual constraints. Every word contributes meaning; 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 a single-parameter read tool with no output schema, the description covers the essential aspects: what it does, what credential is needed, and what it returns (preference state) and what it doesn't. It could be more explicit about the response format or possible errors, but for its simplicity, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the token as 'Signed preference token' (100% coverage). The description adds crucial semantic value by emphasizing 'The token IS the credential,' which clarifies that the token is not just a parameter but an authentication artifact. This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read preference') and the resource ('preference') with a specific mechanism ('signed capability'). It also distinguishes the tool by clarifying what it does NOT reveal ('no email address, no CRM record'), which sets it apart from many sibling CRM and contact tools. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by stating 'The token IS the credential' – the agent must possess a valid signed token. However, it does not explicitly contrast with siblings like preference_unsubscribe or preference_token_create, nor does it state when not to use this tool. The guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_preference_token_createAInspect
Create signed preference and unsubscribe URLs. The capability is scoped to one organization and one contact, it expires, and it embeds no email address. Put marketing_headers in the message and the unsubscribe works without a login.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | CRM contact ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does well by revealing that the capability is scoped to one organization/contact, expires, embeds no email address, and enables login-free unsubscribe via marketing_headers. It does not disclose the return format or expiration duration, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero fluff. The core action is front-loaded, followed by key constraints and a practical integration hint. 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 a two-parameter creation tool with no annotations and no output schema, this description covers purpose, scoping, expiration, and usage with marketing_headers. The only notable gap is that it never explicitly states what the tool returns or how the generated URLs are surfaced, which an agent would need to consume the result 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?
The input schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds semantic value by explaining why these parameters matter: the token is scoped to one organization and one contact, and no email address is embedded. This clarifies the relationship between organization_id, contact_id, and the resulting token.
Input schemas describe structure but not intent. Descriptions should explain 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 opens with a specific verb and resource: 'Create signed preference and unsubscribe URLs.' This clearly distinguishes the tool from sibling tools like commsharbor_preference_get and commsharbor_preference_unsubscribe, which retrieve or act on preferences rather than generating tokens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by explaining the token's scope and how to integrate it: 'Put marketing_headers in the message and the unsubscribe works without a login.' It stops short of explicitly naming when not to use this tool or mentioning alternatives, so it earns a 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.
commsharbor_preference_unsubscribeAInspect
Apply one-click unsubscribe through a signed capability. This is the endpoint mail clients call from the List-Unsubscribe-Post header, which is why the body is form-encoded and fixed. Calling it twice is the same as calling it once.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Signed preference token |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It discloses that the body is form-encoded and fixed, and that the operation is idempotent ('Calling it twice is the same as calling it once'). However, it doesn't mention side effects, error handling, or whether the operation is reversible, which is a gap for a mutation endpoint.
Agents need to know what a tool does to the 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 filler. The primary action and mechanism are front-loaded, followed by concise context about the header and idempotency. Every sentence contributes 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 tool with one parameter and no output schema, the description covers the essential aspects: what it does, when it's used, the fixed form-encoding, and idempotency. It lacks explicit error handling or response details, but those are not critical for a one-parameter unsubscribe endpoint. Overall, it's adequately 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 schema documents the token as a 'Signed preference token' and the description refers to it as a 'signed capability,' which is essentially the same meaning. The description adds context about the token coming from the List-Unsubscribe-Post header, but it doesn't provide additional format or generation details beyond what the schema already conveys. Since schema coverage is 100%, the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Apply one-click unsubscribe through a signed capability.' It specifies the mechanism (signed capability) and the context (mail clients calling from the List-Unsubscribe-Post header), distinguishing it from other preference tools by focusing on the unsubscribe action. This is a specific and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the primary use case: it is the endpoint mail clients call from the List-Unsubscribe-Post header, which tells an agent when to invoke it (automated unsubscribe from email clients). It doesn't explicitly mention when not to use it or compare to alternatives like commsharbor_preference_get, but the context is clear enough to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_suppression_createBInspect
Suppress one recipient inside the active organization.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Recipient email | ||
| contact_id | No | Optional CRM contact ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says 'suppress' without disclosing side effects, reversibility, idempotency, permissions, or what happens to future sends. This is too opaque for a mutation that could have significant deliverability implications.
Agents need to know what a tool does to the 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 that is easy to parse and front-loads the core action. There is no filler or repetition of schema details, so it earns high marks for conciseness even though it omits behavioral 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 mutation tool with no annotations and no output schema, the description is too thin. It does not explain the effect of suppression, whether it can be undone, or what success looks like. The schema covers parameters, but the operational context 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 parameters are already documented. The description adds no extra meaning beyond 'active organization', which loosely maps to organization_id. It adds nothing about the optional contact_id or how the email is matched.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Suppress') and resource (`one recipient`) and scopes the action to the active organization. It distinguishes the action from listing suppressions (commsharbor_suppressions), but does not explicitly clarify what 'suppress' entails (e.g., add to a suppression 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?
The description implies when to use this tool (when one recipient needs to be suppressed within the current organization), but it gives no explicit exclusion criteria or comparison to alternatives like commsharbor_deletion_request. The intended use is decipherable but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_suppressionsAInspect
List organization suppressions. Global, organization and SES tenant suppressions are all checked BEFORE quota and before any queue work.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, maximum 100 | |
| cursor | No | Opaque pagination cursor | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It adds context that all suppression types are checked early in the pipeline, which is useful, but it does not explicitly state the operation is read-only, mention pagination behavior, or describe the return format. The 'list' verb implies read-only, but more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The core purpose is front-loaded, and the behavioral note is concise. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with no output schema and straightforward parameters, the description covers the essential purpose and a key behavioral trait (check order). It does not describe the response structure or explicitly state read-only nature, but those are minor gaps given the schema and simple 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?
The input schema has 100% description coverage, so the schema already explains each parameter (limit, cursor, organization_id). The description adds no additional parameter-specific meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists organization suppressions, with a specific verb and resource. It also adds scope by enumerating the suppression types (global, organization, SES tenant) and their check order, distinguishing it from create/update suppressions and other list 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?
The description notes that suppressions are checked before quota and queue work, implying a use case for diagnosing send failures, but it does not explicitly state when to use this tool versus alternatives or when not to use it. No mention of sibling tools or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_archiveAInspect
Archive a template and preserve its versions. Deliveries that referenced a version must keep resolving to it, so archiving hides the draft and keeps the history.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it discloses the important side effects: the draft is hidden, versions are preserved, and deliveries keep resolving. It does not mention reversibility or permissions, but the core behavioral invariant is clearly stated.
Agents need to know what a tool does to the 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 sentences with no filler. The main action and immediate consequence are front-loaded, and the version-preservation guarantee follows naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with no output schema, the description covers the behavior an agent needs to understand before calling it. It leaves out the response shape and whether archiving is reversible, but those are minor given how clearly the core semantics are explained.
Complex tools with many parameters or behaviors need more documentation. 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 describes both parameters with 100% coverage, so the description does not need to add much. It adds no formatting or contextual guidance beyond what the schema already provides, which fits the baseline for fully documented 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 the precise operation ('Archive a template') and the key outcome ('preserves its versions'). It also distinguishes itself from related template tools by explaining it hides the draft and keeps history, so an agent can tell it apart from publish, update, or versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear scenario for archiving—retiring a template while existing deliveries still need version resolution—but does not explicitly name alternatives such as template_publish, template_update, or deletion, nor state when not to use it. The 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.
commsharbor_template_createAInspect
Create a canonical block template draft. Creating never publishes. Nothing can send this template until publish freezes a version.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name | |
| blocks | Yes | Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw. | |
| subject | Yes | Subject with declared {{variables}} | |
| variables | Yes | Typed variables the template declares: `name`, `type` and whether it is `required`. | |
| message_type | Yes | What the template may be used for. A marketing campaign will not accept a transactional template. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly discloses that creating does not publish and that templates remain non-sendable until published. This is a key side effect. It does not mention other behaviors like validation, audit logging, or return values, but the most critical nuance (draft vs publish) is covered.
Agents need to know what a tool does to the 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 zero filler. The primary purpose is stated first, and the crucial publishing limitation is immediately highlighted. Every sentence earns its place, and the structure is ideal for quick agent scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 required params, no output schema), the description does not mention return values, error scenarios, or how to verify success. It also does not clarify the canonical block format, though the schema provides some context. The publishing workflow is explained, but an agent might need to infer that a successful create returns a template ID. This is a moderate gap 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 provides 100% coverage with descriptions for all six parameters, including types, enums, and examples of variable structure. The description adds no additional parameter-specific guidance beyond what the schema already states. Since the schema already does the heavy lifting, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'canonical block template draft', which immediately distinguishes it from sibling tools like template_publish and template_update. It also uses the word 'draft' to signal it is not the final sendable form, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that creating never publishes and that nothing can send until a later publish step freezes a version. This effectively tells the agent that this tool is for drafting and that a separate publish tool is required for sending. It does not name the specific sibling tool (template_publish), but the workflow is clear enough from the phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_exportAInspect
Export the latest published HTML, text and MJML.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral information. It does disclose the selection behavior ('latest published') and the returned content types (HTML, text, MJML), but it leaves unstated whether this is read-only, how the content is delivered, and what happens when no published version 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 sentence with no filler words. The verb, resource, version qualifier, and output content are front-loaded, and every word contributes to the tool's 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 tool with only two required parameters and no output schema, the description is minimally sufficient: an agent knows what is exported and from which template. However, it would be more complete with a note on return format, error behavior for an unpublished template, and a pointer to the sibling tool for template metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters at 100%, so the baseline is 3. Each parameter already has a description in the schema, and the tool description adds no additional parameter-level meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Export') on a concrete resource (template) and states the exact payload: the latest published HTML, text, and MJML. This distinguishes it from sibling tools like template_get, template_preview, template_publish, and template_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus the many template-related siblings. The intended use is implied by the phrase 'Export the latest published', but there are no explicit alternatives, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_getBInspect
Read one template draft owned by this organization.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the read-only nature ('Read') and the scope constraint ('owned by this organization'), which covers the main safety and access traits. It does not mention error/not-found behavior or whether published templates are excluded beyond '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?
The description is a single front-loaded sentence with no filler. Every word contributes: the verb, the resource type, the draft status, and the ownership 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 simple read operation with only two required parameters and no nested objects, the description is largely complete: it identifies the action, resource, and ownership prerequisite. It could be more complete by describing the response shape or listing alternatives, but the absence of an output schema makes the lack of return-details 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%, so the baseline applies. The phrase 'owned by this organization' adds meaning to organization_id as the owning organization, and 'draft' clarifies what template_id refers to, but the description still adds 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?
The description states a clear verb ('Read') and resource ('one template draft') and adds ownership scope ('owned by this organization'). It is specific enough to identify the tool among the many template siblings, though it doesn't explicitly contrast with template_preview or template_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool over alternatives such as commsharbor_templates, commsharbor_template_preview, or commsharbor_template_versions. The only usage signal is implied by the verb 'Read', so an agent must infer the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_import_htmlAInspect
Import a safe HTML subset as a draft. Active content, forms and unsafe URLs are rejected, not sanitised-and-kept. What survives is stored as blocks, so an imported template behaves exactly like an authored one.
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | Safe HTML subset | |
| name | Yes | Template name | |
| subject | Yes | Subject with declared {{variables}} | |
| variables | No | ||
| message_type | Yes | What it may be used for. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does so well: it discloses that active content, forms, and unsafe URLs are rejected rather than sanitized-and-kept, and that surviving content is stored as blocks. This goes beyond a generic mutation warning and clarifies the side effects of the import. It does not describe return values or error behavior, but the main behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense, front-loaded sentences with no filler. It states the core purpose first, then the safety-relevant behavior, then the storage model and equivalence to authored templates. 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 a mutation/import tool with no annotations and no output schema, the description covers the critical knowledge an agent needs: safe-subset enforcement, rejection instead of sanitization, block storage, and draft status. It lacks explicit return-value or error-shape details, but the outcome is specified well enough to support 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 high at 83%, so the baseline is 3. The description adds extra meaning for the html parameter by defining what 'safe' means operationally: active content, forms, and unsafe URLs are rejected. It also explains the persistence semantics of the imported content, which is genuinely useful beyond 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 states a specific action and resource: importing a safe HTML subset as a draft. It also distinguishes this tool from sibling template tools by emphasizing that the result is a draft and behaves exactly like an authored template, so an agent can tell it apart from template_create, template_update, or template_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 intended use is implied by the tool name and the phrase 'as a draft', but the description does not explicitly tell an agent when to choose this over template_create or template_update. It provides clear context for what the tool does, but no when-not-to-use or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_previewAInspect
Compile and render a safe template preview. warnings tells you what was stripped and what would not render — read it before publishing rather than after sending.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Template name | |
| blocks | Yes | Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw. | |
| values | No | Values to substitute into the declared variables for this preview. | |
| subject | Yes | Subject with declared {{variables}} | |
| variables | Yes | Typed variables the template declares: `name`, `type` and whether it is `required`. | |
| message_type | No | What the template may be used for. A marketing campaign will not accept a transactional template. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that warnings indicate what was stripped and what would not render, which is a key behavioral trait. However, it does not explicitly state that the operation is read-only or has no side effects, which would be expected for a preview tool. It also doesn't mention permissions or reversibility. The description adds some value but leaves gaps in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. The primary purpose is front-loaded in the first sentence, and the second sentence adds a crucial detail (warnings) that the agent needs to know. It is concise, structured, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, nested objects) and the absence of an output schema, the description provides sufficient context for an agent to understand its primary use: previewing a template before sending. It mentions the return of warnings, which is key. However, it does not explicitly describe the full return structure (e.g., whether it returns the rendered HTML along with warnings) or elaborate on the relationship between the required parameters. The description is adequate but could be more explicit about the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description does not add any additional meaning to the parameters themselves. It does not explain how 'blocks', 'variables', or 'values' interact, nor does it clarify the purpose of each parameter beyond the schema. Since the schema already does the heavy lifting, the description adds no extra value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Compile and render a safe template preview.' It specifies the resource (template preview) and the verb (compile and render). It also differentiates from sibling tools like template_get or template_publish by emphasizing 'safe' and 'preview', implying it's not a retrieval or a publish action. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'read it before publishing rather than after sending.' This tells the agent when to use the tool (before publishing) and hints that it's for validation. However, it does not explicitly name alternative tools or state when not to use it, such as 'use template_get to retrieve a stored template.' The guidance is helpful but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_publishAInspect
Publish an immutable template version. The version's identity is the hash of its compiled content — publishing identical content does not create a second version.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the immutability of the version, the hash-based identity, and the idempotent behavior for identical content. This is meaningful behavioral context beyond the schema. It doesn't mention side effects like whether publishing affects the active template or requires permissions, but the core behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The key behavioral facts (immutability, hash identity, idempotency) are front-loaded and 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 a two-parameter tool with no output schema, the description covers the essential behavior: what publishing means, the identity model, and the deduplication behavior. It doesn't explain return values or error cases, but given the simplicity of the tool and full schema coverage, the description is largely complete. A small gap is not stating what happens to the existing template or how to retrieve the published version.
Complex tools with many parameters or behaviors need more documentation. 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. The description adds no additional meaning about the parameters themselves, but the baseline of 3 applies because the schema fully covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Publish') and resource ('immutable template version'), and clarifies the identity model (hash of compiled content). It distinguishes itself from template_create/update/archive siblings by focusing on publishing a version, though it doesn't explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this is the tool to call when you want to create a published, immutable version of a template, and notes that identical content won't create a second version. However, it doesn't explicitly state when to use this vs template_create/update, nor does it mention prerequisites like whether the template must exist or be in a certain state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_templatesBInspect
List the versioned email templates of the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, from 1 to 100. | |
| cursor | No | Opaque cursor | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only listing operation, but does not disclose pagination behavior, ordering, whether only metadata is returned, or any other side-effect-relevant details. The description adds little beyond the verb '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?
A single, front-loaded sentence with no filler. It communicates the tool's purpose efficiently and leaves no redundant 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 list tool with fully documented parameters, the description is minimally adequate. However, it does not clarify what 'versioned' means in relation to commsharbor_template_versions, and with no output schema or annotations, an agent may not know what the response includes.
Complex tools with many parameters or behaviors need more documentation. 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 applies. The description does not add meaning beyond the schema; it only mentions organization scope, which aligns with the required organization_id parameter but adds no new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('List') and resource ('versioned email templates') scoped to the organization. It is clear enough for a listing operation, though the word 'versioned' creates slight ambiguity against the sibling tool 'commsharbor_template_versions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives such as commsharbor_template_get or commsharbor_template_versions. The description only states the basic operation without any context, exclusions, or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_updateAInspect
Update one template draft. Editing a draft can never change what a past delivery rendered: published versions are immutable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Template name | |
| blocks | No | Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw. | |
| subject | No | Subject with declared {{variables}} | |
| variables | No | Typed variables the template declares: `name`, `type` and whether it is `required`. | |
| template_id | Yes | Template ID | |
| message_type | No | What the template may be used for. A marketing campaign will not accept a transactional template. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does meaningfully disclose a key safety guarantee: editing a draft can never change what a past delivery rendered, and published versions are immutable. It does not cover permissions, failure modes, or what happens to published state during an update, but the immutability context is valuable and goes beyond the basic 'update' framing.
Agents need to know what a tool does to the 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 sentences with no filler. The core operation is front-loaded, and the immutability caveat is delivered immediately after, earning its place by clarifying the tool's most important behavioral 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?
Given that the schema covers all parameters and the description explains the draft-versus-published distinction, an agent has enough context to invoke the tool and understand the key safety implications. A deeper explanation of the template lifecycle or how a draft relates to a published version would make it fully complete, but the current description is adequate for the operation's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds no parameter-specific meaning beyond what the input schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a precise resource ('one template draft'), and singles out a single item. The phrase 'draft' distinguishes it from sibling tools like template_publish, template_archive, and template_create, so an agent can clearly separate it from related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context: this edits drafts rather than published versions, and past deliveries are unaffected. However, it does not explicitly state when to prefer this tool over alternatives, nor does it name sibling tools such as template_publish or template_create, leaving some selection reasoning implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_template_versionsAInspect
List the immutable published versions of a template.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read operation, and 'immutable published versions' adds useful state information, but it does not disclose output format, ordering, pagination, or other behavioral traits.
Agents need to know what a tool does to the 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 wasted words. The verb and object are front-loaded, making the purpose immediately apparent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list operation with no output schema or annotations, the description is mostly sufficient. It clearly states the resource and the immutable/published nature of the returned versions, though it omits return-format and pagination details.
Complex tools with many parameters or behaviors need more documentation. 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 has 100% description coverage, though the parameter descriptions are terse. The tool description adds no additional parameter-specific meaning beyond the context of listing template versions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and a precise resource ('immutable published versions of a template'), making the tool's function immediately clear. It also naturally differentiates from sibling tools like template_get and template_publish by focusing on version enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'published versions' implicitly signals that this tool is for retrieving version history rather than the current template or publishing a new version. However, it does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_tracking_domainCInspect
Read the organization's tracking domain, the CNAME it needs and whether the platform actually answers on it. Null when there is none: links then use the shared platform origin. null when the organization has none — then every link falls back to the platform origin.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does usefully disclose that the tool returns null when the organization has no tracking domain and that links then fall back to the shared platform origin. However, it does not describe the return shape beyond the three items, nor any error conditions, and the 'Read' verb implies read-only without explicitly stating it. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description redundantly states the null/fallback behavior twice: 'Null when there is none: links then use the shared platform origin.' and '`null` when the organization has none — then every link falls back to the platform origin.' The second sentence is a near-exact restatement of the first, adding noise without new information. The core content fits in the first sentence and should not be 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 simple read tool with one parameter and no output schema or annotations, the description explains the main return values (tracking domain, CNAME, verification status) and the null fallback case. However, the redundancy wastes space, and there is no mention of the exact return shape or any caveats about freshness/verification timing, leaving some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. 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 (organization_id, 'Active organization ID') is already well documented in the schema. The description adds no parameter-specific meaning beyond what the schema provides, which meets the baseline of 3 for a tool where 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 states a specific verb ('Read') and a specific resource ('the organization's tracking domain'), and goes further to enumerate what is returned: the CNAME needed and whether the platform actually answers on it. This clearly differentiates it from sibling tools like tracking_domain_create, tracking_domain_remove, and tracking_domain_verify, though it never names those alternatives explicitly, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus its siblings. In particular, there is no mention of how this relates to tracking_domain_verify (which presumably performs verification) or tracking_domain_create, and no exclusions or preconditions are stated. The only contextual hint is the null-fallback behavior, which is behavioral rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_tracking_domain_createAInspect
Register the host that will serve this organization's message links. One per organization; registering never activates it. One per organization, and the host is unique across the platform — two tenants claiming the same name would make link routing ambiguous. Registering does not activate: publish the CNAME, then call verify.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Tracking host, e.g. links.example.com | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It explicitly discloses that registration is not activation, that the host must be unique platform-wide, and that only one host is allowed per organization. It does not cover idempotency, errors, or response shape, but the essential operational constraints are well stated.
Agents need to know what a tool does to the 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 short and front-loaded, but it repeats 'One per organization' twice and restates 'registering never activates it' as 'Registering does not activate'. This redundancy prevents it from being fully concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 create operation with no output schema, the description gives the functional sequence and constraints an agent needs: register, publish CNAME, then verify. It does not describe the return value, but that is a minor gap given how simple this tool is.
Complex tools with many parameters or behaviors need more documentation. 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 parameters. The description adds useful meaning by tying `domain` to message-link serving and by adding uniqueness and one-per-organization constraints. It does little for `organization_id`, but the added domain context exceeds 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 action and resource: 'Register the host that will serve this organization's message links'. It clearly distinguishes the tool from verification by explicitly saying registration never activates and pointing to `verify` as a separate step. The tracking-domain scope also separates it from sibling domain 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 operational context: one per organization, unique across the platform, and registration alone does not activate the host. The workflow is implied strongly — publish the CNAME then call `verify` — though it does not explicitly name alternative tools or state when not to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_tracking_domain_removeAInspect
Remove the tracking domain; NEW messages go back to the platform origin. Links already sent keep pointing at the removed host. Links already sent keep pointing at the removed host: this stops NEW messages, not old ones.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It clearly discloses the side effect that new messages return to the platform origin and that existing links remain pointed at the removed host, which is important behavioral information for a destructive-sounding operation. It does not discuss authorization or irreversibility, but the stated behavior is materially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The phrase 'Links already sent keep pointing at the removed host' is repeated verbatim, and the second sentence merely restates the first clause with a colon. This redundancy wastes tokens and violates the principle that every sentence should earn its place, even though the overall length is short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 removal tool with no output schema, the description provides the essential context: what gets removed, what happens to new messages, and what happens to already-sent links. Some details like confirmation output or prerequisites are absent, but the operation is simple enough that these are not critical 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?
There is only one parameter and schema description coverage is 100%, with organization_id described as 'Active organization ID'. The description adds no parameter-level detail beyond the schema, but the schema already provides sufficient meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource ('Remove the tracking domain') and states the immediate consequence ('NEW messages go back to the platform origin'). It also clearly distinguishes this from sibling operations like tracking_domain_create and tracking_domain_verify by focusing on removal and its effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 key usage context: this operation stops new messages but does not change already-sent links. It does not explicitly name alternatives or exclusions, but the behavioral boundary between 'new' and 'old' messages gives an agent enough context to decide whether this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_tracking_domain_verifyAInspect
Probe the host now and store what was seen. The ONLY way to reach active, and only after reaching this product on that host — DNS resolving is not enough. The only operation that can move a tracking domain to active, and it does so only after reaching this product's own health endpoint ON that host. A host that used to answer and stopped becomes failed, and links go back to the platform origin immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the side effect of storing what was seen, the prerequisite of reaching the health endpoint, and the consequence of a host stopping (becomes `failed` and links revert to platform origin immediately). These are specific behavioral traits beyond what the name implies, and they directly inform an agent about state changes and failure outcomes.
Agents need to know what a tool does to the 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 front-loaded with the primary action ('Probe the host now'), which is good. However, it repeats the 'only way/only operation' claim twice, which is redundant and could be condensed into one sentence. Each sentence otherwise adds value, and the overall structure is clear, but the redundancy keeps it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the essential context: purpose, prerequisites, side effects, and failure behavior. It implies the outcome by stating the domain reaches `active` if successful, and describes what happens on failure. It doesn't mention return values or auth requirements, but those are not critical for this simple 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?
The input schema has one parameter, organization_id, with a description ('Active organization ID') that covers 100% of the schema. The tool description adds no additional context about the parameter, so the baseline of 3 applies. The schema already provides sufficient meaning for this simple 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 opens with a specific verb-resource pair: 'Probe the host now and store what was seen.' It clearly identifies this as a verification step for tracking domains and distinguishes it from siblings by stating it is the only way to reach `active`, and that DNS resolution alone is insufficient. This differentiates it from commsharbor_domain_verify and tracking domain create/remove operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditions for use: it is the only operation that moves a tracking domain to `active`, and it only works after reaching the product's health endpoint on that host. It also warns that DNS resolving is not enough, implying this tool should be used after confirming the product is reachable. It does not explicitly name alternative tools, but the context is clear enough for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_webhook_createAInspect
Create a webhook and reveal its secret once. Deliveries are signed with timestamped HMAC-SHA256 and retried with exponential backoff; what still fails lands in the tenant-scoped dead-letter queue. Store the secret now — it is never shown again.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTPS URL | |
| event_types | Yes | Which events to deliver. Delivery feedback: `Delivery`, `DeliveryDelay`, `Bounce`, `Complaint`, `Reject`, `RenderingFailure`, `Open`, `Click`. Campaigns: `campaign.completed`, `campaign.paused`. Inbound: `inbox.message.received` and `inbox.reply.matched`, the reply correlated to the delivery that provoked it. | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility, and it delivers: one-time secret reveal, HMAC-SHA256 signing, exponential backoff retries, and tenant-scoped dead-letter queue. It also warns the secret is never shown again, which is critical behavioral context for an agent.
Agents need to know what a tool does to the 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 with no filler, and the most important fact (secret is shown once) is front-loaded. Every sentence adds meaningful operational 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 create operation with three well-documented parameters and no output schema, the description is complete enough: it explains the key output (secret), the immediate required action (store it), and the delivery guarantees. An agent has what it needs to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-specific detail beyond what the schema provides, 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 uses a specific verb ('Create') and resource ('webhook') and adds the critical one-time secret reveal, which distinguishes this from sibling get/list/disable tools. An agent can tell exactly what this tool does even among many webhook-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this is the create operation, but it does not explicitly state when to use this over webhook_disable, webhook_get, or webhooks. It provides clear context for the action itself but no direct alternative routing or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_webhook_deliveriesBInspect
List the signed attempts made to one webhook and their retry state.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses a read-only list operation and mentions that retry state is included in the results. However, the term 'signed attempts' is unexplained, and there is no mention of pagination, ordering, or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words. The verb and scope are front-loaded, making it 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?
With both parameters documented and a clear purpose, the definition is usable, but the absence of an output schema and annotations leaves the exact return format and pagination behavior unknown. The phrase 'signed attempts' could also confuse agents unfamiliar with webhook delivery 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?
Both parameters are fully described in the schema ('Webhook endpoint ID' and 'Active organization ID'), so the description adds no additional parameter-level meaning. Per rubric, high schema coverage sets a 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?
The description states a specific verb ('List') and resource ('signed attempts made to one webhook'), and clarifies the output includes 'retry state'. It is scoped to a single webhook, which differentiates it from tools like commsharbor_webhooks or commsharbor_delivery_events, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool as opposed to related tools such as commsharbor_delivery_events, commsharbor_domain_deliveries, or commsharbor_dead_letters. Usage must be inferred solely 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.
commsharbor_webhook_disableBInspect
Disable a webhook without deleting the evidence of what it already delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It mentions evidence preservation, but omits critical details: whether disabling is reversible, whether deliveries stop immediately, permission requirements, or any side effects. This is a significant 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?
The description is a single, efficient sentence that is front-loaded with the core action and its key differentiator. It avoids waste but may be too terse; still, it earns a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description is incomplete. It fails to specify whether the disable action is reversible, what happens to in-flight or future deliveries, or any implications for the webhook's lifecycle. An agent would need additional information to use it safely.
Complex tools with many parameters or behaviors need more documentation. 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 parameters described ('Webhook endpoint ID' and 'Active organization ID'). The tool description adds no additional meaning about parameters, so the baseline of 3 applies; the schema already provides adequate semantics.
Input schemas describe structure but not intent. Descriptions should explain 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 verb ('Disable') and resource ('a webhook'), and distinguishes this from deletion by noting it preserves delivery evidence. It is specific enough to differentiate from a delete operation, though it doesn't name sibling tools 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 a use case (keep evidence while disabling) but does not explicitly state when to choose this tool over alternatives like delete or update. No exclusions or explicit context about when not to use it are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_webhook_getAInspect
Read one webhook, without its signing secret.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | Webhook endpoint ID | |
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key behavioral trait: the response will not include the signing secret. This is valuable and goes beyond the schema. It also implies a read (non-mutating) operation via 'Read', which is clear. No contradictions or omissions beyond the secret exclusion.
Agents need to know what a tool does to the 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 waste. It states the action, resource, and a key caveat in an efficient manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with no output schema and full schema coverage, the description is adequate. It covers the primary behavioral nuance (secret omission). It does not explicitly describe the return format, but for a straightforward GET that is minor. Overall, it provides enough context 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%, so both parameters are already documented. The description does not add any parameter-specific meaning; it simply names the operation. Baseline 3 is appropriate since the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'one webhook', plus the specific constraint 'without its signing secret'. This distinguishes it from siblings like webhook_create, webhook_disable, and webhooks (list). An agent can immediately tell this is a read operation for a single 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?
The description does not explicitly state when to use this tool versus alternatives. It implies a single-webhook read, but there is no mention of when to prefer it over listing or other webhook operations. The context is clear, but there is no guidance on exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commsharbor_webhooksAInspect
List the webhook endpoints of the organization, without their signing secrets.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | Yes | Active organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. 'Without their signing secrets' is a useful behavioral guarantee, and the organization scoping is explicit. But it does not disclose pagination, response shape, or whether disabled endpoints are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence communicates the action, resource, scope, and an important security-related exclusion with zero filler. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list operation, the description plus schema is sufficient to invoke the tool correctly: organization_id is the only required input and the purpose is unambiguous. Minor gaps around response format and pagination remain, but the tool is simple enough that these are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents organization_id with 100% coverage, including the hint 'Active organization ID.' The description adds no parameter-level meaning 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?
Description names a specific action ('List') and resource ('webhook endpoints of the organization'), and adds a meaningful qualifier: 'without their signing secrets.' This clearly distinguishes it from singular webhook_get and management siblings like webhook_create and webhook_disable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 intended use case is clear: retrieve all webhook endpoints for an organization. The exclusion of signing secrets sets expectations, and the plural phrasing implies this is the collection counterpart to webhook_get. However, it does not explicitly state when to prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pricingCInspect
Current public prices and free allowances; no charge.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does little: 'no charge' is ambiguous (does it mean the endpoint is free to call, or that listed prices are zero?). It never states whether the call is read-only, whether auth is required, or whether results are cached/static.
Agents need to know what a tool does to the 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 key content (what it returns) is front-loaded. It is arguably too terse to stand alone, 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?
With no output schema, the description is the only source of return-shape information, and it only gestures at the payload ('prices and free allowances') without indicating structure or freshness. For a trivial zero-parameter informational tool this is adequate but thin.
Complex tools with many parameters or behaviors need more documentation. 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 is 4. No parameter meaning is 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 names the resource ('public prices and free allowances') so an agent can tell it returns pricing information, but it gives no verb and no differentiation from the sibling 'billing' tool, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the sibling 'billing' or 'api_index' tools, and no prerequisites are given. Usage must be inferred purely 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
commsharbor_crm_tasks_create1 field changed- changed
Input schema / properties / status / enumPrevious value: -[ - "open", - "done", - "cancelled" -]New value: +[ + "open", + "done", + "canceled" +]
- Changed
commsharbor_crm_tasks_update1 field changed- changed
Input schema / properties / status / enumPrevious value: -[ - "open", - "done", - "cancelled" -]New value: +[ + "open", + "done", + "canceled" +]
Related MCP Connectors
Send transactional email, run campaigns, manage contacts and automations, audit deliverability.
Send, track, and manage transactional and bulk email delivery
Email deliverability monitoring and sending: bounces, complaints, suppression, campaigns.
Email infrastructure as a service: mailboxes, domains, dedicated IPs, sending, deliverability.
Related MCP Servers
FlicenseNot gradedqualityBmaintenanceA local email server for AI assistants that enables sending transactional and marketing emails with template management, recipient groups, and automatic consent flow handling.1-- AlicenseAqualityAmaintenanceEnables AI agents to send transactional email, authenticate sending domains, track delivery, and diagnose deliverability issues programmatically.1347 npmMIT
- AlicenseAqualityAmaintenanceA multi-service email platform for MCP-compatible clients that supports standard email providers, transactional APIs, and local testing environments. It enables users to send and receive emails, monitor service health, and integrate with messaging webhooks like Slack and Discord through natural language commands.102MIT
- AlicenseAqualityBmaintenanceManages email accounts via IMAP/SMTP, enabling reading, searching, sending, replying, forwarding, and folder management with multi-user and OAuth support.22MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.