Skip to main content
Glama
FirstReply

FirstReply MCP Server

Official
by FirstReply

FirstReply MCP Server

MCP (Model Context Protocol) server that exposes FirstReply customer support operations as tools for AI assistants like Claude. It lets an assistant browse and answer customer conversations, look up contacts, search and maintain the knowledge base, draft and translate replies, manage classifications, templates, prompts, webhooks and saved filters, pull support statistics and manage organization API keys, all scoped and permission-checked by the FirstReply REST API.

Tools

Tools are named resource_action. Every organization-scoped tool takes an organizationId (see organization_list). Tools that send something to a customer or delete data are annotated as destructive.

Organization, members & API keys

Tool

Description

organization_list

List accessible organizations

organization_get

Get an organization with its settings and AI prompts

organization_update

Update name, language, auto-close and the custom AI prompts

organization_usage

Plan, trial state and inbox / member counts against the limits

member_list

List organization members

member_get

Get one member

member_create

Add a member by email with a permission level

member_update

Change a member's permission level

member_delete

Remove a member (destructive)

api_key_list

List the organization's named API keys (metadata only)

api_key_create

Create a named API key; plaintext returned once

api_key_delete

Delete (revoke) an API key (destructive)

Inboxes

Tool

Description

inbox_list

List the inboxes (email, WhatsApp, Messenger, Instagram, LinkedIn, Google Play, App Store, website chat)

inbox_get

Get one inbox

inbox_statistics

Statistics per inbox

inbox_refresh

Fetch new messages from an inbox now

inbox_test

Test the connection of an inbox to its platform

Conversations & messages

Tool

Description

conversation_list

List / filter / search conversations (status, inbox, member, contact, classification, language, spam, priority, date ranges, search operators)

conversation_get

Get one conversation

conversation_thread

Get a conversation with all of its messages

conversation_messages

List the messages of a conversation

conversation_reply

Send a reply to the customer, or store an internal note or a draft (destructive)

conversation_close

Close a conversation

conversation_read

Mark a conversation as read

conversation_spam

Mark a conversation as spam or not spam

conversation_update

Assign, reprioritize, reclassify, rename, change language, contact or spam flag

conversation_delete

Delete a conversation (destructive)

conversation_stats

Conversation statistics for a date range

conversation_stats_by_member

Statistics per member for a date range

conversation_metrics

Response and resolution metrics for a date range

conversation_totals

Current open / unread totals

message_get

Get one message

message_update

Edit a draft or internal note

message_send

Send a draft (destructive)

message_delete

Delete a message (destructive)

The search argument of conversation_list, search and the saved filters understands the FirstReply search syntax: words are AND-ed and prefix matched, "quoted phrases", -word, and the operators from:, subject:, is: (open, closed, unread, read, assigned, unassigned, ai), has: (attachment, draft), before: and after: (YYYY-MM-DD).

Contacts

Tool

Description

contact_list

List / search contacts

contact_get

Get one contact with custom fields

contact_create

Create a contact

contact_update

Update a contact

contact_delete

Delete a contact (destructive)

contact_field_list

List the custom contact fields

Classifications

Tool

Description

classification_list

List classifications with their automation settings

classification_get

Get one classification

classification_create

Create a classification

classification_update

Update a classification (unchanged settings are kept)

classification_delete

Delete a classification, optionally moving its conversations (destructive)

classification_impact

Preview what deleting a classification affects

classification_statistics

Conversation counts per classification

Knowledge base

Tool

Description

knowledge_search

Search or browse knowledge entries

knowledge_get

Get one knowledge entry

knowledge_create

Add a question / answer entry

knowledge_update

Update a knowledge entry

knowledge_delete

Delete a knowledge entry (destructive)

knowledge_source_list

List synced knowledge sources with their sync state

knowledge_source_get

Get one knowledge source

knowledge_source_sync

Start a sync now

knowledge_source_status

Sync status of a source

Knowledge source configurations hold credentials and are never returned.

Tool

Description

ai_draft_reply

Generate an AI reply draft for a conversation without sending it

ai_prompt

Run a free-form prompt with the organization's persona and knowledge

ai_translate

Translate a text, e.g. a reply into the customer's language

ai_test

Simulate an incoming message: classification, spam verdict and reply

search

Global search across conversations, contacts, knowledge and messages

Templates, prompts, webhooks & filters

Tool

Description

template_list / template_get / template_create / template_update / template_delete

Reply templates and their language variants

prompt_list / prompt_get / prompt_create / prompt_update / prompt_delete

Saved AI prompts

webhook_list / webhook_get / webhook_create / webhook_update / webhook_delete

Webhooks and their events

webhook_test

Send a test event to a webhook

webhook_rotate_secret

Generate a new signing secret (returned once)

filter_list / filter_get / filter_create / filter_update / filter_delete

Saved conversation filters

Not covered, by design: authentication and profile endpoints, inbox creation and OAuth connections, knowledge source creation, billing, attachments and CSV import / export. Those stay in the FirstReply web app.

Related MCP server: ProductLane MCP Server

Requirements

  • Node.js >= 18

  • A FirstReply organization API key

Authentication

The server authenticates against the FirstReply REST API with an organization API key (fr_...), created in FirstReply under Organization → Development → API Keys. Organizations support multiple named keys with optional expiry, so it is best to create a dedicated key for this MCP server. The key is sent as Authorization: Bearer.

API key requests run with the permissions of the organization owner: treat the key as a secret and rotate it by creating a new key and deleting the old one.

Usage (stdio, e.g. Claude Desktop)

{
  "mcpServers": {
    "firstreply": {
      "command": "npx",
      "args": ["-y", "@firstreply/mcp"],
      "env": {
        "FIRSTREPLY_API_TOKEN": "fr_..."
      }
    }
  }
}

Claude Code

claude mcp add firstreply --env FIRSTREPLY_API_TOKEN=fr_... -- npx -y @firstreply/mcp

Usage (HTTP)

npm run build && npm run start:http   # listens on :8080

Stateless streamable-HTTP transport; every request must carry Authorization: Bearer fr_.... A /health endpoint is provided for probes.

Environment variables

Variable

Description

FIRSTREPLY_API_TOKEN

Organization API key (stdio mode)

FIRSTREPLY_API_URL

API base URL (default https://api.firstreply.ai)

PORT

HTTP port (HTTP mode, default 8080)

MCP_ENDPOINT_PATH

HTTP endpoint path (default /)

Development

npm install
npm run typecheck
npm test          # builds and runs node:test suites
npm run build     # compiles TypeScript to dist/

Project structure

src/
├── index.ts              # stdio entry point
├── http-server.ts        # streamable-HTTP entry point (Express)
├── server.ts             # MCP server wiring (McpServer + registerTool)
├── tools.ts              # loads the tool modules, exposes the registry
├── tools/registry.ts     # add() builder, schema helpers, dispatch
├── tools/<resource>.ts   # one module per resource (conversations, contacts, ...)
└── client.ts             # minimal FirstReply REST client
test/
└── tools.test.ts         # tool definition checks and handler tests against a fake client

Adding a tool: call add(name, description, zodShape, annotations, handler) in the matching src/tools/<resource>.ts. The zod shape is validated by the SDK and published to clients as JSON Schema; every argument needs a description (the tests check).

Available Tools

84 tools
ai_draft_replyAi Draft ReplyA
Read-onlyIdempotent

Generate an AI reply draft for a conversation using the organization's configured prompts and knowledge base. Returns the draft without sending it.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the draft is generated from the organization's configured prompts and knowledge base, and the result is returned rather than sent, which explains why the call is side-effect-free.

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

Conciseness5/5

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

Two sentences with zero filler; the core purpose is front-loaded and the key differentiator (no send) closes it. Every clause earns its place.

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

Completeness4/5

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

For a simple two-parameter, no-nested, read-only tool with full schema coverage and annotations, the description is nearly sufficient. It notes a draft is returned but does not describe draft characteristics (e.g. it is not persisted, single suggestion), a minor gap given there is no output schema.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters carry descriptions (including a pointer to organization_list for the org id), so the schema does the heavy lifting. The description adds no additional parameter meaning, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Generate an AI reply draft for a conversation') and immediately scopes it relative to the similar-looking conversation_reply sibling by specifying 'without sending it.' An agent can distinguish it from the send path without opening the schema.

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

Usage Guidelines3/5

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

The 'without sending it' clause implicitly signals the when-to-use case versus conversation_reply, but the description never explicitly names the alternative or states a positive selection condition (e.g. 'use before replying to preview'). Usage is implied rather than spelled out.

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

ai_promptAi PromptA
Read-onlyIdempotent

Run a free-form prompt through the organization's AI: it answers with the organization's persona and response rules and, unless disabled, the knowledge base entries matching the prompt. Use it to draft texts or answer questions from the knowledge base. Include any conversation context in the prompt itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe prompt or question.
organizationIdYesThe organization id. Use organization_list to find it.
removeKnowledgeNotrue answers without searching the knowledge base.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add behavioral context — and it does: the response is shaped by the organization's persona and response rules, and knowledge-base entries are injected unless disabled. It still omits latency, cost, and whether the answer is grounded/citable, which matters for an AI-backed call.

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

Conciseness4/5

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

Two tight sentences with the core behavior front-loaded, followed by usage and context guidance. The middle clause 'it answers with the organization's persona and response rules and... the knowledge base entries' is slightly run-on but still efficient.

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

Completeness4/5

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

With no output schema, the description must convey the return nature — and it does, describing a free-form textual answer composed from persona rules plus retrieved knowledge. Remaining gaps (answer length, citation behavior, error modes) are minor for a free-form generation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, including removeKnowledge. The description's 'unless disabled, the knowledge base entries matching the prompt' reinforces that switch but adds little beyond the schema's own wording, matching the baseline of 3 for a fully documented schema.

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

Purpose4/5

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

States a specific verb and resource: 'Run a free-form prompt through the organization's AI' and clarifies it answers with the org's persona and response rules. This implicitly separates it from siblings like ai_draft_reply and ai_translate, but never names an alternative explicitly, so it stops short of a 5.

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

Usage Guidelines4/5

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

'Use it to draft texts or answer questions from the knowledge base' gives a clear context for when to reach for this tool. It offers no exclusions or named alternatives (e.g. when to prefer ai_draft_reply or knowledge_search instead), so it lacks the explicit when-not guidance that would earn a 5.

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

ai_testAi TestA
Read-onlyIdempotent

Simulate an incoming customer message: returns the classification the AI would assign, whether it would be spam, and the reply it would give, without creating a conversation. Useful to check classifications, prompts and knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe customer message to test.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds value beyond them by disclosing the key side-effect boundary ("without creating a conversation") and previewing the three-part return (classification, spam flag, generated reply) for a tool that has no output schema.

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

Conciseness5/5

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

Two tightly written sentences, with the core action and its side-effect constraint front-loaded and the use case following. Every clause earns its place with no redundancy.

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

Completeness5/5

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

With no output schema, the description compensates by describing the return payload, and it clarifies the non-mutating behavior that annotations only imply. An agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in the schema, including a helpful pointer to organization_list for the organizationId. The description adds no further parameter-level meaning, so the baseline 3 for schema-documented params is appropriate.

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

Purpose5/5

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

The description opens with a specific verb+resource ("Simulate an incoming customer message") and immediately clarifies scope by stating it works "without creating a conversation." It also enumerates exactly what it returns (classification, spam verdict, reply), letting an agent distinguish it from siblings like ai_draft_reply or conversation_reply without opening any schema.

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

Usage Guidelines4/5

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

It gives a clear context for use ("Useful to check classifications, prompts and knowledge"), which tells the agent this is a pre-flight/testing tool rather than a production action. However, it names no alternative tool and states no explicit when-not-to-use condition, so it falls short of the 5-level routing guidance.

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

ai_translateAi TranslateA
Read-onlyIdempotent

Translate a text into a language, e.g. a reply into the customer's language before conversation_reply. The language of the text is detected first: when it already is the target language the text comes back untouched with translated=false. An empty translation means the translation failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to translate.
languageYesTarget language as a two-letter code, e.g. the language of the conversation.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly/idempotent/non-destructive) by disclosing the detection-first behavior, the untouched-text + translated=false case, and the failure signal of an empty translation. These are non-obvious behavioral 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.

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the edge-case behavior. Every sentence carries distinct information with no filler.

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

Completeness5/5

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

With no output schema, the description compensates by explaining the meaningful return signals (translated=false, empty translation = failure). Combined with full schema coverage and annotations, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents text, language (two-letter code), and organizationId. The description adds only a loose restatement of the language parameter and no syntax beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Translate a text into a language') and immediately frames the concrete use case (translating a reply into the customer's language before conversation_reply). This distinguishes it from siblings like ai_draft_reply or conversation_reply without needing the schema.

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

Usage Guidelines4/5

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

Gives clear usage context by naming the workflow it belongs to (before conversation_reply) and explains the pre-check behavior. It stops short of explicit exclusions or naming an alternative tool for when not to translate, but the when-to-use signal is strong.

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

api_key_createApi Key CreateA

Create a new named API key for an organization. The response contains the plaintext key exactly once: relay it to the user immediately and treat it as a secret; it cannot be retrieved later. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA descriptive name for the key, e.g. the integration that will use it.
expirationDaysNoDays until the key expires. Omit or 0 for a key that never expires.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only declare the non-readonly/non-destructive/non-idempotent profile, but the description adds critical traits beyond them: the plaintext key is returned exactly once, must be relayed immediately, is a secret, and cannot be retrieved later. It also discloses the admin-permission requirement.

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

Conciseness5/5

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

Three tight sentences with zero filler; the core operation leads and the one-time-secret caveat follows immediately, which is the highest-value information front-loaded appropriately.

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

Completeness4/5

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

With no output schema, the description correctly compensates by explaining that the response carries the plaintext key exactly once and cannot be recovered. It does not describe the rest of the returned key object, but for a 3-param create tool it is essentially complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (name, expirationDays, organizationId) are already documented in the schema, including the 'omit or 0 for never expires' semantics. The description adds no parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb+resource+scope: 'Create a new named API key for an organization.' The 'create' verb cleanly distinguishes it from the sibling api_key_list and api_key_delete tools without needing the schema.

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

Usage Guidelines3/5

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

Provides an important prerequisite ('Requires organization admin permission'), but never states when to use this over alternatives (e.g., api_key_list to review existing keys, or when to create vs rotate). Usage is implied by the verb rather than guided.

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

api_key_deleteApi Key DeleteA
Destructive

Delete (revoke) an API key of an organization. Integrations using the key stop working immediately, including this MCP server if the key it authenticates with is deleted. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyIdYesThe id of the API key to delete (see api_key_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantial context beyond the destructiveHint annotation: integrations stop working immediately, the MCP server itself may be destroyed if the acting key is deleted, and organization admin permission is required. These are exactly the consequences an agent must surface before calling.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the action, followed by the impact and the permission requirement. No filler.

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

Completeness5/5

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

For a destructive, non-idempotent operation with no output schema, the description covers effect, self-destruct risk, and authorization. An agent has everything needed to warn and act correctly.

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

Parameters3/5

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

Schema description coverage is 100% – both organizationId and apiKeyId are documented with pointer tools (organization_list, api_key_list). The description adds no parameter detail beyond the schema, so baseline 3.

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

Purpose5/5

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

States a specific verb+resource ('Delete (revoke) an API key of an organization') and clarifies the effect of deletion. An agent can distinguish this from api_key_create, api_key_list, and webhook_rotate_secret readily.

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

Usage Guidelines3/5

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

Implied usage (revoking a key), with a strong consequence note, but no explicit when-to-use/when-not or named alternative procedures (e.g., rotate vs delete). Presents the precondition (admin permission) but not the decision criteria.

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

api_key_listApi Key ListA
Read-onlyIdempotent

List the named API keys of an organization (name, masked prefix, created, last used, expiry). Never returns the key values. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: it never returns key values (a real security-relevant constraint) and it requires admin permission, which affects whether the agent should attempt the call.

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

Conciseness5/5

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

Three tight sentences, each carrying distinct information: what is returned, the security constraint, and the permission requirement. Nothing is redundant and the purpose is front-loaded.

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

Completeness4/5

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

With no output schema, the description helpfully enumerates the returned fields (name, masked prefix, created, last used, expiry), so the agent knows the response shape. A single-param read tool is otherwise fully specified; only minor gaps remain.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single parameter, so the schema fully documents organizationId and even cross-references organization_list. The description adds no parameter-level detail, which is appropriate at this coverage level – baseline 3.

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

Purpose4/5

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

States a specific verb and resource ('List the named API keys of an organization') and enumerates the returned fields, so the agent knows exactly what is produced. It does not explicitly contrast with the sibling api_key_create/api_key_delete, but the naming makes the read/write split obvious.

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

Usage Guidelines3/5

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

It gives a prerequisite ('Requires organization admin permission') which is useful for deciding feasibility, but offers no explicit when-to-use guidance or named alternatives. Usage is implied rather than instructed.

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

classification_createClassification CreateC

Create a classification.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the classification.
colorNoColor index shown in the app.
aiReplyNotrue lets the AI answer conversations of this classification automatically.
promptIdNoPrompt id the AI uses for replies here (see prompt_list).
autoCloseNotrue closes a conversation automatically after the AI replied.
templateIdNoTemplate id used for replies here (see template_list).
descriptionNoWhat kind of conversations belong here; the AI uses it to classify incoming messages.
aiReplyDraftNotrue makes the AI prepare a draft for the team instead of sending its reply.
organizationIdYesThe organization id. Use organization_list to find it.
defaultMemberIdNoMember id these conversations are assigned to by default (see member_list).
sentimentAnalysisNotrue enables sentiment analysis for these conversations.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the agent knows this is a non-destructive, non-idempotent write. The description adds nothing on top — no note about validation failures, required prior setup, or what happens on duplicate names — despite being free to do so.

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

Conciseness3/5

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

One sentence with zero waste and the action front-loaded, but it is under-specified rather than genuinely concise; there is no content to be efficient about.

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

Completeness2/5

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

For an 11-parameter creation tool with no output schema, the agent gets almost nothing about the concept of a 'classification', required setup ordering, or failure modes. Annotations cover the safety profile, but the description should do more for a mutation of this surface area.

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

Parameters3/5

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

Schema description coverage is 100% across all 11 parameters, including cross-references (prompt_list, template_list, member_list), so the schema carries the full burden. The description contributes no additional parameter meaning, making the baseline 3 appropriate.

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

Purpose2/5

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

"Create a classification" merely restates the tool name and title with no additional scope, field, or resource detail. It does not distinguish this from relatives like classification_update, classification_get, or classification_delete beyond what their names already convey.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (e.g. that organizationId/promptId/templateId must reference existing entities), and no mention of alternatives. The create semantics are inferable 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.

classification_deleteClassification DeleteA
Destructive

Delete a classification. Conversations that use it are moved to reassignTo or left unclassified. Use classification_impact first to see how many conversations and knowledge entries are affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
reassignToNoClassification id that affected conversations are moved to.
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdYesThe classification id (see classification_list).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuinely new context beyond them: affected conversations are reassigned to reassignTo or left unclassified, and knowledge entries may be impacted. It does not state irreversibility or permission requirements, so not a 5.

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

Conciseness5/5

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

Two sentences, zero filler. The destructive action is front-loaded and the consequential behavior and the recommended pre-flight check follow in priority order. Every clause carries operational weight.

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

Completeness4/5

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

For a destructive tool with full annotation coverage, a 100%-documented schema and no output schema, this is close to complete: consequences are spelled out and a discovery tool is recommended. It stops short of stating whether the deletion is reversible or what happens to knowledge entries, deferring that to classification_impact.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds real meaning over the schema by disclosing the fallback behavior of the optional reassignTo parameter ('or left unclassified'), which the schema does not state. organizationId and classificationId gain nothing beyond the schema's own pointers.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Delete a classification'), immediately distinguishing it from classification_create, classification_update, and classification_impact in the sibling set. It goes further by stating the resulting state of affected data, so the agent knows exactly what operation this is.

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

Usage Guidelines4/5

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

It names a concrete pre-flight alternative and the condition that selects it: 'Use classification_impact first to see how many conversations and knowledge entries are affected.' That is clear when-to-use-before-this guidance, though it stops short of stating outright exclusions or when not to delete.

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

classification_getClassification GetB
Read-onlyIdempotent

Get one classification by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdYesThe classification id (see classification_list).

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that, such as whether the lookup errors on a missing id or requires specific permissions beyond organization scoping.

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

Conciseness5/5

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

A single short sentence with the verb and scoping constraint front-loaded and zero filler. Nothing could be removed without losing information.

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

Completeness3/5

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

For a simple two-parameter read, the description plus rich annotations and full schema coverage is just barely sufficient. However, there is no output schema, and the description does not hint at what a classification object contains or how errors are surfaced, leaving a moderate gap.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (organizationId, classificationId) are documented in the schema with cross-references to organization_list and classification_list. The description's 'by id' adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('one classification') and scopes it to a single item via 'by id', which implicitly separates it from classification_list. It does not, however, explicitly distinguish itself from other singular siblings like classification_impact or classification_statistics.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus classification_list, classification_impact, or classification_statistics. The 'by id' phrasing is the only indirect usage signal, and prerequisites (e.g., needing an existing classification id) are implied rather than stated.

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

classification_impactClassification ImpactA
Read-onlyIdempotent

Preview what deleting a classification would affect (conversations, knowledge entries).

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdYesThe classification id (see classification_list).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the agent knows this is a safe, non-mutating call. The description adds that it is a preview and what scope it covers, but says nothing about result format, counts, or completeness guarantees beyond the annotations.

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

Conciseness5/5

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

A single front-loaded sentence with the verb first and zero filler; nothing could be cut without losing meaning.

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

Completeness4/5

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

For a small read-only tool with full schema coverage and safety annotations, the description supplies enough for correct invocation. It lacks an explicit statement of what the preview returns, but with no output schema and read-only safe semantics, the gap is minor.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented there, including cross-references to organization_list and classification_list. The description contributes no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (preview), resource (classification deletion impact) and even enumerates affected entity types (conversations, knowledge entries). It is clearly distinguishable in intent from sibling classification_delete, though it does not name that sibling explicitly.

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

Usage Guidelines3/5

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

'Preview what deleting ... would affect' strongly implies a pre-deletion safety check, but the description never states when to call this versus going straight to classification_delete, nor any prerequisites beyond the schema's pointer to classification_list.

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

classification_listClassification ListB
Read-onlyIdempotent

List the classifications of an organization with their automation settings (AI reply, draft, auto close, default assignee, prompt, template).

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that automation settings are bundled into the output, but says nothing about pagination, result size, or permissions. A 3 is appropriate given the 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.

Conciseness5/5

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

A single sentence with zero filler, front-loading the verb and resource and then listing the returned fields. Every clause earns its place.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the fields returned, which compensates well. Minor gaps remain around ordering/pagination of a list operation, but for a one-parameter read tool the definition is close to complete.

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

Parameters3/5

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

With 100% schema description coverage on the single organizationId parameter (including the pointer to organization_list), the schema already carries the full parameter burden. The description adds no format or constraint detail beyond that, so the baseline of 3 applies.

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

Purpose4/5

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 (classifications) with organizational scope, and enumerates the included automation settings (AI reply, draft, auto close, assignee, prompt, template). It is clearly distinct in intent from classification_get, though it does not name a sibling explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus classification_get, classification_statistics, or classification_impact. The only routing hint ('Use organization_list to find it') is attached to the parameter, not the tool, so it belongs to the schema, not usage guidance.

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

classification_statisticsClassification StatisticsB
Read-onlyIdempotent

How many conversations fall into each classification of an organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that profile: it does not state whether closed/spam conversations are counted, whether a time range applies, or how the grouping is structured, which matters for an aggregate tool.

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

Conciseness4/5

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

One sentence with zero filler and the resource/scope front-loaded. It is appropriately sized for the schema complexity, though it is arguably thin for a statistics endpoint that has filtering behavior worth stating.

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

Completeness3/5

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

With no output schema, the description must at least imply the return shape, and it does (a count per classification). However, it omits whether results respect filters, time windows, or conversation states, leaving the agent unable to predict the exact scope of the counts.

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

Parameters3/5

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

There is a single required parameter (organizationId) at 100% schema description coverage, and the schema itself already tells the agent to use organization_list to find it. The description adds no parameter meaning, so the baseline of 3 for fully documented parameters applies.

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

Purpose4/5

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

States a specific resource relationship: conversation counts grouped by classification, scoped to an organization. It conveys the aggregate nature of the tool clearly, but does not distinguish itself from siblings like classification_list, classification_impact, or conversation_stats, so an agent must infer which classification-related aggregate to call.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as conversation_stats, conversation_totals, or classification_list. The agent learns what the tool returns but not when it is the right choice over neighboring statistics tools.

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

classification_updateClassification UpdateB

Update a classification. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name.
colorNoColor index shown in the app.
aiReplyNotrue lets the AI answer conversations of this classification automatically.
promptIdNoPrompt id the AI uses for replies here (see prompt_list).
autoCloseNotrue closes a conversation automatically after the AI replied.
templateIdNoTemplate id used for replies here (see template_list).
descriptionNoWhat kind of conversations belong here; the AI uses it to classify incoming messages.
aiReplyDraftNotrue makes the AI prepare a draft for the team instead of sending its reply.
organizationIdYesThe organization id. Use organization_list to find it.
defaultMemberIdNoMember id these conversations are assigned to by default (see member_list).
classificationIdYesThe classification id (see classification_list).
sentimentAnalysisNotrue enables sentiment analysis for these conversations.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation, so the safety profile is covered. The description adds one genuinely useful behavioral detail beyond them: that omitted fields are left untouched (partial update). It says nothing about permissions, failure modes for invalid ids, or side effects on AI auto-reply settings.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action, with no filler. The second sentence partially restates what the schema's two-required-param structure already implies, which keeps it from a 5.

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

Completeness3/5

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

For a 12-parameter mutation with rich schema descriptions and an annotation set, the description is minimally sufficient but thin. It omits any mention of how the AI-related flags (aiReply, aiReplyDraft, autoClose) interact or what the caller should expect after an update.

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

Parameters3/5

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

Schema description coverage is 100% across all 12 parameters, so the schema already explains name, color, aiReply, promptId, autoClose, templateId, and the rest. The description adds no parameter-level meaning beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Update a classification"), which an agent can distinguish from the create/delete/list siblings by name alone. It does not explicitly contrast with classification_create or classification_delete, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

"Only provide fields to change" is a patch-semantics hint for invocation rather than guidance on when to choose this tool over alternatives. Nothing states prerequisites (e.g. needing an existing classificationId) or when to use create/delete instead.

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

contact_createContact CreateA

Create a contact. Provide at least a name or an email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name, when first and last name are not known separately.
emailNoEmail address.
phoneNoPhone number.
fieldsNoCustom field values. Fields not listed keep their value.
lastnameNoLast name.
firstnameNoFirst name.
descriptionNoFree text notes about the contact.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, covering the safety profile. The description adds the validation rule that at least a name or email is required, which is useful but does not disclose duplicate handling, permission requirements, or other behavioral traits beyond what annotations and schema provide.

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

Conciseness5/5

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

The description is two short sentences with no wasted words. It is front-loaded with the core action ('Create a contact') and immediately follows with the essential input requirement, making it easy to parse quickly.

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

Completeness4/5

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

Given the tool's simplicity, 100% schema description coverage, and clear annotations, the description is nearly complete for basic invocation. It could mention that this is for new contacts only (e.g., not for updating existing contacts), but for a create operation with no output schema, the essential information is present.

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

Parameters4/5

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

Schema description coverage is 100%, so the parameter-level documentation already explains each field. The description adds a cross-parameter constraint not present in the schema—'Provide at least a name or an email address'—which meaningfully affects invocation since only organizationId is marked required. This extra business rule is valuable beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create a contact.' It clearly identifies the operation as a creation. However, it does not explicitly distinguish this tool from contact_update or other sibling tools, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use contact_create versus alternatives such as contact_update or contact_list. The only instruction, 'Provide at least a name or an email address,' is an input constraint rather than usage context, and no exclusions or scenarios are mentioned.

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

contact_deleteContact DeleteB
Destructive

Delete a contact permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesThe contact id (see contact_list or the contactId of a conversation).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the irreversibility profile is largely covered. The word 'permanently' reinforces that the deletion is unrecoverable but adds little beyond the annotation, and the description says nothing about cascade effects (e.g., whether associated conversations or messages are affected).

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

Conciseness4/5

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

A single front-loaded sentence with no filler or repetition. Its brevity is appropriate, though it is arguably terse for a destructive tool where one more clause about consequences would earn its place.

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

Completeness2/5

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

For a permanent, non-idempotent delete with no output schema, the description omits any warning about consequences, auth requirements, or side effects on dependent records. An agent has no way to know what else is affected by removing a contact.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (contactId, organizationId) are documented in the schema with pointers to contact_list and organization_list. The description adds no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Delete a contact'), so the action is unambiguous. It does not differentiate from the many sibling *_delete tools (member_delete, conversation_delete, message_delete), though the tool name itself carries that distinction.

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

Usage Guidelines2/5

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

There is no guidance on when to delete a contact versus alternatives such as contact_update or conversation_delete, and no prerequisites or cautions are stated. For an irreversible operation, the absence of any when-to-use context is a real gap.

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

contact_field_listContact Field ListA
Read-onlyIdempotent

List the custom contact fields defined in an organization (key, name, type: 0 = text, 1 = link, 2 = button). Use the keys with contact_create and contact_update.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully carried by structured data. The description adds the type-code legend (0=text, 1=link, 2=button), which is genuinely useful return-value context not present anywhere in the schema, but it says nothing about pagination, ordering, or filtering behavior.

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

Conciseness5/5

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

Two sentences with zero filler, front-loaded with purpose, then returning the type legend and downstream usage. Every clause earns its place.

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

Completeness5/5

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

For a simple read-only list tool, the definition covers purpose, key return fields, the type-code mapping, and the follow-up workflow, while annotations cover safety and the schema covers the single required argument. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

The single organizationId parameter is fully described in the schema (100% coverage), including a pointer to organization_list. The description adds no additional parameter meaning, so the schema-does-the-work baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (List), resource (custom contact fields), and scope (defined in an organization), and even enumerates the returned attributes (key, name, type). An agent can distinguish this from contact_list, contact_create, and contact_update without opening a schema.

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

Usage Guidelines4/5

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

Explicitly names the downstream consumers: 'Use the keys with contact_create and contact_update.' This tells the agent why it would call the tool and what to do with the result, though there are no exclusions or when-not conditions (which are arguably unnecessary for a discovery endpoint).

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

contact_getContact GetA
Read-onlyIdempotent

Get one contact by id, including custom field values and the number of conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesThe contact id (see contact_list or the contactId of a conversation).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, not open-world), so the bar is lower. The description adds genuine value by disclosing what the call returns - custom field values and a conversation count - which is otherwise undisclosed since no output schema exists.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. Every clause earns its place by stating the operation, its scope, and its payload.

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

Completeness4/5

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

For a simple two-parameter read tool, the description plus rich annotations and a fully documented schema leave little ambiguity. The absence of an output schema is partially compensated by the description naming the returned fields, though it does not cover error cases or empty results.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in the schema, including how to find them (contact_list, organization_list). The description adds no parameter-level detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Get one contact by id') and clarifies scope by saying 'one contact', which implicitly separates it from the list operation. It also names the returned payload (custom field values, conversation count). It stops short of explicitly naming sibling contact_list/contact_update as alternatives.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance. The 'by id' phrasing hints that an id is required, but the description never states when to prefer this over contact_list or how the id is obtained. Usage must be inferred entirely.

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

contact_listContact ListA
Read-onlyIdempotent

List or search the contacts (customers) of an organization: name, email, phone, messaging ids, custom fields and conversation count.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
limitNoMaximum items to return (default 10, max 50).
searchNoMatches name, email and phone.
senderOnlyNotrue lists only contacts who have written to the organization.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description usefully adds the scope of returned data (fields and conversation count) but says nothing about pagination or result-size behavior beyond what the schema already documents.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. The purpose and returned data are stated immediately, and every clause earns its place.

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

Completeness4/5

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

For a read-only list tool with full annotation coverage and 100% parameter documentation and no output schema, the description is largely sufficient. It could still note pagination limits or the difference from contact_get, but nothing critical for invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (page, limit, search, senderOnly, organizationId) are already documented in the schema, including the pointer to organization_list. The prose only implies searchability, adding little beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb-set (list or search) and resource (contacts/customers) of an organization, and enumerates the returned fields. It is clear on its own, but it never explicitly distinguishes itself from the sibling contact_get, so an agent must infer list-vs-single from the name alone.

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

Usage Guidelines3/5

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

'List or search' implies the read/collection use case, and the search parameter is named in prose. However, there is no explicit when-to-use versus contact_get or when-not guidance, and no mention of prerequisites beyond the schema's own organizationId hint.

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

contact_updateContact UpdateB

Update a contact. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name.
emailNoEmail address.
phoneNoPhone number.
fieldsNoCustom field values. Fields not listed keep their value.
lastnameNoLast name.
contactIdYesThe contact id (see contact_list or the contactId of a conversation).
firstnameNoFirst name.
descriptionNoFree text notes about the contact.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the agent knows this is a non-destructive mutation that is not idempotent. The description reinforces the merge semantics with "only provide fields to change", but adds nothing about permissions, error behaviour, or side effects on unmentioned fields (the schema covers the latter).

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

Conciseness4/5

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

Two short imperative sentences, with the core action front-loaded and the usage caveat second. Nothing is wasted, though the description is on the thin side for a nine-parameter mutation tool.

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

Completeness3/5

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

For a mutation tool with no output schema, the definition leans entirely on annotations plus a 100%-documented schema. That combination is just enough to call it correctly, but the description itself contributes almost no behavioural or return-value context.

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

Parameters3/5

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

Schema description coverage is 100%, including helpful cross-references such as contact_field_list and organization_list, so the schema carries the parameter burden. The description's only addition is the partial-update instruction, which is already echoed by the `fields` description ("Fields not listed keep their value"), so baseline 3 is right.

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

Purpose4/5

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

States a specific verb (update) and resource (contact), so the agent knows exactly what the tool does. It does not distinguish itself from neighbours like member_update or organization_update, but the contact-scoped name makes the target unambiguous.

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

Usage Guidelines3/5

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

"Only provide fields to change" gives the partial-update contract, which is genuine usage guidance for a PATCH-style call. However, it never says when to prefer this over contact_create or contact_delete, nor what happens if a contact id is invalid, so usage is merely implied.

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

conversation_closeConversation CloseC

Close a customer conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, covering the basic safety profile. The description adds no behavioral context beyond the annotation, such as whether closure is reversible, what happens to the conversation thread, or any permission requirements.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It is front-loaded and readable, though it is so brief that it omits potentially useful structural context.

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

Completeness3/5

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

For a simple two-parameter mutation with full schema coverage and annotations, the description is minimally adequate. It does not explain the effect of closing a conversation or how it relates to siblings like conversation_delete, leaving a small but meaningful gap.

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

Parameters3/5

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

Schema description coverage is 100% for both required parameters, and the schema itself explains that organizationId can be found via organization_list. The description adds no parameter meaning beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a clear verb and resource: 'Close a customer conversation.' It identifies the action and object, but does not distinguish this tool from siblings such as conversation_update, conversation_delete, or conversation_spam, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like conversation_delete or conversation_update. It only restates the action, so the agent receives no explicit context, exclusions, or conditions for use.

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

conversation_deleteConversation DeleteB
Destructive

Delete a conversation and all of its messages permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is known. The description adds that deletion is permanent and cascades to all messages, which is meaningful context beyond the annotations, but it does not clarify auth requirements or whether anything is recoverable beyond the word 'permanently'.

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

Conciseness5/5

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

One short sentence with zero filler, front-loading the action and resource. Every word (including 'permanently' and 'all of its messages') earns its place.

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

Completeness4/5

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

For a two-parameter destructive delete with full schema coverage and no output schema, what an agent needs is essentially the action and irreversibility, both present. It could go further by noting the effect on related records or the absence of undo, but it is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so both required parameters are already documented in the schema, including how to obtain organizationId. The description adds no parameter-level detail, so the baseline 3 applies.

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

Purpose4/5

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

Clear verb+resource ('Delete a conversation') with added scope ('and all of its messages permanently'), which hints at the cascade distinction from message_delete. It does not name any sibling explicitly, so an agent gets no direct routing signal versus conversation_close or conversation_spam.

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

Usage Guidelines2/5

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

No statement of when this should be used instead of alternatives such as conversation_close (soft close) or conversation_spam. Nothing about prerequisites beyond the schema's note on organization_list, and no exclusions or caution guidance for a destructive operation.

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

conversation_getConversation GetA
Read-onlyIdempotent

Get a customer conversation by id: subject, status, priority, classification (with the AI's reason and confidence), assignment, contact, language and last message.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds value by enumerating the returned payload (classification with reason/confidence, last message), but says nothing about permissions, error behavior, or rate limits.

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

Conciseness5/5

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

A single front-loaded sentence with the purpose stated first and the field list following. No wasted words.

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

Completeness4/5

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

With no output schema, the description usefully compensates by listing the fields returned (status, priority, classification, assignment, contact, language, last message). For a simple read-only two-parameter lookup this is nearly complete, lacking only auth/error context.

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

Parameters3/5

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

Schema description coverage is 100% and both required parameters (organizationId, conversationId) are documented in the schema itself, including the hint to use organization_list. The description adds no parameter-level detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a clear verb ('Get') plus resource ('customer conversation by id') and enumerates the returned fields, which lets an agent distinguish it from the plural conversation_list. It does not explicitly name a sibling alternative, so it falls short of the top tier.

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

Usage Guidelines3/5

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

The 'by id' phrasing implies single-record lookup rather than listing, but there is no explicit when-to-use, when-not-to-use, or named alternative guidance. Usage must be inferred from context.

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

conversation_listConversation ListA
Read-onlyIdempotent

List customer conversations of an organization, highest priority and most recent activity first (by relevance when searching). All filters are optional and combine. Each result carries the subject, status, priority, classification, assignee, contact, language and the last message.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
spamNotrue lists only conversations marked as spam, false only the others. Omit for the default listing.
limitNoMaximum items to return (default 10, max 50).
searchNoFull text search over subject, messages and contact. Words are AND-ed and prefix matched. Use "quoted phrases", -word to exclude, and the operators from:<sender name or email>, subject:<text>, is:<open|closed|unread|read|assigned|unassigned|ai>, has:<attachment|draft>, before:<YYYY-MM-DD>, after:<YYYY-MM-DD>.
statusNoFilter by status; "open" is unread + read.
inboxIdNoFilter by inbox id.
languageNoFilter by the customer's language (two-letter code).
priorityNoFilter by exact priority (higher = more urgent).
contactIdNoFilter by contact id: the conversations of one customer.
createdAfterNoOnly conversations created at or after this time. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedAfterNoOnly conversations updated at or after this time. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
createdBeforeNoOnly conversations created at or before this time. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedBeforeNoOnly conversations updated at or before this time. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
organizationIdYesThe organization id. Use organization_list to find it.
assignedMemberIdNoFilter by assigned organization member id.
classificationIdNoFilter by classification id.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description still adds real behavior: the result ordering rule and the fact that ordering switches to relevance when a search is present, plus an enumeration of returned fields (subject, status, priority, classification, assignee, contact, language, last message) — valuable since there is no output schema.

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

Conciseness5/5

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

Two tight sentences with zero filler: the listing scope and ordering come first, followed by the filter-combination and result-content facts. Every clause carries information an agent can act on.

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

Completeness4/5

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

For a 16-parameter read tool with no output schema, the description covers the essentials: scope, ordering, filter combination, and returned fields. It omits page/limit pagination behavior and does not address what an empty result means, but the schema documents those parameters thoroughly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description earns above baseline by stating that filters are optional and combinable (AND semantics) and by tying the 'search' parameter to a different ordering mode, which the schema alone does not express. It does not explain pagination interaction or the spam-omission default beyond what the schema says.

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

Purpose4/5

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

Names a specific verb and resource (list customer conversations) and adds the ordering contract (highest priority / most recent first, relevance when searching) plus the shape of each result. It does not explicitly distinguish itself from siblings such as conversation_stats, conversation_totals, or conversation_get, so an agent must infer 'list vs aggregate vs single' on its own.

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

Usage Guidelines3/5

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

'All filters are optional and combine' is useful invocation guidance and the search-triggered relevance ordering is implied context. However, there is no explicit when-to-use / when-not-to-use statement and no pointer to alternatives (conversation_get for one conversation, conversation_stats for counts), leaving the choice to inference.

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

conversation_messagesConversation MessagesA
Read-onlyIdempotent

List the messages of a conversation, newest first. Each message carries sender, recipients, plain text, detected language, a translation into the team's language when they differ, and draft / internal note flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
limitNoMaximum items to return (default 10, max 50).
searchNoOnly messages matching this text.
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuine value beyond them by enumerating the returned message content: sender, recipients, text, detected language, team-language translation, and draft/internal-note flags. Since there is no output schema, this pre-empts the main behavioral unknown.

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

Conciseness5/5

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

Two tight sentences, zero filler. The core action and ordering are front-loaded, and the return-field enumeration follows logically.

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

Completeness4/5

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

With no output schema, the description helpfully characterizes the payload shape; pagination and filtering semantics live in the 100%-covered schema. Absent pagination-behavior specifics and any sibling routing, it falls just short of fully self-sufficient.

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

Parameters3/5

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

Schema description coverage is 100% and all five parameters are documented in the schema, including pagination, search, and the organization_list hint. The description adds no additional parameter semantics, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (list) and resource (messages of a conversation) plus an ordering guarantee (newest first). It is clearly distinguishable from message_get by being a collection read, but it does not position itself against close siblings like conversation_thread or conversation_get.

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

Usage Guidelines2/5

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

The description implies usage by naming the required resource scope, but gives no explicit when-to-use guidance, no exclusions, and no reference to alternatives such as conversation_thread or message_get. The agent must infer the routing itself.

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

conversation_metricsConversation MetricsB
Read-onlyIdempotent

Support metrics of an organization for a date range: totals and closing rate, first reply times (median, p90, average), AI reply share, sentiment share, closing rate over time, close reasons and closes per member.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD).
startDateNoStart date (YYYY-MM-DD).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety and repeatability are covered. The description adds the aggregation scope (organization-wide, date range) and enumerates the returned metrics, which is useful return-value context given there is no output schema, but it discloses no auth, rate-limit, or default-range behavior.

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

Conciseness4/5

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

A single dense sentence front-loads the scope before the colon and then lists outputs efficiently with no filler. The long enumeration of metrics is justified because no output schema exists, though the phrasing is noun-heavy rather than action-oriented.

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

Completeness3/5

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

With no output schema, enumerating the returned metrics is the right move and partially compensates. However, it omits whether dates are optional or defaulted, how metrics are segmented (per member vs. per organization), and how it relates to the several sibling statistics tools an agent could confuse it with.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters are documented, including the YYYY-MM-DD format and the pointer to organization_list. The description only loosely ties startDate/endDate together with 'for a date range' and adds no syntax or default behavior beyond the schema.

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

Purpose4/5

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

The description names a clear resource (organization support metrics) and scope (date range) and enumerates the specific metrics returned. It never distinguishes itself from the numerous sibling statistics tools (conversation_stats, conversation_stats_by_member, conversation_totals, inbox_statistics), so an agent cannot tell which of the overlapping stats endpoints to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of when to prefer this over conversation_stats, conversation_stats_by_member, or conversation_totals, and no note about date-range defaults or prerequisites. The reader must infer usage entirely from the metric list.

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

conversation_readConversation ReadB

Mark an unread conversation as read.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation, and the description is consistent with that. It adds the 'unread' targeting context, which is mild value, but omits what happens when the conversation is already read, whether the change is reversible, and any permission requirements.

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

Conciseness4/5

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

A single short sentence with the action front-loaded and zero filler. It is appropriately sized, though it does nothing to route the agent among siblings.

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

Completeness3/5

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

For a two-parameter mutation with no output schema and annotations covering the safety profile, the essentials are present. Still missing is any statement of the effect on an already-read conversation or the return behavior, which matters given idempotentHint=false.

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

Parameters3/5

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

Schema coverage is 100% and both parameters carry descriptions, including a pointer to organization_list for organizationId. The description adds nothing beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

Specific verb+resource combination ('mark ... as read' for a 'conversation') that an agent can act on. It doesn't distinguish itself from siblings like conversation_update or conversation_close, but the operation is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites (e.g. whether the caller must be a member of the conversation), and no mention of alternatives such as conversation_update. The 'unread' precondition is implied but never explained.

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

conversation_replyConversation ReplyA
Destructive

Send a reply to the customer in a conversation, delivered through the conversation's inbox (email, WhatsApp, ...). Sending is irreversible: only call it with a text the user has approved. Set internal=true to add an internal note visible to the team only, or draft=true to store a draft the team can review and send with message_send.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNotrue stores the text as a draft instead of sending it.
messageYesThe plain text of the reply, note or draft.
internalNotrue stores the text as an internal note instead of sending it.
languageNoTwo-letter code of the language of message when it was translated for the customer (see ai_translate). Send together with translation.
translationNoThe text as the agent wrote it, when message is a translation of it. Kept alongside the sent text.
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description usefully reinforces this with 'Sending is irreversible' plus a user-approval precondition — real operational context beyond the hints. It does not cover permission/auth requirements or behavior on partial delivery failure.

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

Conciseness5/5

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

Three tight sentences with the primary action first, then the irreversibility warning, then the mode flags. Every clause carries distinct information and nothing is repeated.

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

Completeness4/5

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

For a 7-parameter, no-output-schema mutation tool, the description covers the action, the safety precondition, the two alternate modes, and the sibling used to complete the draft workflow. Missing auth/permission expectations and failure/error semantics keep it from a 5.

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

Parameters3/5

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

Schema coverage is 100%, so all seven parameters, including language/translation and the two flags, are already documented in the schema. The description restates the internal/draft semantics and adds a workflow hint for drafts, but adds no new syntax or constraints, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('send a reply to the customer in a conversation') and clarifies the delivery channel, plus the two alternative behaviors (internal note, draft) the same call can produce. An agent can distinguish this from conversation_read, message_get, or message_send without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: set internal=true for a team-only note, draft=true for a reviewable draft, and names message_send as the tool that sends drafts. It also imposes a precondition ('only call it with a text the user has approved'). It stops short of an explicit when-not-to-use rule versus message_send in the general send case.

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

conversation_spamConversation SpamA

Mark a conversation as spam, or undo that with spam=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
spamNofalse marks the conversation as not spam (default true).
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar for the description is lower. The description usefully discloses the reversibility (spam=false undoes the marking), which is real behavioral context, but says nothing about permissions, side effects on filters/classifications, or return behavior.

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

Conciseness5/5

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

A single tight sentence that front-loads the primary action and appends the undo mode. Nothing is wasted.

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

Completeness4/5

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

For a three-parameter boolean toggle with fully documented parameters and no output schema, the description is nearly sufficient. Only minor gaps remain, such as what state the conversation ends in or any downstream side effects.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema, including the default-true behavior of spam. The description restates the spam toggle rather than adding new 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.

Purpose4/5

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

The description names a specific verb ('Mark') and resource ('a conversation') plus the exact state being set ('as spam'), which lets an agent distinguish it from siblings like conversation_close, conversation_read, or conversation_update. It stops short of explicitly naming those siblings as alternatives.

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

Usage Guidelines4/5

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

It clearly covers the two modes of use – mark as spam, or undo by passing spam=false – giving the agent a usable decision rule. No competing sibling is named or excluded, so it falls short of a full when/when-not treatment.

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

conversation_statsConversation StatsB
Read-onlyIdempotent

Daily counts of opened and closed conversations of an organization for a date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD).
startDateNoStart date (YYYY-MM-DD).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds the aggregation granularity (daily, opened vs closed) but says nothing about defaults when the date range is omitted, timezone handling, or the shape/limits of the returned series.

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

Conciseness5/5

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

A single, front-loaded sentence that identifies the metric, the entity, and the temporal scope with zero filler. Nothing is redundant or padded.

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

Completeness3/5

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

With no output schema, the description should clarify the returned structure and date-range defaults, but it only hints at 'daily counts.' It is adequate for a simple read tool but leaves the agent guessing about default ranges and response format.

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

Parameters3/5

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

Schema description coverage is 100%, so organizationId (with a pointer to organization_list) and the two YYYY-MM-DD date fields are fully documented in the schema. The description's 'organization for a date range' only restates what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific resource and metric ('daily counts of opened and closed conversations of an organization') with a clear scope ('for a date range'). It is distinguishable from conversation_list/thread, but it does not differentiate itself from close siblings like conversation_totals, conversation_metrics, or conversation_stats_by_member.

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

Usage Guidelines2/5

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

No guidance on when to choose this over the many overlapping conversation-analytics siblings (conversation_totals, conversation_metrics, conversation_stats_by_member). Usage must be inferred purely from the noun phrase 'daily counts'.

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

conversation_stats_by_memberConversation Stats By MemberB
Read-onlyIdempotent

Conversation statistics per organization member for a date range: who handled how many conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD).
startDateNoStart date (YYYY-MM-DD).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe-read profile is fully covered. The description contributes the aggregation semantics (per-member grouping over a date range), but says nothing about return format or pagination, leaving a gap that the annotations do not fill.

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

Conciseness4/5

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

A single well-structured sentence that front-loads the resource and its grouping dimension. No filler, though the brevity leaves little room for the usage and behavioral context that would round it out.

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

Completeness4/5

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

For a read-only statistics tool with three fully documented parameters and complete annotations, the description conveys enough to invoke it correctly. No output schema exists, so return values need not be explained, though the specific metric definition could be sharper.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema (including 'use organization_list to find it' for organizationId). The description's 'date range' and 'per organization member' phrasing aligns with these but adds no format or syntax detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource: conversation statistics per organization member over a date range, plus the clarifying 'who handled how many conversations'. This distinguishes it from ungrouped siblings like conversation_stats and conversation_totals, but it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given. With siblings such as conversation_stats, conversation_metrics, and conversation_totals present, the description never states which one an agent should pick for a per-member breakdown versus a global aggregate.

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

conversation_threadConversation ThreadA
Read-onlyIdempotent

Get a conversation together with all of its messages in one call. Prefer this over conversation_get + conversation_messages when the full history is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
markReadNoAlso mark the conversation as read (default false).
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful notion of a single consolidated call, but does not mention the markRead flag's side effect of mutating read state nor any return shape. Given annotations carry the safety burden, 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.

Conciseness5/5

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

Two short sentences, front-loaded with the capability and followed by the routing rule. Every sentence earns its place with no redundancy.

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

Completeness4/5

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

Complete for a read-only retrieval tool whose annotations already convey safety and idempotency, and no output schema exists to require a return-value description. The only minor gap is the unmentioned markRead side effect, but otherwise nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so organizationId, conversationId, and markRead are all documented in the schema itself. The description adds no parameter-level meaning beyond implying a full-history fetch, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (Get) and resource (a conversation together with all of its messages), and explicitly contrasts with the sibling combination conversation_get + conversation_messages. An agent can distinguish this from its siblings without opening a schema.

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

Usage Guidelines5/5

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

Names the two alternatives (conversation_get + conversation_messages) and the exact condition that selects this tool ('when the full history is needed'). Clear when-to-use guidance with explicit alternative routing.

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

conversation_totalsConversation TotalsC
Read-onlyIdempotent

Current conversation totals of an organization (e.g. open and unread counts).

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds only the word 'current', implying live/fresh data, but says nothing about aggregation window, rate limits, or what happens for an org with no conversations.

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

Conciseness4/5

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

A single efficiently front-loaded sentence that wastes no words, and the parenthetical example is the most informative part. It is slightly too terse to be exemplary, but nothing is padded.

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

Completeness3/5

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

With no output schema, the description bears some responsibility for signalling return values, and it does so only partially via the 'e.g. open and unread counts' example rather than enumerating the actual fields returned. Combined with no differentiation from overlapping sibling statistics tools, it is adequate but incomplete.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, and the schema already explains both the meaning and how to obtain the ID via organization_list. The description adds no further parameter context, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific resource (conversation totals) and a clear scope (of an organization), with a concrete example of what the totals contain (open and unread counts). It does not, however, distinguish itself from near-identical siblings like conversation_stats, conversation_metrics, or inbox_statistics, which is the remaining gap.

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

Usage Guidelines2/5

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

The description gives no indication of when to call this tool versus conversation_stats, conversation_stats_by_member, or conversation_metrics. Only the schema's parameter note ('Use organization_list to find it') provides any routing guidance, and only for obtaining the ID, not for tool selection.

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

conversation_updateConversation UpdateB

Update a customer conversation: assign it to a member, change priority, status, classification, subject, language, contact or spam flag. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
spamNoSpam flag.
statusNoNew status: 0 = unread, 1 = read, 2 = closed.
subjectNoNew subject.
languageNoCustomer language (two-letter code) when the detected one is wrong.
priorityNoNew priority (higher = more urgent).
contactIdNoMove the conversation to another contact (see contact_list).
conversationIdYesThe conversation id.
organizationIdYesThe organization id. Use organization_list to find it.
assignedMemberIdNoOrganization member id to assign the conversation to (see member_list).
classificationIdNoNew classification id (see classification_list).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds partial-update behavior ('only provide fields to change'), but says nothing about permissions, whether reassignment triggers notifications, or side effects of changing a conversation's contact.

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

Conciseness4/5

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

Two tight sentences with the resource and mutability front-loaded, and no wasted language. The field list is long but each item maps to a real parameter, so it earns its place.

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

Completeness3/5

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

For a 10-parameter mutation tool with no output schema, the description is adequate on what can change but silent on side effects, permission requirements, and how it relates to the overlapping specialized siblings. Annotations cover the safety profile, but the overlap with conversation_close/read/spam leaves genuine ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description names the updatable fields but adds no syntax, format, or constraint detail beyond what the schema already provides (e.g., status codes, two-letter language code).

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

Purpose4/5

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

Clear verb+resource ('Update a customer conversation') with an explicit enumeration of the mutable fields, so an agent knows exactly what this tool mutates. It does not, however, distinguish itself from siblings that achieve overlapping outcomes (conversation_close, conversation_read, conversation_spam), which handle status/spam changes as dedicated tools.

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

Usage Guidelines2/5

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

'Only provide fields to change' conveys partial-update semantics, which is useful, but there is no guidance on when to use this tool versus the specialized siblings conversation_close, conversation_read, or conversation_spam. No prerequisites or exclusions are stated.

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

filter_createFilter CreateB

Save a conversation filter (a named view in the inbox). All criteria are optional and combine.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the filter.
colorNoColor index shown in the app.
searchNoSearch text. Words are AND-ed and prefix matched. Use "quoted phrases", -word to exclude, and the operators from:<sender name or email>, subject:<text>, is:<open|closed|unread|read|assigned|unassigned|ai>, has:<attachment|draft>, before:<YYYY-MM-DD>, after:<YYYY-MM-DD>.
statusNoStatus; "open" is unread + read.
inboxIdsNoInbox ids.
priorityNoExact priority.
contactIdNoContact id.
memberIdsNoAssigned member ids.
createdAfterNoCreated at or after. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedAfterNoUpdated at or after. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
createdBeforeNoCreated at or before. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedBeforeNoUpdated at or before. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdsNoClassification ids.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already disclose non-read-only, non-idempotent, non-destructive behavior, so the safety profile is covered. The description adds the useful fact that filter criteria are optional and AND-combined, but says nothing about duplicate-name handling, permissions, or what is returned on success.

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

Conciseness5/5

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

Two short sentences with the core purpose front-loaded and the parenthetical clarification placed immediately after. No filler, nothing redundant.

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

Completeness3/5

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

For a 14-parameter mutation with no output schema, the description is thin: it omits duplicate-name semantics, error conditions, and confirmation/return behavior. The thorough input schema compensates for parameter documentation, so the definition is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself documents rich search syntax and date formats, so the baseline is 3. The description only adds the optionality/AND-combination rule, which is marginal value on top of the schema.

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

Purpose4/5

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

States a specific verb and resource ('Save a conversation filter') and clarifies with the appositive 'a named view in the inbox,' which tells an agent what a filter actually is. It distinguishes itself adequately from filter_get/filter_list, though it never explicitly contrasts with the sibling filter_update, which is the nearest ambiguity.

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

Usage Guidelines2/5

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

The only guidance offered is about parameter behavior ('All criteria are optional and combine'), not about when to choose this tool. There is no statement of when to use filter_create vs. filter_update (e.g., whether it fails or overwrites when a filter with the same name exists), so the agent must infer routing.

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

filter_deleteFilter DeleteB
Destructive

Delete a saved conversation filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterIdYesThe filter id (see filter_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the agent knows this is a destructive, non-idempotent write. The description adds no behavioral context beyond restating the action—it doesn't explain permanence, required permissions, or side effects.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It states the action and resource immediately, which is optimal for a simple delete tool.

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

Completeness4/5

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

For a simple delete operation with complete annotations, a full schema, and no output schema, the description is largely sufficient. It could mention irreversibility or required permissions, but the destructive annotation and schema already cover the critical call details.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (filterId and organizationId) fully documented and cross-referenced to helper tools. The description adds no parameter detail, which is acceptable given the schema covers everything, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Delete') and resource ('a saved conversation filter'), making the tool's action clear. It does not explicitly differentiate itself from sibling tools like filter_list or filter_update, but the verb and resource combination is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of related tools. The schema gives hints (e.g., 'see filter_list') but the description itself provides no usage context.

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

filter_getFilter GetB
Read-onlyIdempotent

Get one saved conversation filter by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterIdYesThe filter id (see filter_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the filter is 'saved,' which is minor context, and says nothing about error behavior for missing ids or the response shape.

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

Conciseness5/5

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

A single front-loaded sentence with zero wasted words; the resource and lookup key are stated immediately.

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

Completeness4/5

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

For a simple read-only getter whose annotations and schema (100% coverage) cover the essentials, the description is nearly complete. Only minor gaps remain around failure behavior, and no output schema exists that would need explaining.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented with helpful cross-references (filter_list, organization_list). The description's 'by id' adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('saved conversation filter') with scope ('one ... by id'), which distinguishes it from filter_list and filter_create. It does not name the sibling tools explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as filter_list for finding an id. The 'by id' phrasing only weakly implies the tool is for retrieving a known filter.

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

filter_listFilter ListA
Read-onlyIdempotent

List the saved conversation filters of the authenticated user in an organization, with their criteria and conversation counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description contributes only that results are scoped to the authenticated user and include criteria plus conversation counts; it says nothing about pagination, ordering, or empty-result behavior. With annotations carrying the behavioral load, this modest addition warrants a 3.

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

Conciseness4/5

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

A single front-loaded sentence that opens with the verb and resource, then qualifies scope and return content. No filler or redundancy, though the trailing clause is the only part adding information beyond the schema.

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

Completeness4/5

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

For a read-only, single-parameter list tool with full schema coverage and annotations covering safety, the definition is nearly sufficient. Since there is no output schema, the mention of criteria and conversation counts usefully signals the return shape. Missing only pagination/ordering details, a minor gap.

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

Parameters3/5

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

There is a single required parameter and schema description coverage is 100%; the schema already explains organizationId and even points the agent to organization_list. The description only echoes the organization scoping, adding no syntax, format, or default beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific verb ("List"), a precise resource ("saved conversation filters"), and a scope ("of the authenticated user in an organization"), which cleanly separates it from filter_get/filter_create/filter_update. It also hints at return content (criteria and conversation counts), so an agent can distinguish it from the singular filter_get without opening either schema. It does not explicitly name a sibling, which keeps it just short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the verb and scope: use this when you need to enumerate a user's saved conversation filters within an organization. There is no explicit when-to-use statement, no exclusion such as "use filter_get for a single filter by id," and no stated prerequisite beyond the org id. Adequate but leaves routing to inference.

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

filter_updateFilter UpdateA

Update a saved conversation filter. Only provide fields to change; criteria not given keep their value.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name.
colorNoColor index shown in the app.
searchNoSearch text. Words are AND-ed and prefix matched. Use "quoted phrases", -word to exclude, and the operators from:<sender name or email>, subject:<text>, is:<open|closed|unread|read|assigned|unassigned|ai>, has:<attachment|draft>, before:<YYYY-MM-DD>, after:<YYYY-MM-DD>.
statusNoStatus; "open" is unread + read.
filterIdYesThe filter id (see filter_list).
inboxIdsNoInbox ids.
priorityNoExact priority.
contactIdNoContact id.
memberIdsNoAssigned member ids.
createdAfterNoCreated at or after. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedAfterNoUpdated at or after. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
createdBeforeNoCreated at or before. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
updatedBeforeNoUpdated at or before. ISO 8601 date or date-time, e.g. 2026-09-01 or 2026-09-01T12:00:00Z.
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdsNoClassification ids.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations cover the safety profile (not read-only, not idempotent, not destructive). The description adds genuinely useful behavior beyond them: merge/PATCH semantics where omitted criteria are preserved. However, it says nothing about permission requirements, behavior on an unknown filterId, or what a successful response contains, so the added context 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.

Conciseness5/5

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

Two sentences, no filler, and the core action is front-loaded before the update-semantics caveat. Every sentence earns its place.

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

Completeness3/5

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

For a 15-parameter mutation with no output schema and no annotations beyond safety hints, the description covers the essential calling convention but omits failure modes, permission prerequisites, and confirmation of what changes. Adequate, not complete.

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

Parameters3/5

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

Schema description coverage is 100% across all 15 parameters, so the schema already carries the field-level detail (search operators, date formats, ids). The description's only parameter-relevant contribution is the partial-update rule, which is the baseline expectation when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ("Update a saved conversation filter"), which cleanly separates it from filter_get, filter_create, and filter_delete siblings. It does not explicitly name those siblings, but the operation is unambiguous.

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

Usage Guidelines3/5

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

The second sentence implies the intended usage pattern (partial update), but there is no explicit when-to-use, when-not-to-use, or routing to an alternative. Usage is inferable rather than stated.

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

inbox_getInbox GetB
Read-onlyIdempotent

Get one inbox by id: type, name, connected account or mail server, signature, health and activation state.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxIdYesThe inbox id (see inbox_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds value by enumerating the returned fields in the absence of an output schema, but says nothing about behavior on a missing/invalid id.

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

Conciseness4/5

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

A single dense sentence with the resource and id constraint front-loaded and zero filler. The trailing field list is informative rather than wasteful, though it is the only thing keeping this from being maximally tight.

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

Completeness4/5

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

For a simple two-parameter read tool with full annotation coverage, the description is nearly sufficient: it names the return fields, which matters since no output schema exists. Only the absence of any error/not-found behavior or sibling routing keeps it short of complete.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are required and self-documented, so the baseline is 3. The description adds no syntax, format, or lookup detail beyond what the schema already provides.

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

Purpose4/5

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

States a specific verb and resource ('Get one inbox by id') and enumerates the fields surfaced (type, name, connected account, signature, health, activation state). It clearly reads as a singular-fetch counterpart to inbox_list, though it never names that sibling explicitly.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no routing to alternatives like inbox_list or inbox_statistics. The only hint ('see inbox_list') lives in the schema, not the description, so an agent gets no selection help here.

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

inbox_listInbox ListA
Read-onlyIdempotent

List the support inboxes of an organization: email, WhatsApp, Messenger, Instagram, LinkedIn, Google Play, App Store and website chat, with their type, name and health.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the channel coverage and the fields returned, but says nothing about pagination, result limits, or permission requirements for the organization.

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

Conciseness4/5

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

A single front-loaded sentence with no preamble. The channel enumeration is somewhat long but it is the substantive scope information, so it earns its space.

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

Completeness4/5

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

For a one-parameter, read-only list tool with no output schema, the description covers resource, scope and returned fields. Only the absence of pagination/limits handling keeps it short of complete.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself already tells the agent to use organization_list to find the id. The description adds no meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('List the support inboxes of an organization') and enumerates the channel scope plus returned attributes (type, name, health), so an agent can distinguish it from inbox_get and inbox_statistics without opening any schema.

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

Usage Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance and never names an alternative such as inbox_get for a single inbox or inbox_statistics for metrics. Usage is only implied by the word 'List'.

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

inbox_refreshInbox RefreshA

Fetch new messages from an inbox now instead of waiting for the next scheduled retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxIdYesThe inbox id (see inbox_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false and destructiveHint=false. The description adds useful context about the on-demand fetch/ingestion trigger, but does not explain side effects, whether the call blocks until retrieval completes, or why it is non-idempotent (e.g., repeated calls triggering duplicate retrieval). A mild tension exists between the read-sounding verb 'fetch' and the non-read-only annotation, but the trigger semantics justify it rather than contradict it.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the action and its trigger contrast are both stated in minimal space.

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

Completeness3/5

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

For a two-parameter, non-read-only trigger operation with annotations but no output schema, the definition covers what the tool does but omits return behavior (e.g., whether fetched messages or a count is returned) and any completion/blocking semantics that would matter for a non-idempotent refresh.

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

Parameters3/5

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

Schema description coverage is 100%: inboxId and organizationId are both documented with names, lookups (inbox_list, organization_list), and required constraints. The description adds no parameter-level detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Fetch new messages from an inbox') plus the immediately distinguishing trigger ('now instead of waiting for the next scheduled retrieval'). It is distinguishable from inbox_list/inbox_get by the on-demand trigger framing, though it does not name any sibling explicitly.

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

Usage Guidelines3/5

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

The phrase 'instead of waiting for the next scheduled retrieval' gives a clear context for using it rather than relying on the default schedule. However, it stops short of naming alternatives (e.g., inbox_list to read without triggering) or stating when not to call it, leaving usage 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.

inbox_statisticsInbox StatisticsB
Read-onlyIdempotent

Statistics per inbox of an organization (conversation volumes).

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the observation that the statistics are conversation volumes, and says nothing about time window, granularity, or whether results are paginated.

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

Conciseness4/5

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

One short sentence with the resource front-loaded and no wasted words. It is efficient for a single-parameter read tool, though the parenthetical placement makes the scope slightly awkward.

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

Completeness3/5

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

With full annotation coverage, a 100%-covered required parameter, and no output schema, an agent can call this correctly. However, the description never indicates what the statistics measure over (time range, breakdown dimensions), leaving the expected result shape entirely unstated in a suite full of overlapping analytics tools.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is documented in the schema itself, including a pointer to organization_list. The phrase 'of an organization' restates what the schema already conveys, so nothing materially new is added.

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

Purpose4/5

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

States a specific resource (statistics per inbox) and scopes it to an organization, with a clarifying parenthetical that the statistics concern conversation volumes. That is much more informative than a tautology, though it never distinguishes itself from sibling analytics tools like conversation_stats, conversation_totals, or conversation_metrics.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. In a suite containing conversation_stats, conversation_stats_by_member, conversation_metrics, and conversation_totals, the agent is given no cue for when per-inbox aggregation is the right pick over those alternatives.

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

inbox_testInbox TestA
Read-onlyIdempotent

Test the connection of an inbox to its platform (mail server, Meta, Google, Apple, ...) and report the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
inboxIdYesThe inbox id (see inbox_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description usefully adds that this reaches an external platform (openWorld) and reports a result, but says nothing about failure/timeout behavior or what the reported result contains.

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

Conciseness5/5

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

A single front-loaded sentence with the action and scope stated immediately. No filler.

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

Completeness3/5

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

For a two-parameter diagnostic tool with no output schema, the description covers what it does but not what a pass/fail result looks like or common failure causes, which is the main thing an agent would want when interpreting the response.

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

Parameters3/5

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

Schema description coverage is 100%, with inboxId pointing to inbox_list and organizationId pointing to organization_list, so the schema fully documents both parameters. The description adds no parameter meaning beyond that; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('test') and resource (an inbox's connection to its platform), plus the platform types involved. It is clearly distinguishable from siblings like inbox_get or inbox_refresh, though it never names them explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the verb — you call this to verify connectivity — but there is no explicit when-to-use guidance or comparison to adjacent tools such as inbox_refresh or webhook_test.

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

knowledge_createKnowledge CreateB

Add a knowledge entry the AI can use for replies: a question or topic and its answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe question, topic or title.
positiveNofalse marks the entry as a negative example (default true).
completionYesThe answer or article text.
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdNoClassification this entry belongs to (see classification_list).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, so the agent knows this is a non-idempotent mutation. The description adds the purpose context (entries feed AI replies) but says nothing about permissions, duplicate handling, or how created entries affect the knowledge base, so extra behavioral value is modest.

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

Conciseness4/5

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

A single front-loaded sentence with no filler: verb, resource, and the prompt/answer mapping are all packed in efficiently. Only slight loss for borrowing a colon-list to convey parameter meaning rather than stating the effect more directly.

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

Completeness3/5

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

For a 5-parameter create tool with no output schema and no nested objects, the description covers the core purpose but omits the notable 'positive: false marks a negative example' behavior, which is the one non-obvious aspect an agent should know before calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so prompt/completion/organizationId/classificationId are already documented, which sets the baseline at 3. The phrase 'a question or topic and its answer' loosely glosses prompt/completion but adds no syntax or format detail beyond the schema, and the 'positive' negative-example flag goes entirely unmentioned.

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

Purpose4/5

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

The description states a specific verb ('Add') and resource ('knowledge entry') and clarifies its effect ('the AI can use for replies'), then maps the entry to 'a question or topic and its answer'. This is clear enough to distinguish from knowledge_update/delete/search, but it never names a sibling explicitly to reinforce the boundary.

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

Usage Guidelines2/5

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

It says what the tool is for but gives no when-to-use conditions, no prerequisites, and no comparison to alternatives like knowledge_update or the knowledge_source_* tools. The only routing help (organization_list for the id) lives in the schema, not the description.

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

knowledge_deleteKnowledge DeleteB
Destructive

Delete a knowledge entry permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
knowledgeIdYesThe knowledge entry id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered structurally. The description adds the word 'permanently', which reinforces that this is an irreversible destructive action rather than a soft delete, but it discloses nothing beyond that about side effects or authorization requirements.

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

Conciseness4/5

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

A single short sentence, front-loaded with the verb and carrying the important 'permanently' qualifier. It is efficient, though it is terse to the point of omitting any additional context that could have been included cheaply.

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

Completeness3/5

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

With no output schema and complete parameter documentation, the main remaining obligation is behavioral: whether deletion cascades to related knowledge sources, whether the operation can be undone, and whether elevated permissions are required. The description covers only permanence, leaving these gaps for a destructive mutation tool.

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

Parameters3/5

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

Schema description coverage is 100% for both required parameters, and the schema already explains that organizationId can be found via organization_list. The description adds no additional meaning about parameter format, sourcing of the knowledgeId, or validation constraints, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (delete) and resource (knowledge entry) with the crucial qualifier 'permanently', so an agent can distinguish it from knowledge_get, knowledge_update, and knowledge_search. However, it does not name or contrast any sibling tool explicitly, leaving that inference to the agent.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g., that the entry id must come from knowledge_search or knowledge_get), and no note that the operation cannot be undone. The agent receives only the bare action.

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

knowledge_getKnowledge GetC
Read-onlyIdempotent

Get one knowledge entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
knowledgeIdYesThe knowledge entry id.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds nothing beyond that – no note on behavior for a missing/unknown id, permissions, or response shape – so it contributes no extra behavioral context.

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

Conciseness4/5

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

A single front-loaded sentence with no filler and no redundancy. It is efficient, though arguably so terse that it forgoes cheap opportunities to clarify usage.

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

Completeness3/5

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

For a simple two-parameter read whose annotations carry the safety profile and whose schema documents every field, the description is minimally sufficient. There is no output schema, so the agent learns nothing about what a successful fetch returns, which leaves a gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself explains both knowledgeId and organizationId (including pointing to organization_list). The description's 'by id' adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('knowledge entry') scoped by id, so an agent knows exactly what the tool returns. It does not, however, distinguish itself from siblings like knowledge_search or knowledge_source_get, leaving the reader to infer the boundary.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never mentions alternatives such as knowledge_search (for lookup by content) versus this id-based fetch. The only implicit signal is that it requires an id.

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

knowledge_source_getKnowledge Source GetC
Read-onlyIdempotent

Get one knowledge source by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesThe knowledge source id (see knowledge_source_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that: it does not state behavior for a missing sourceId, error semantics, or any scope behavior (e.g., that the organization context matters).

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

Conciseness4/5

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

A single short sentence with zero filler and the key noun up front. It is efficient, though terse enough that it carries no supporting structure.

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

Completeness3/5

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

For a simple read-by-id tool with full annotations and complete schema coverage, this is minimally adequate. It never acknowledges the required organizationId scoping or what happens on a not-found id, and there is no output schema to compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so both sourceId and organizationId are already documented, including cross-references to knowledge_source_list and organization_list. The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('knowledge source'), and the word 'one' signals single-item retrieval versus a list. It does not explicitly distinguish itself from siblings like knowledge_source_list, knowledge_source_sync, or knowledge_source_status, so sibling routing is left to inference.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. The only routing hint (the pointer to knowledge_source_list) lives in the schema, not the description.

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

knowledge_source_listKnowledge Source ListA
Read-onlyIdempotent

List the knowledge sources of an organization (websites, GitHub, Notion, GitBook, ...) with their sync state, last sync time, last error and number of synced entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value by disclosing the response contents (sync state, last sync time, last error, synced entry count), which is meaningful since no output schema exists.

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

Conciseness5/5

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

A single well-formed sentence that front-loads the action and resource, then lists the returned data. Zero filler.

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

Completeness4/5

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

For a simple read-only list tool with no output schema, the description conveys enough about what comes back. It could still note pagination or whether all sources are always returned, but that is a minor gap.

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

Parameters3/5

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

With a single parameter at 100% schema coverage, the schema fully documents organizationId and even points to organization_list. The description adds no syntax or format detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

Specific verb (List) plus resource (knowledge sources of an organization), and it enumerates source types and the fields returned. It naturally distinguishes itself from the singular knowledge_source_get, though it doesn't name that sibling explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the org-scoped listing, but there is no explicit guidance on when to use this versus knowledge_source_get or knowledge_source_status, nor any prerequisite or exclusion statements. Adequate but leaves routing to inference.

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

knowledge_source_statusKnowledge Source StatusB
Read-onlyIdempotent

Sync status of a knowledge source: state (PENDING, SYNCING, SUCCESS, ERROR), last sync time, last error, entry count.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesThe knowledge source id (see knowledge_source_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish this as a safe, idempotent, read-only call, so the safety burden is covered. The description adds useful behavioral context by disclosing that the state enum includes an ERROR state and that a last error field is returned, but it does not say whether this polls or reflects a live sync state. Adequate, with room for more.

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

Conciseness5/5

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

One compact sentence that front-loads the subject and the state values. Every element earns its place, with no filler.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so by naming four of the key result fields. It stops short of describing pagination, freshness, or the exact response shape, but for a simple status lookup this is close to complete.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are documented in the schema with pointers to knowledge_source_list and organization_list. The description adds no parameter-level detail, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific resource (knowledge source) and the informational scope (sync status), and enumerates the concrete fields returned (state, last sync time, last error, entry count). It does not, however, distinguish itself from close siblings like knowledge_source_get or knowledge_source_sync, which an agent may confuse with a status lookup.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to call this versus knowledge_source_get (full details) or knowledge_source_sync (trigger a sync). The usage context is left entirely to inference from the description's phrasing.

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

knowledge_source_syncKnowledge Source SyncA

Start a sync of a knowledge source now. Runs in the background; check knowledge_source_status for the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesThe knowledge source id (see knowledge_source_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.2/5.0
Behavior4/5

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

The annotations establish a non-read-only, non-idempotent, non-destructive operation, and the description adds genuinely new context: the work is asynchronous and results must be retrieved separately. It stops short of noting that concurrent invocation may spawn overlapping syncs or what permissions are needed, which would matter given idempotentHint=false.

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

Conciseness5/5

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

Two short sentences with zero filler. The action is front-loaded and the follow-up instruction is second, in the order an agent needs them.

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

Completeness4/5

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

With no output schema and an async operation, the description correctly covers the critical gap by explaining that execution is background and results come from knowledge_source_status. Missing details such as whether a sync already in progress is rejected or whether permission scopes are required keep it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100%; both organizationId and sourceId are documented in the schema, including cross-references to organization_list and knowledge_source_list. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('start a sync') and resource ('a knowledge source') and is clearly distinct from sibling tools like knowledge_source_status, knowledge_source_get, and knowledge_source_list. An agent can tell immediately that this triggers an asynchronous job rather than reading state.

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

Usage Guidelines4/5

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

Tells the agent what to do after invoking it ('check knowledge_source_status for the result'), which gives clear follow-up context. It does not, however, say when not to call it — e.g., that repeated calls are not idempotent and may start duplicate syncs — so the routing guidance is good but incomplete.

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

knowledge_updateKnowledge UpdateA

Update a knowledge entry. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptNoNew question, topic or title.
positiveNofalse marks the entry as a negative example.
completionNoNew answer or article text.
knowledgeIdYesThe knowledge entry id.
organizationIdYesThe organization id. Use organization_list to find it.
classificationIdNoNew classification id.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds the partial-update contract, which is useful behavioral context — it tells the agent unspecified fields are left alone. It omits auth/permission requirements and whether changes are reversible.

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

Conciseness5/5

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

Two sentences, zero filler, with the partial-update constraint front-loaded immediately after the action. Every word earns its place.

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

Completeness3/5

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

For a mutation tool with full schema coverage, complete annotations, and no output schema, the description covers the essentials (what it does, how to call it) but says nothing about permissions, side effects on unspecified fields, or response shape.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter (prompt, positive, completion, knowledgeId, organizationId, classificationId) is documented in the schema itself, including a pointer to organization_list. The description adds no parameter-level detail beyond the schema baseline.

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

Purpose4/5

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

States a specific verb+resource ('Update a knowledge entry'), which cleanly separates it from knowledge_create, knowledge_delete, and knowledge_get. It does not, however, explicitly name those siblings or contrast its scope with them, so it falls short of a 5.

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

Usage Guidelines3/5

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

'Only provide fields to change' implies partial-update semantics, which is genuine usage guidance for how to call it. But there is no statement of when to choose this over knowledge_create or classification_update, and no prerequisites or exclusions.

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

member_createMember CreateA

Add a member to an organization by email address. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the person to add.
permissionYesPermission level: 1 = member (sees assigned conversations), 2 = manager, 3 = admin (settings, API keys), 4 = owner.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare a non-read-only, non-idempotent, non-destructive write, so the safety profile is covered. The description adds genuinely new context — the admin permission requirement — which is not in the annotations or schema. It stops short of disclosing duplicate-email behavior or whether an invitation is dispatched.

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

Conciseness5/5

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

Two short sentences, purpose first, prerequisite second, with zero filler. Nothing could be removed without losing information.

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

Completeness3/5

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

There is no output schema, so the description would ideally hint at what a successful creation returns, and duplicate-email/idempotency behavior is unaddressed. Given the annotations cover safety and the schema covers all inputs, it is adequate but leaves the outcome side thin.

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

Parameters3/5

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

Schema description coverage is 100% across all three parameters, including the permission enum-style mapping and the organizationId hint pointing to organization_list. The description repeats only the email concept, adding nothing the schema lacks, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Add a member to an organization') plus the key identifying parameter ('by email address'). The verb 'Add' naturally distinguishes it from the sibling member_update/member_delete/member_get, though it never names them explicitly.

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

Usage Guidelines3/5

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

It supplies a real prerequisite ('Requires organization admin permission'), which an agent needs before calling. However, it gives no guidance on when to use this versus member_update (e.g., existing member vs new member), so usage is only implied.

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

member_deleteMember DeleteA
Destructive

Remove a member from an organization. Their assigned conversations stay in the organization. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdYesThe organization member id to remove.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, so the write/destructive nature is already covered. The description adds genuinely new behavioral context beyond the annotations: the side effect that assigned conversations persist in the organization, and the admin permission requirement.

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

Conciseness5/5

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

Three short, front-loaded sentences, each carrying distinct information (purpose, side effect, prerequisite) with no waste or repetition.

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

Completeness4/5

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

For a simple two-parameter destructive tool with full schema coverage and no output schema, the description covers purpose, authorization, and the key side effect. It is largely complete, though it could note irreversibility or confirmation behavior.

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

Parameters3/5

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

Schema description coverage is 100%, with memberId and organizationId both documented (including a pointer to organization_list). The description adds no parameter-level detail, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb ('Remove') and resource ('a member from an organization'), which clearly contrasts with siblings like member_create, member_update, and member_get. An agent can distinguish it without opening the schema, though it doesn't 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.

Usage Guidelines3/5

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

Provides a useful prerequisite ('Requires organization admin permission') but gives no explicit when-to-use versus when-not guidance or mention of alternatives. Usage is implied from the verb and the permission note rather than stated.

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

member_getMember GetB
Read-onlyIdempotent

Get one organization member by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdYesThe organization member id (see member_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered without the description. The description adds no extra behavioral context (no mention of lookup failures, permissions, or 404 behavior), so it neither helps nor contradicts.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler. Nothing is wasted.

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

Completeness4/5

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

For a simple two-parameter read tool with no output schema and full schema coverage, the description is nearly complete. The only omission is any hint about what is returned or what happens on a missing id.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters even reference sibling tools (member_list, organization_list) for discovery, so the schema carries the full burden. The description's 'by id' adds nothing beyond the schema.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('one organization member') scoped by id, which distinguishes it from the sibling member_list by cardinality. It does not name member_list explicitly as the alternative, but the singular scope makes the split inferable.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus member_list (or member_update/delete). The only usage hint lives in the schema descriptions, not in the tool description itself.

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

member_listMember ListB
Read-onlyIdempotent

List the members of an organization with their profile and permission level. Use member ids to assign conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds only that results include profile and permission level, which is mild added value beyond the annotations.

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

Conciseness4/5

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

Two short sentences with the core purpose front-loaded. The second sentence is a minor tangent but still brief and relevant to the data this tool returns.

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

Completeness4/5

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

For a simple single-parameter read tool with full annotations and full schema coverage, the description covers purpose and return content. No output schema exists, but the description notes what is returned, which is sufficient.

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

Parameters3/5

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

Schema description coverage is 100% and the single organizationId parameter is documented in the schema, including a pointer to organization_list. The description adds nothing about the parameter, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (members of an organization) plus the payload (profile and permission level). It is clearly separable from member_get/member_create, though it does not explicitly name those siblings.

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

Usage Guidelines2/5

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

The second sentence ("Use member ids to assign conversations") describes a downstream use case rather than when to choose this tool over member_get or other listing tools. No when-to-use or when-not-to-use guidance is given.

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

member_updateMember UpdateA

Change the permission level of an organization member. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
memberIdYesThe organization member id (see member_list).
permissionYesPermission level: 1 = member (sees assigned conversations), 2 = manager, 3 = admin (settings, API keys), 4 = owner.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, destructive=false, so the safety profile is covered. The description adds a genuinely non-derivable behavioral fact: the admin-permission prerequisite. It stops short of describing reversibility or side effects of demotion, but with annotations present this extra auth context is solid value.

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

Conciseness5/5

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

Two short sentences with zero filler, and the core action is front-loaded before the prerequisite. Nothing to trim.

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

Completeness4/5

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

For a three-parameter mutation tool with no output schema and fully documented parameters, the definition covers the action and the permission requirement. It leaves minor gaps around the resulting state of the member and whether the change is reversible, but nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema fully documents all three parameters, including the permission-level mapping (1=member … 4=owner) and the pointer to member_list/organization_list. The description adds nothing beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Change the permission level of an organization member'), which cleanly separates it from sibling mutation tools like member_create, member_delete, and member_get. It does not explicitly name those siblings, but the scope is unambiguous.

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

Usage Guidelines3/5

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

It gives a precondition ('Requires organization admin permission'), which is useful usage context, but no explicit when-to-use guidance relative to alternatives such as member_delete or member_create, nor any note on when this operation is inappropriate.

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

message_deleteMessage DeleteB
Destructive

Delete a message permanently, e.g. a draft or an internal note.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesThe message id (see conversation_messages or conversation_thread).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description reinforces this by stressing 'permanently' (irreversibility) and naming message scopes, which is useful added context but not beyond what the annotations imply.

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

Conciseness4/5

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

A single short sentence that front-loads the core action and the permanence qualifier. Efficient with no wasted words, though it is arguably too terse to be fully informative.

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

Completeness3/5

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

For a 2-param destructive tool with full schema coverage and destructive annotations, the minimum is met. Missing are permission requirements, side effects on the parent conversation, and whether the message must belong to a draft/note, which would help an agent call it confidently.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (messageId, organizationId) are documented in the schema, including cross-references to conversation_messages and organization_list. The description adds no additional parameter meaning; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (delete) and resource (message) and adds scope with 'permanently' plus examples ('a draft or an internal note'). This clearly distinguishes it from siblings like message_update, message_get, and message_send, though it doesn't name an alternative directly.

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

Usage Guidelines2/5

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

The examples hint at what kinds of messages qualify, but there is no explicit when-to-use guidance or exclusions relative to siblings such as message_update or conversation_delete. The agent gets no routing logic.

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

message_getMessage GetA
Read-onlyIdempotent

Get one message by id: sender, recipients, subject, plain text, detected language, translation, attachments and the draft / internal note flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesThe message id (see conversation_messages or conversation_thread).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety is covered. The description adds real value beyond that by disclosing the returned payload: sender, recipients, subject, plain text, detected language, translation, attachments, and draft/internal-note flags. With no output schema, this return-shape disclosure is the key behavioral contribution.

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

Conciseness5/5

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

A single front-loaded sentence; the enumerated return fields each earn their place since no output schema exists to carry that information.

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

Completeness4/5

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, describing the response contents makes this definition nearly self-sufficient for correct invocation. The remaining gap is usage guidance about when to prefer this over conversation_messages/conversation_thread.

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

Parameters3/5

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

Both parameters are fully documented in the schema (100% coverage), including how to find the organizationId and messageId. The description adds no syntax, format, or scoping detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get one message by id') and enumerates the fields returned, which makes the read-only fetch role unmistakable against siblings like message_update, message_send, and message_delete. It does not explicitly name or contrast with a sibling tool, so it stops short of the top tier.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as conversation_messages or conversation_thread for retrieving messages. The only routing hint (how to find a message id) lives in the schema, not the description.

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

message_sendMessage SendA
Destructive

Send a draft message to the customer through the conversation's inbox. Irreversible: only call it after the user approved the draft (read it with message_get first).

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesThe message id (see conversation_messages or conversation_thread).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, and the description's 'Irreversible' is consistent with them rather than contradictory. It adds genuine context beyond the annotations by imposing the human-approval gate, but it says nothing about failure modes, partial sends, or post-send state.

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

Conciseness5/5

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

Two sentences, zero filler, with the action and the irreversibility caveat front-loaded ahead of the prerequisite. Every clause earns its place.

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

Completeness4/5

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

For a two-parameter destructive mutation with no output schema and full annotation coverage, the description supplies purpose, irreversibility and the approval prerequisite. It is nearly complete, only omitting what the caller sees on success or failure.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented there (messageId points to conversation_messages/conversation_thread, organizationId points to organization_list). The description adds no parameter-level meaning, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (send) plus resource (draft message) and the delivery channel (the conversation's inbox), which clearly separates it from message_update, message_delete and conversation_reply. It stops short of explicitly naming those siblings, so it lands at 4 rather than 5.

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

Usage Guidelines4/5

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

Gives an explicit precondition chain: only call after the user approved the draft, and read it with message_get first. That is real when-to-use guidance tied to a named sibling, though it does not state when NOT to use it or cover alternative send paths.

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

message_updateMessage UpdateA

Edit a draft or an internal note before it is sent: replace its text, subject, language or translation. Only provide fields to change. Sent messages cannot be edited.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoNew plain text body.
subjectNoNew subject.
languageNoTwo-letter language code of the text.
messageIdYesThe message id (see conversation_messages or conversation_thread).
translationNoThe text as the agent wrote it, when message is a translation of it.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the read/write and idempotency profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds real context beyond them: partial-update semantics ("Only provide fields to change") and the sent-message immutability constraint. It stops short of describing permissions or success behavior.

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

Conciseness5/5

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

Two tight sentences: purpose and editable fields first, then the two constraints. Nothing is padded or redundant.

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

Completeness5/5

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

For a mutation tool whose annotations already carry the safety profile and whose schema fully documents all six parameters, the description covers the essential behavior (partial update, sent-message immutability). Nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema. The description corroborates the field list and adds the partial-update instruction, but introduces no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Edit) and resource (draft or internal note) and enumerates the mutable fields (text, subject, language, translation). It does not name sibling tools like message_send or message_delete, so it is clear but lacks explicit sibling differentiation.

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

Usage Guidelines4/5

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

Good context: "before it is sent" sets the lifecycle window, and "Sent messages cannot be edited" is an explicit when-not condition. It does not, however, point to an alternative (e.g. resend/new message) for already-sent messages.

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

organization_getOrganization GetB
Read-onlyIdempotent

Get an organization: name, default language, description, plan, auto-close setting and the custom AI prompts (persona, reply instructions, classification instructions).

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds no behavioral context beyond annotations, such as permissions, error behavior, or side effects, but it does list returned fields, which is some useful context. No contradiction exists.

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

Conciseness5/5

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

The entire definition is a single, front-loaded sentence that begins with the core operation and then lists returned fields. There is no filler or redundant repetition, making it appropriately sized for a simple get tool.

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

Completeness4/5

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

For a simple read-only tool with one required parameter and full annotation coverage, the description is largely complete because it enumerates the returned fields, partially compensating for the absence of an output schema. It could still state that it returns a single organization object by ID, but nothing critical for invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter organizationId is fully documented in the schema, including a pointer to organization_list. The description adds no additional meaning or syntax for the parameter, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a clear verb ('Get') and resource ('an organization'), and enumerates the specific fields returned, including AI prompts. It implicitly differentiates from organization_list through the singular article and the required organizationId parameter, but it does not explicitly name or contrast with any sibling tool.

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

Usage Guidelines2/5

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

The description states what the tool returns but offers no explicit when-to-use guidance, prerequisites, or alternatives. The schema parameter mentions organization_list for finding the ID, but that guidance is not in the description itself, so the description provides no usage context beyond the bare operation.

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

organization_listOrganization ListA
Read-onlyIdempotent

List the organizations the authenticated account can access, including ids, names and plans. Use the organizationId in all other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds only the returned field set; it says nothing about ordering, pagination, or how many organizations can be returned.

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

Conciseness5/5

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

Two short sentences, zero filler, with the primary purpose front-loaded and the workflow tip second.

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

Completeness4/5

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

With no output schema, the description usefully names the fields returned and explains how the resulting organizationId is consumed elsewhere. It could add a note about result size or ordering, but for a simple parameterless list it is essentially complete.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies and there is no parameter information the description needs to compensate for.

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

Purpose4/5

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

States a specific verb and resource ('List the organizations') and scopes it precisely to those the authenticated account can access, plus names the returned fields (ids, names, plans). It doesn't explicitly distinguish itself from the sibling organization_get, which is the only thing keeping it from a 5.

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

Usage Guidelines4/5

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

'Use the organizationId in all other tools' gives real downstream context for when this tool is needed as a prerequisite step. However, it never states when to use this versus organization_get or organization_usage, and offers no exclusions.

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

organization_updateOrganization UpdateA

Update the settings of an organization. Only provide fields to change. Requires organization admin permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name of the organization.
languageNoDefault language of the team (two-letter code, e.g. "en"). Incoming messages in other languages are translated into it.
aiPromptEgoNoCustom AI persona prompt (role, tone, capabilities) that replaces the built-in one for AI replies. Empty restores the default.
descriptionNoDescription of the organization.
aiPromptConfigNoCustom response rules for AI replies (formatting, what to avoid). Empty restores the default.
organizationIdYesThe organization id. Use organization_list to find it.
aiPromptClassificationNoCustom instructions for classifying incoming messages. Empty restores the default.
autoCloseInactivityDaysNoClose conversations automatically after this many days without activity; 0 disables it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds genuine context beyond them: the partial-update contract ("only provide fields to change") and the required admin authorization, both of which affect how the agent invokes it.

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

Conciseness5/5

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

Three short, front-loaded sentences with zero filler. The primary action leads, followed by the update contract and the permission requirement.

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

Completeness4/5

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

For an 8-parameter mutation tool with full schema coverage and a safety-profile annotation set, the description supplies the key behavioral facts (partial update, admin auth) an agent needs. No output schema exists but the tool is a simple mutation, so return-value detail is not critical.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (including the reserved per-field semantics like empty-string restore-default) is already documented in the schema. The description only reinforces the partial-update contract, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ("Update the settings of an organization"), which an agent can distinguish from organization_get, organization_list, and organization_usage. It does not, however, explicitly name or route against any sibling update tool, so it stops short of a 5.

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

Usage Guidelines3/5

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

It gives two useful conditions: provide only the fields to change (partial-update semantics) and an admin permission prerequisite. But it offers no explicit when-to-use/when-not guidance and never points to an alternative (e.g. organization_get to inspect current settings first), leaving usage only implied.

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

organization_usageOrganization UsageB
Read-onlyIdempotent

Plan and usage of an organization: plan name, trial / active / cancelled state, inbox and member counts against the plan limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and non-destructive behavior, so safety is covered. The description adds value by summarising the returned content (plan state and counts against limits), but says nothing about freshness, caching, or required permissions.

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

Conciseness4/5

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

One compact sentence with no filler, and the object of the call (plan/usage) is front-loaded. It is a noun-phrase fragment rather than a sentence, which is efficient but slightly less directive than a verb-led phrasing.

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

Completeness4/5

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

There is no output schema, so the description carries the burden of describing returns — and it does so by listing plan name, subscription state, and counts versus limits. For a single-parameter read tool this is nearly complete; only the missing when-to-use context holds it back.

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

Parameters3/5

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

Schema coverage is 100% and the single organizationId parameter is fully documented in the schema, including a pointer to organization_list for discovery. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

The description names a concrete resource (organization plan and usage) and enumerates the specific payload — plan name, trial/active/cancelled state, inbox and member counts against limits — so an agent knows exactly what this returns. It does not, however, explicitly distinguish itself from siblings like organization_get or organization_list, leaving that differentiation to inference.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus organization_get, organization_list, or organization_update. The only routing hint (use organization_list to find the id) lives in the schema parameter description, not the tool description, so the description itself offers no usage guidance.

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

prompt_createPrompt CreateC

Create a saved AI prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the prompt.
textYesThe prompt text (instructions for the AI).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, covering the safety profile. The description adds nothing beyond that — it does not explain persistence semantics, whether duplicate names are allowed, or whether the prompt is immediately usable.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient and readable, though its brevity is partly under-specification rather than deliberate compactness.

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

Completeness3/5

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

For a simple 3-required-parameter create tool with full schema coverage and annotations covering the mutation profile, the definition is minimally viable. Missing are the creation outcome (no output schema exists, so return behavior could have been mentioned) and any note on how the created prompt relates to prompt_list/prompt_get.

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

Parameters3/5

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

Schema description coverage is 100%, with name, text, and organizationId all documented in the schema (including a pointer to organization_list). The description adds no parameter detail, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (create) and resource (saved AI prompt), so an agent knows exactly what it produces. It does not explicitly differentiate itself from prompt_update or ai_prompt, but the name-to-action mapping is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus prompt_update (for modifying existing prompts) or ai_prompt (for generating content). No prerequisites or context are given; the agent must infer call conditions entirely from the name.

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

prompt_deletePrompt DeleteC
Destructive

Delete a saved prompt permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptIdYesThe prompt id (see prompt_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered by structured data. The description's only addition is 'permanently', which largely restates the destructive annotation and adds no fresh behavioral context such as authorization requirements, cascade effects, or consequences for dependent prompts.

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

Conciseness4/5

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

A single short sentence with no wasted words; the key word 'permanently' is well-placed. It is efficient, though its brevity edges toward under-specification for a destructive operation.

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

Completeness2/5

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

For a destructive delete tool the description is very thin: it does not describe consequences, reversibility beyond the single word 'permanently', or required context. Although annotations and schema carry the safety profile and parameter docs, the description leaves gaps an agent would want filled before invoking a destructive action.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (promptId, organizationId) are already documented in the schema, with cross-references to prompt_list and organization_list. The description adds no parameter-level detail, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (delete) and resource (saved prompt), and adds the qualifier 'permanently'. It is clear what the tool does, but it does not differentiate itself from sibling delete-type tools (e.g., template_delete, knowledge_delete) or route the agent away from prompt_update/prompt_get.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (such as required permissions or organization scoping), and no mention of alternatives. The agent is left to infer usage entirely from the name and schema.

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

prompt_getPrompt GetB
Read-onlyIdempotent

Get one saved prompt by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptIdYesThe prompt id (see prompt_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond the basic operation, but with annotations carrying the behavioral burden, a baseline 3 is appropriate.

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

Conciseness5/5

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

A single, short sentence that is front-loaded and wastes no words. It's appropriately concise for a simple retrieval tool.

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

Completeness3/5

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

Given the tool's simplicity, full annotation coverage, and 100% schema description coverage, the description covers the essential purpose. However, it lacks any usage context or differentiation from siblings, which would be helpful for an agent navigating many tools.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (promptId and organizationId) are fully documented in the schema, including cross-references to prompt_list and organization_list. The description adds no additional parameter meaning beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (saved prompt) with the selection key (by id). It's clear what the tool does, though it doesn't explicitly contrast with prompt_list or prompt_delete to help the agent pick the right one among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance or mention of alternatives like prompt_list or prompt_delete. The description merely states the operation without indicating in which scenarios retrieval by id 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.

prompt_listPrompt ListA
Read-onlyIdempotent

List or search the saved AI prompts of an organization. Classifications reference a prompt for their AI replies, and ai_prompt can apply one.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
limitNoMaximum items to return (default 10, max 50).
searchNoMatches the prompt name and text.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed world, so the safety profile is fully covered. The description adds domain context (classifications reference prompts; ai_prompt applies one) but says nothing about ordering, default pagination behavior, or result shape beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action front-loaded in the first. The second sentence is useful domain context rather than filler, though it reads slightly tangential to the act of listing, keeping it just under a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully described 4-parameter schema and complete annotations, the description covers the essentials; no output schema is needed since none exists. The only shortfall is the absence of ordering/result-shape context, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page, limit, search, and organizationId all documented in the schema including the pointer to organization_list. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb set ("List or search") and resource ("the saved AI prompts of an organization"), which cleanly separates it from prompt_get, prompt_create, prompt_update, and prompt_delete by verb. It does not, however, explicitly name a sibling or state how it differs from generic search, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"List or search" implies the usage (browse prompts, optionally filter by name/text), and the note that classifications reference a prompt hints at why an agent would look prompts up. But there is no explicit when-to-use guidance, no exclusion against prompt_get for retrieval by id, and no mention of the `search` parameter as the routing mechanism.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prompt_updatePrompt UpdateB

Update a saved prompt. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name.
textNoNew prompt text.
promptIdYesThe prompt id (see prompt_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false. The description adds real value by signaling partial-update semantics (only changed fields), which matters given idempotentHint=false. However, it says nothing about required permissions, merge behavior for omitted fields, or error handling on a bad promptId.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the key caveat. Nothing is redundant, though it is on the terse side for a mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 4-parameter mutation with full schema coverage and annotations, the description covers the essentials (what it does, partial-update behavior). It omits any note on authorization scope or what the response confirms, which would help given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the four parameters is documented in-schema (including pointers to prompt_list/organization_list), so the baseline is 3. The description adds no parameter-level detail beyond the generic 'only provide fields to change' hint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (a saved prompt), so the operation is unambiguous. It does not reference sibling tools like prompt_create or prompt_get to sharpen the distinction, but the name plus verb is enough to separate it from list/get/delete variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Only provide fields to change' implies patch-style partial-update usage, which is useful context, but there is no explicit when-to-use/when-not guidance and no mention of alternatives such as prompt_create. Usage is only implied from the tool name and patch note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_createTemplate CreateC

Create a reply template.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoHTML version of the template; defaults to the plain text.
nameYesName of the template.
plainYesPlain text of the template.
languageNoTwo-letter language code of the text.
parentIdNoId of the template this one is a language variant of.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write/safety profile is covered. The description adds nothing beyond that – no mention of required org scope, whether name must be unique, or what happens on duplicate creation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero waste. It is efficient, though arguably under-specified rather than genuinely concise given the tool's 6 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent create operation with 6 parameters and no output schema, the description does not explain what a reply template is, how it relates to parentId/language variants, or what a successful creation returns. Annotations and schema cover the safety and parameter surface, but the description leaves notable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents all six parameters including the organizationId cross-reference to organization_list. The description adds no parameter meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Create') and resource ('reply template'), which is clear and unambiguous. However, it offers no differentiation from sibling tools like template_update or template_get, so an agent must rely on the name alone to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus template_update, template_list, or prompt_create, and no prerequisites or conditions are stated. The description provides no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_deleteTemplate DeleteB
Destructive

Delete a reply template permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateIdYesThe template id (see template_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is known. The word 'permanently' adds the useful nuance of irreversibility, but there is no disclosure of auth requirements, side effects on related records, or whether the operation is recoverable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single six-word sentence that front-loads the verb and resource with zero waste; nothing extraneous and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive two-parameter delete tool with annotations covering its safety profile and no output schema, the minimum is met, but the description omits what deletion cascades to (e.g., prompts or filters referencing the template) and any recovery caveat beyond 'permanently'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (organizationId, templateId) are documented there, including pointers to organization_list and template_list. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete a reply template'), distinguishing it from sibling delete tools like prompt_delete, filter_delete, or message_delete in the schema's own parameter hint that references template_list. However, it does not explicitly differentiate itself from the other *_delete siblings or name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as template_update (if the intent is modification rather than removal). The only routing hint lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_getTemplate GetA
Read-onlyIdempotent

Get one reply template by id, with its plain text and HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
templateIdYesThe template id (see template_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description usefully adds that the result includes both plain text and HTML, which the annotations don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the action, the resource, and the payload, with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-id tool with full schema coverage and annotations covering safety, the description is adequate; it even notes the return payload. No output schema exists, but the description compensates by naming the returned formats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented with pointers to sibling list tools, so the schema carries the semantics. The description only restates 'by id' and adds nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (reply template), scoped to a single item by id, and adds what fields it returns (plain text and HTML). It clearly differs from template_list, though it doesn't name the sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance or alternatives; the routing hints (see template_list, organization_list) live only in the schema parameter descriptions, not the tool description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_listTemplate ListB
Read-onlyIdempotent

List or search the reply templates of an organization. A template can have language variants that reference it as parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
limitNoMaximum items to return (default 10, max 50).
searchNoMatches the template name and text.
hasParentIdNotrue lists only language variants, false only top-level templates.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the parent/variant structural concept, which is genuinely useful, but it discloses nothing about rate limits, pagination behavior, or ordering beyond what annotations and schema already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and free of padding. The second sentence is compact and earns its place by introducing the parent/variant model.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with full schema coverage, the core is present, but with no output schema the description could have said what a result row contains or noted that results are paginated. It is adequate but leaves minor gaps an agent would have to discover at runtime.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, making 3 the baseline. The 'language variants that reference it as parent' sentence does add conceptual meaning to hasParentId, but only marginally beyond the schema's own explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb pair (list/search) and resource (reply templates of an organization), so an agent immediately knows this is a collection-retrieval tool. It distinguishes itself functionally from template_get/create/update/delete without naming them, which keeps it at a solid 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no mention of excluding template_get or of prerequisites. The parent/variant note gives incidental domain context, but nothing tells the agent when this tool is the right choice versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

template_updateTemplate UpdateA

Update a reply template. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoNew HTML; defaults to the new plain text when only that is given.
nameNoNew name.
plainNoNew plain text.
languageNoTwo-letter language code of the text.
parentIdNoId of the template this one is a language variant of.
templateIdYesThe template id (see template_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the partial-update semantics ('Only provide fields to change'), but gives no further detail on permissions, side effects, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the key invocation constraint. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema, annotations, and absence of an output schema, the description is largely complete for correct invocation. It does not discuss return values or alternatives, but those are either unnecessary or covered elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters are documented in the schema; baseline is 3. The description adds only a general partial-update note and does not add parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: update a reply template. It does not name or distinguish itself from sibling tools like template_create, template_delete, or template_get, so it is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides only the invocation hint 'Only provide fields to change,' which clarifies partial-update behavior but does not say when to use this tool versus template_create, template_delete, or template_get. Usage context 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.

webhook_createWebhook CreateA

Create a webhook that POSTs the given events to a URL. Deliveries are signed with a secret: call webhook_rotate_secret to obtain one.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventYesEvent name, or several comma-separated: conversation.create, conversation.update, conversation.delete, conversation.reassign, message.create, message.update, message.delete, contact.create, contact.update, contact.delete, knowledge.create, knowledge.update, knowledge.delete, classification.create, classification.update, classification.delete, template.create, template.update, template.delete, prompt.create, prompt.update, prompt.delete, inbox.create, inbox.update, inbox.delete, member.add, member.remove, organization.update.
targetYesHTTPS URL that receives the events.
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds value beyond them by disclosing the HMAC signing behavior and the dependency on webhook_rotate_secret. It does not address duplicate-URL behavior, whether repeated calls create multiple webhooks (relevant given idempotentHint=false), or what the delivery payload looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and immediately followed by the operational caveat. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param create tool with full schema coverage and annotations carrying the safety profile, the description is nearly sufficient, and it usefully surfaces the signing-secret workflow. Without an output schema, however, it omits what creation returns (webhook id, secret, delivery status), leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: event enumerates all event names, target documents the HTTPS URL, and organizationId points to organization_list. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+mechanism: 'Create a webhook that POSTs the given events to a URL.' This cleanly distinguishes it from siblings like webhook_list, webhook_get, webhook_update, webhook_delete, and webhook_test, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete procedural cue absent from the schema's surface: deliveries are signed with a secret, so the agent should call webhook_rotate_secret to obtain one. It doesn't explicitly say when to prefer this over webhook_update or state prerequisites like permissions, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_deleteWebhook DeleteB
Destructive

Delete a webhook. The target stops receiving events immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook id (see webhook_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered structurally. The description usefully adds that event delivery ceases immediately, but omits whether deletion is reversible, what happens on a missing/invalid id, or whether it errors when called twice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the action first and the side effect second; no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive tool with no output schema and fully covered annotations, the description communicates the core effect and consequence. It would be complete with a note on irreversibility and error behavior for unknown ids.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (webhookId, organizationId) have informative descriptions pointing to webhook_list and organization_list. The description adds nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a webhook') plus the immediate consequence ('The target stops receiving events immediately'). It is unmistakably distinct from webhook_update or webhook_rotate_secret, though it does not explicitly name siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives (e.g., disabling vs deleting), and no prerequisites such as required permissions or org scoping mentioned. The agent must infer all routing decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_getWebhook GetC
Read-onlyIdempotent

Get one webhook by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook id (see webhook_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on behavior for a missing/invalid webhookId, error semantics, or scope requirements — so it contributes no behavioral value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though arguably so terse that it omits context that could have earned its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial two-parameter read with full schema coverage and complete annotations, the essentials are present, but with no output schema the description could have described the returned webhook shape or the not-found case. Adequate, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters carry inline guidance (webhookId points to webhook_list; organizationId points to organization_list). The description adds nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get one webhook') qualified by the lookup key ('by id'), so the singular fetch is distinguishable from webhook_list. It never names a sibling or clarifies the scope boundary against webhook_list beyond the implicit singular/plural distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no alternatives named, even though webhook_list is an obvious sibling an agent might choose instead. The reader must infer that you need an already-known webhookId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_listWebhook ListB
Read-onlyIdempotent

List the webhooks of an organization: target URL and subscribed events.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
eventNoOnly webhooks subscribed to this event.
limitNoMaximum items to return (default 10, max 50).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered. The description adds that results include target URL and subscribed events, which is mild value beyond the annotations but no pagination or filtering behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the verb and scope, with zero filler. Everything it says serves the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with full annotation coverage and full parameter descriptions, the description is largely adequate and even hints at the return payload. No output schema exists, so a little more detail on result shape or paging would have been ideal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents organizationId, page, limit and event. The description restates the organization scope and implies the event dimension but adds no format or syntax detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('List the webhooks of an organization') and even names the returned fields. It stops short of explicitly differentiating itself from webhook_get, though the plural scope makes the distinction easy to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus webhook_get, nor any mention of paging behavior or prerequisites beyond the org scope. The usage context is only implied by the verb 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_rotate_secretWebhook Rotate SecretA

Generate a new signing secret for a webhook. The response contains the secret exactly once; the previous secret stops validating immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook id (see webhook_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give the generic mutating profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds the two facts that actually govern correct invocation: the secret is returned exactly once and the old secret is invalidated immediately, which is essential given non-idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and followed by the operational consequence. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description supplies the critical return-behavior note (secret shown exactly once) and the side effect (immediate invalidation), while annotations carry the safety profile. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (webhookId, organizationId) are documented with cross-references to webhook_list and organization_list. The description adds nothing beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: generating a new signing secret for a webhook. The action is unambiguous against siblings like webhook_update or webhook_create, which operate on other webhook fields rather than credentials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the consequence stated ('the previous secret stops validating immediately'), which signals this is a credential-rotation operation, but the description never says when to rotate or what alternative exists. No explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_testWebhook TestA

Send a test event to a webhook and report the delivery result (status code, response).

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook id (see webhook_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare openWorldHint=true and idempotentHint=false, so the agent knows this makes an external, repeatable-but-not-idempotent call. The description usefully adds that the result is a status code and response body, but says nothing about timeouts, retries, or whether the test event is measurable/flagged at the receiving end.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the action front-loaded and the return payload parenthetically clarified. Nothing is wasted and nothing essential is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by stating what comes back (status code, response). Combined with 100% schema coverage of the two required ids, an agent has enough to invoke it, though side-effect behavior on the target system remains unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both required ids are documented in the schema (including cross-references to webhook_list and organization_list). The description adds no parameter meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ("Send a test event"), the target resource (a webhook), and the outcome ("report the delivery result"). This clearly separates it from sibling config tools like webhook_get or webhook_update, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is for verifying that a webhook actually delivers. There is no explicit when-to-use statement, no warning about using it against production endpoints, and no comparison to alternatives like webhook_get (which inspects config rather than delivery).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhook_updateWebhook UpdateA

Update the target URL or events of a webhook. Only provide fields to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoEvent name, or several comma-separated: conversation.create, conversation.update, conversation.delete, conversation.reassign, message.create, message.update, message.delete, contact.create, contact.update, contact.delete, knowledge.create, knowledge.update, knowledge.delete, classification.create, classification.update, classification.delete, template.create, template.update, template.delete, prompt.create, prompt.update, prompt.delete, inbox.create, inbox.update, inbox.delete, member.add, member.remove, organization.update.
targetNoNew target URL.
webhookIdYesThe webhook id (see webhook_list).
organizationIdYesThe organization id. Use organization_list to find it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so safety is covered. The description adds the partial-update behavior, which is genuinely useful beyond the annotations, but says nothing about permissions, validation of the target URL, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero redundancy. The partial-update constraint is stated immediately after the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple four-parameter update tool with fully documented schema and no output schema, the description covers purpose and update mode adequately. Only marginal gaps remain, such as permission requirements and behavior of unset fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are documented in the schema (including the full event enum list and cross-references like webhook_list/organization_list). The description adds the field mapping to target/event but no format or semantics beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('webhook') plus the two mutable fields (target URL, events). It is clearly distinguishable from webhook_create/delete/list at a glance, though it does not explicitly name or contrast with those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Only provide fields to change' conveys patch/partial-update semantics, which is useful context. However, it gives no guidance on when to prefer this over webhook_create, webhook_rotate_secret, or webhook_test, nor any prerequisites for the caller.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 84 tool updatesv0.1.0
    • First observedai_draft_reply
    • First observedai_prompt
    • First observedai_test
    • First observedai_translate
    • First observedapi_key_create
    • First observedapi_key_delete
    • First observedapi_key_list
    • First observedclassification_create
    • First observedclassification_delete
    • First observedclassification_get
    • First observedclassification_impact
    • First observedclassification_list
    • First observedclassification_statistics
    • First observedclassification_update
    • First observedcontact_create
    • First observedcontact_delete
    • First observedcontact_field_list
    • First observedcontact_get
    • First observedcontact_list
    • First observedcontact_update
    • First observedconversation_close
    • First observedconversation_delete
    • First observedconversation_get
    • First observedconversation_list
    • First observedconversation_messages
    • First observedconversation_metrics
    • First observedconversation_read
    • First observedconversation_reply
    • First observedconversation_spam
    • First observedconversation_stats
    • First observedconversation_stats_by_member
    • First observedconversation_thread
    • First observedconversation_totals
    • First observedconversation_update
    • First observedfilter_create
    • First observedfilter_delete
    • First observedfilter_get
    • First observedfilter_list
    • First observedfilter_update
    • First observedinbox_get
    • First observedinbox_list
    • First observedinbox_refresh
    • First observedinbox_statistics
    • First observedinbox_test
    • First observedknowledge_create
    • First observedknowledge_delete
    • First observedknowledge_get
    • First observedknowledge_search
    • First observedknowledge_source_get
    • First observedknowledge_source_list
    • First observedknowledge_source_status
    • First observedknowledge_source_sync
    • First observedknowledge_update
    • First observedmember_create
    • First observedmember_delete
    • First observedmember_get
    • First observedmember_list
    • First observedmember_update
    • First observedmessage_delete
    • First observedmessage_get
    • First observedmessage_send
    • First observedmessage_update
    • First observedorganization_get
    • First observedorganization_list
    • First observedorganization_update
    • First observedorganization_usage
    • First observedprompt_create
    • First observedprompt_delete
    • First observedprompt_get
    • First observedprompt_list
    • First observedprompt_update
    • First observedsearch
    • First observedtemplate_create
    • First observedtemplate_delete
    • First observedtemplate_get
    • First observedtemplate_list
    • First observedtemplate_update
    • First observedwebhook_create
    • First observedwebhook_delete
    • First observedwebhook_get
    • First observedwebhook_list
    • First observedwebhook_rotate_secret
    • First observedwebhook_test
    • First observedwebhook_update

TDQS

B3.1/5.0

Scored across 84 tools

Disambiguation4/5

Tools generally target distinct resource-action pairs, and descriptions clarify overlaps like conversation_reply vs message_send. However, some pairs (conversation_thread vs conversation_get + conversation_messages, search vs knowledge_search) could cause hesitation. Overall mostly distinct.

Naming Consistency5/5

All tool names follow a consistent snake_case resource_action pattern (e.g., conversation_list, webhook_create, knowledge_source_sync). There are no mixed conventions, making the set predictable and easy to navigate.

Tool Count1/5

84 tools is an extreme mismatch for an MCP server, as the sheer volume will overwhelm an agent's context and decision-making. According to the calibration, 50+ tools merits the lowest score despite the platform's breadth.

Completeness3/5

Core workflows for conversations, contacts, classifications, templates, prompts, and webhooks have full CRUD. However, key lifecycle operations are missing for inboxes (no create/update/delete) and knowledge sources (no create/update/delete), creating notable dead ends for administrative tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers