Skip to main content
Glama
mh-zeynal

gapify-mcp-server

by mh-zeynal

gapify-mcp-server

MCP server that exposes the Gapify customer-support API (Chatwoot-compatible) as tools for Claude Code, Claude Desktop, or any other MCP client. Built on the official MCP TypeScript SDK. All 117 endpoints in Gapify-API.postman_collection.json are generated into tools, plus one gapify_raw_request escape hatch.

Tool descriptions are in English; tool inputs may be in Persian (Farsi). See Persian input.

راهنمای فارسی

Install

No clone needed; MCP clients run it with npx:

npx -y gapify-mcp-server

Requires Node.js 18 or newer.

Related MCP server: libredesk-mcp

Configuration

Set these as environment variables in the MCP client config:

Variable

Required

Where to get it

GAPIFY_API_ACCESS_TOKEN

yes, for gapify_* Application tools

Gapify -> Profile Settings -> Access Token

GAPIFY_ACCOUNT_ID

recommended

Number in the Gapify URL: app.gapify.ai/app/accounts/<id>/...

GAPIFY_BASE_URL

no

Defaults to https://app.gapify.ai

GAPIFY_PLATFORM_APP_API_KEY

only for gapify_platform_* tools

Super Admin -> Platform Apps

GAPIFY_AGENT_BOT_API_KEY

no

Fallback token for message endpoints

When running from a local clone, a .env next to package.json is also read (see .env.example); environment variables win over .env values.

Claude Code

claude mcp add --scope user gapify -e GAPIFY_API_ACCESS_TOKEN=your-token -e GAPIFY_ACCOUNT_ID=1 -- npx -y gapify-mcp-server

Then run /mcp inside Claude Code to confirm it connected.

Claude Desktop

Add to claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):

{
  "mcpServers": {
    "gapify": {
      "command": "npx",
      "args": ["-y", "gapify-mcp-server"],
      "env": {
        "GAPIFY_API_ACCESS_TOKEN": "your-token",
        "GAPIFY_ACCOUNT_ID": "1"
      }
    }
  }
}

Usage

Once connected, ask your assistant in English or Persian; it picks the matching tool. For example:

  • "List my open conversations" / «گفتگوهای باز من را نشان بده»

  • "Find the contact with phone 09121234567" / «مخاطب با شماره ۰۹۱۲۱۲۳۴۵۶۷ را پیدا کن»

  • "Reply to conversation 42: your order has shipped" / «به گفتگوی ۴۲ پاسخ بده: سفارش شما ارسال شد»

  • "Resolve conversation 42 and add the label vip"

  • "Assign conversation 42 to the support team"

  • "How many conversations did we resolve last week?"

Tools that change data (create, update, delete) are marked in their annotations, so clients that ask for confirmation before write actions will do so. Delete tools are marked destructive.

If something fails, the tool returns the HTTP status with a hint, for example a 401 means GAPIFY_API_ACCESS_TOKEN is missing or wrong, and a 404 usually means a wrong ID or account_id.

Persian input

  • Free text (names, message content, notes, search terms, custom attribute values) is sent unchanged as UTF-8 JSON or URL-encoded query strings, so Persian text round-trips exactly. The server's instructions tell the model not to translate it.

  • IDs, page numbers, numeric fields and phone numbers accept Persian (۰-۹) and Arabic-Indic (٠-٩) digits and are converted to ASCII before the request. ۰۹۱۲ ۳۴۵ ۶۷۸۹ becomes 09123456789; +۹۸۹۱۲... becomes +98912....

  • Zero-width and bidi control marks that RTL keyboards insert around values are stripped from IDs.

  • Boolean fields accept true/false, "true"/"false" and "بله"/"خیر".

  • Enum values (e.g. conversation status open, resolved) stay English; each parameter description lists them.

The normalization lives in src/persian.ts.

Tool naming

  • gapify_<action> : Application API (/api/v1/accounts/{account_id}/...), user API key

  • gapify_platform_<action> : Platform API (/platform/api/v1/...), platform app key

  • gapify_client_<action> : Client/public API (/public/api/v1/inboxes/...), no auth

  • gapify_raw_request : any method + path, for endpoints missing from the collection

Run node scripts/generate-tools.mjs --list to print every tool with its method and path.

How it works

  • scripts/generate-tools.mjs walks the Postman collection and writes src/generated/tools.json: name, method, path, path/query params with descriptions, and body fields parsed from the request description and example body. SUMMARY_OVERRIDES and FIELD_DOCS supply precise English text where the collection is vague or silent. The generator fails if any parameter lacks a description or any description contains non-ASCII text.

  • src/index.ts registers one MCP tool per entry with a Zod schema. account_id becomes optional when GAPIFY_ACCOUNT_ID is set. extra_body lets you pass keys that are not in the example.

  • src/client.ts picks the right api-access-token header per endpoint and returns actionable error text for 401/403/404/422/429. Responses over 60k characters are truncated with a note.

Development

npm install
npm run build        # regenerates tools.json from the Postman collection, then compiles to dist/
npm run inspect      # opens MCP Inspector against dist/index.js

Available Tools

118 tools
gapify_account_conversation_metricsReports: Account Conversation MetricsB
Read-onlyIdempotent

Get conversation metrics for Account [Reports] GET /api/v2/accounts/{account_id}/reports/conversations Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoQuery param. Type of report One of: `account` Example: account
account_idYesThe numeric ID of the account

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, so the safety profile is covered. The description usefully adds the auth mechanism (User API key via api-access-token header) and an encoding caveat about Persian/Arabic-Indic digits, but says nothing about return format, time-range scoping, 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.

Conciseness4/5

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

The definition is short and front-loads the purpose, followed by endpoint, auth, and i18n notes. The mixed format (prose + endpoint + auth lines) is slightly disjointed but every line carries information.

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

Completeness3/5

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

With no output schema, the description is the only place to learn what the metrics contain, yet it never characterizes the returned data or any time-range filtering. For a metrics/report endpoint that is a meaningful gap, though the auth and encoding notes partially 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%, with account_id and the type query param already documented in the schema. The description adds no syntax or format detail for either 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?

The description states a clear verb and resource: 'Get conversation metrics for Account'. This is specific enough to distinguish it from the account/agent report siblings, though it does not name gapify_agent_conversation_metrics or gapify_get_account_reports to make the boundary explicit.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the closely-related gapify_agent_conversation_metrics, gapify_get_account_reports, or gapify_get_account_reports_summary. The agent must infer the selection from names alone.

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

gapify_add_agentAgents: Add a New AgentA

Add a new agent to the account [Agents] POST /api/v1/accounts/{account_id}/agents Auth: User API key (header api-access-token). Body fields: name (required), email (required), role, availability_status, auto_offline. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFull Name of the agent
roleNoRole of the agent. One of: `agent`, `administrator`. Example: "agent"
emailYesEmail of the Agent Example: "user@example.com"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
auto_offlineNoWhether the availability status of agent is configured to go offline automatically when away. Example: false
availability_statusNoAvailability of the agent. One of: `available`, `busy`, `offline`. Example: "available"

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, open-world behavior, so the bar is lower; the description still adds real context: the auth requirement (User API key in the api-access-token header), the required body fields, and the extra_body escape hatch for unlisted keys. It omits failure modes such as duplicate-email handling, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with the action, then endpoint, auth, body fields, and the encoding note — each line carries distinct information with no filler. It is slightly list-like but every element earns its place.

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

Completeness4/5

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

For a 7-parameter creation tool with no output schema, the description covers auth, required vs optional fields, the extra_body mechanism, and encoding quirks, which is close to sufficient. Remaining gaps are behavioral edge cases (duplicate email, validation errors) rather than anything needed to construct a correct call.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description contributes beyond the schema by calling out which fields are required in prose, explaining extra_body's merge semantics for keys not listed in the schema, and noting that Persian/Arabic-Indic digits and non-Latin text are passed through unchanged. The digit/language note is genuinely information the schema does not carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 new agent to the account') and pins it to the underlying endpoint, so the agent knows exactly what is created. It does not, however, differentiate itself from nearby siblings such as gapify_create_agent_bot or gapify_platform_create_account_user, which a reader must infer from naming alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The closest thing to routing help is the [Agents] tag and endpoint path, which only weakly separates this from the agent-bot and account-user creation tools in the sibling list.

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

gapify_add_articleHelp Center: Add a new articleA

Add an article to a help center portal [Help Center] POST /api/v1/accounts/{account_id}/portals/{portal_id}/articles Auth: User API key (header api-access-token). Body fields: content, meta, position, status, title, slug, views, portal_id, account_id, author_id, category_id, folder_id, associated_article_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoUse for search Example: {"tags":["article_name"],"title":"article title","description":"article description"}
slugNoURL slug of the article (ASCII letters, digits and dashes).
titleNoTitle of the article.
viewsNoInitial view count of the article. Example: 0
statusNoPublication status of the article. One of: `draft`, `published`, `archived`.
contentNoThe text content.
positionNoarticle position in category Example: 0
author_idNoNumeric ID of the user who authored the article. Example: 1
folder_idNoNumeric ID of the help center folder. Example: 1
portal_idYesportal_id (string)
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
category_idNoNumeric ID of the help center category. Example: 1
associated_article_idNoTo associate similar articles to each other, e.g to provide the link for the reference. Example: 1

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/non-idempotent/open-world/non-destructive profile, and the description adds real context beyond them: the exact endpoint, the auth mechanism ('User API key' via api-access-token header), and the extra_body escape hatch for unlisted fields. It still omits failure/error behavior and any response expectations.

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?

Well front-loaded: purpose first, then endpoint, auth, and field notes. The enumerated body-field list largely duplicates the schema and adds length without information, which keeps it from 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 14-parameter create tool with no output schema, the description supplies the endpoint, auth, external-field escape hatch, and value-encoding rules, which is fairly complete. It stops short of describing the returned article object or error cases, leaving minor gaps for an agent verifying success.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and the field list here largely restates the schema. However, the note that text may be sent in Persian and that IDs/numbers may use Persian or Arabic-Indic digits is genuine value-add guidance about how to format parameter values that the schema does not provide.

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

Purpose5/5

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

The description states a specific verb and resource ('Add an article to a help center portal') and pins it with the exact endpoint path. This clearly separates it from the neighboring help-center creation tools like gapify_add_portal and gapify_add_category.

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 create semantics and the required account_id/portal_id, but there is no explicit when-to-use statement or routing against alternatives. Since there is no update/delete article sibling, the ambiguity is low, so this is merely adequate rather than strong.

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

gapify_add_automation_ruleAutomation Rule: Add a new automation ruleA

Add a new automation rule to account [Automation Rule] POST /api/v1/accounts/{account_id}/automation_rules Auth: User API key (header api-access-token). Body fields: name, description, event_name, active, actions, conditions. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRule name Example: "Add label on message create event"
activeNoEnable/disable automation rule Example: false
actionsNoArray of actions which you want to perform when condition matches, e.g add label support if message contains content help. Example: [{"action_name":"add_label","action_params":["support"]}]
account_idYesThe numeric ID of the account
conditionsNoArray of conditions on which conversation filter would work, e.g message content contains text help. Example: [{"attribute_key":"content","filter_operator":"contains","query_operator":"nil","values":["help"]}]
event_nameNoEvent that triggers the rule. One of: `conversation_created`, `conversation_updated`, `message_created`. Example: "message_created"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the automation and actions Example: "Add label support and sales on message create event if incoming message content contains text help"

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare a non-read-only, non-idempotent, open-world write, and the description adds genuinely new context: the exact auth header (`api-access-token`), the endpoint, the fact that extra fields can be merged via extra_body, and that Persian/Arabic-Indic digits and multilingual text are passed through unchanged. It does not cover failure modes, required-vs-optional fields, or what is returned, which keeps it below 5.

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

Conciseness4/5

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

Front-loaded with the action, then a compact reference block (method/path, auth, body fields, encoding note). Every line carries information, though the bare 'POST /api/...' and 'Auth:' lines are terse reference fragments rather than prose and add some visual noise.

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, nested-object write with no output schema, the description covers the endpoint, auth, all body fields, the extra_body escape hatch, and input encoding. It stops short of clarifying which of name/event_name/actions are effectively required at runtime or what a successful response contains, which the absent output schema leaves unaddressed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the body-field roster maps to the parameters, extra_body is explained as a merge channel for unlisted keys, and the note about Persian/Arabic-Indic digit handling is a non-obvious input contract absent from the schema.

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

Purpose5/5

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

States a specific verb and resource ('Add a new automation rule to account'), and the endpoint path plus bracketed resource tag reinforce that this is a creation operation on the automation_rules collection. Against siblings like gapify_list_automation_rules, gapify_get_automation_rule, gapify_update_automation_rule and gapify_remove_automation_rule, the create action is unambiguous.

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

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 endpoint, and the auth line tells the agent a User API key is required, but there is no explicit when-to-use/when-not-to-use guidance or comparison to siblings such as gapify_update_automation_rule. An agent can infer the context but must supply the routing logic itself.

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

gapify_add_canned_responseCanned Responses: Add a New Canned ResponseA

Add a new canned response to the account [Canned Responses] POST /api/v1/accounts/{account_id}/canned_responses Auth: User API key (header api-access-token). Body fields: content, short_code. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoMessage content for canned response
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
short_codeNoShort Code for quick access of the canned response

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and idempotentHint=false. The description adds valuable context beyond these: it specifies the required auth header (`api-access-token`), the exact endpoint path, that extra_body can merge additional fields, and that text/numbers may use Persian or Arabic-Indic scripts. This is meaningful behavioral disclosure for a write operation.

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

Conciseness4/5

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

The description is front-loaded with the purpose, then structured into endpoint, auth, body fields, and a language note. Each line serves a purpose without excessive verbosity. It is appropriately sized for a create tool, though the multi-line format is slightly less concise than a single flowing sentence.

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 non-destructive write tool with full schema coverage and clear annotations, the description is largely complete. It covers auth, endpoint, body fields, and input script handling. It omits any mention of success response shape or error behavior, but with no output schema and annotations covering the safety profile, these omissions are minor.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description goes further by naming the body fields (content, short_code), explaining extra_body merging, and adding a non-obvious semantic detail: values may be written in Persian/Arabic and digits may use Persian/Arabic-Indic numerals. This adds real meaning beyond the schema's type and description fields.

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

Purpose4/5

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

The description states a specific verb and resource: 'Add a new canned response to the account.' This clearly distinguishes it from sibling operations like list, update, and remove. However, it does not explicitly name or contrast with any sibling alternative in the text, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as gapify_update_canned_response or gapify_list_canned_responses. It states what the tool does but offers no context, prerequisites, or exclusions to help an agent select it over siblings.

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

gapify_add_categoryHelp Center: Add a new categoryA

Add a category to a help center portal [Help Center] POST /api/v1/accounts/{account_id}/portals/{portal_id}/categories Auth: User API key (header api-access-token). Body fields: description, locale, name, slug, position, portal_id, account_id, associated_category_id, parent_category_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCategory name
slugNoCategory slug
localeNoCategory locale Example: "en/es"
positionNoCategory position in the portal list to sort Example: 0
portal_idYesportal_id (string)
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoCategory description
parent_category_idNoTo define parent category, e.g product documentation has multiple level features in sales category or in engineering category. Example: 1
associated_category_idNoTo associate similar categories to each other, e.g same category of product documentation in different languages Example: 1

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare that this is a non-read-only, open-world, non-idempotent, non-destructive write operation. The description adds useful operational context beyond annotations: the auth header, the exact POST endpoint, the extra_body passthrough mechanism, and the Persian/Arabic-Indic digit handling. It does not cover duplicate-name behavior or rate limits, but it is more transparent than most mutation-tool descriptions.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then layers endpoint, auth, body fields, and the i18n note in a compact paragraph. It is efficient overall, though the body-field enumeration duplicates what the schema already lists.

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

Completeness4/5

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

For a write API wrapper with no output schema, the description covers auth, endpoint, parameter surface, extra_body, and input language handling. Annotations cover the safety profile, so the remaining omission around error/response behavior is acceptable, though not fully complete for an agent expecting side-effect detail.

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 schema already documents all ten parameters and the 3 baseline applies. The description adds cross-cutting meaning that the schema does not provide, notably how text values may be Persian/Farsi and how IDs/numbers may use Persian or Arabic-Indic digits, plus the extra_body merge behavior. It mostly restates field names, but the language/digit note is meaningful parameter guidance.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Add a category to a help center portal.' It distinguishes this from sibling tools like gapify_add_portal and gapify_add_article by naming the exact resource (category) and scope (help center portal), so an agent can select it correctly.

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 tool name and the phrase 'Add a category to a help center portal,' but there is no explicit guidance on when to use this versus related tools. No alternatives or exclusions are named, so the agent must infer the correct context.

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

gapify_add_custom_attributeCustom Attributes: Add a new custom attributeA

Add a new custom attribute to account [Custom Attributes] POST /api/v1/accounts/{account_id}/custom_attribute_definitions Auth: User API key (header api-access-token). Body fields: attribute_display_name, attribute_display_type, attribute_description, attribute_key, attribute_values, attribute_model. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
attribute_keyNoAttribute unique key value
attribute_modelNoAttribute type(conversation_attribute- 0, contact_attribute- 1) Example: 0
attribute_valuesNoAttribute values Example: ["string"]
attribute_descriptionNoAttribute description
attribute_display_nameNoAttribute display name
attribute_display_typeNoAttribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7) Example: 0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the description's job is lighter. It adds real value beyond them: the auth header required, the exact request path, the accepted body fields, and the note that Persian/Arabic-Indic text and digits are sent unchanged, which matters for data integrity.

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?

It is front-loaded with the action, then gives endpoint, auth, body fields and the encoding caveat in a compact block. No filler sentences, though the field list slightly duplicates 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 creation tool with 8 parameters, a nested extra_body object and no output schema, the description supplies the auth method, the endpoint, the mappable body fields and the escape hatch for extra fields. It does not describe the response or error behavior, which is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including the display-type and model enumerations. The description restates the body field names but adds no semantics beyond that, apart from the language/digit handling note; 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 opens with a specific verb+resource ('Add a new custom attribute') and includes the concrete endpoint, so the agent knows exactly what is created. It is distinguishable from siblings like list/get/update/remove_custom_attribute, 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 'Add a new' versus the sibling update/remove tools, but there is no explicit statement of when to prefer this tool over gapify_update_custom_attribute or what prerequisites exist. The requirement of a User API key is stated, which helps a little.

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

gapify_add_inbox_agentsInboxes: Add a New AgentB

Add agents to an inbox [Inboxes] POST /api/v1/accounts/{account_id}/inbox_members Auth: User API key (header api-access-token). Body fields: inbox_id (required), user_ids (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_idYesThe ID of the inbox
user_idsYesIDs of users to be added to the inbox Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

B3.4/5.0
Behavior4/5

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

Goes beyond the annotations (which only declare non-read-only, non-destructive, non-idempotent) by disclosing the required auth mechanism (User API key via `api-access-token` header), the underlying endpoint, and that values are transmitted unchanged including Persian/Arabic-Indic digits. It does not state what happens to existing members or how failures are surfaced, but it adds real context the annotations do not.

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

Conciseness4/5

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

Front-loads the purpose, then layers endpoint, auth and body details compactly with no filler sentences. The bracketed '[Inboxes]' tag and the language note are slightly redundant but not wasteful.

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 and full schema coverage, the description supplies endpoint, auth and body requirements, which is close to sufficient. It still omits the add-vs-replace semantics relative to gapify_update_inbox_agents and any error/edge behavior, leaving a gap an agent could get wrong.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 inbox_id, user_ids, account_id and extra_body are already documented; the description largely restates the required body fields. The one genuine addition is the note that text/ID values may be written in Persian or Arabic-Indic digits and are sent unchanged, which is a small semantic gain over the schema.

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

Purpose4/5

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

States a specific verb+resource ('Add agents to an inbox') and even names the endpoint POST /inbox_members, so the action is unambiguous. It does not, however, distinguish itself from close siblings like gapify_update_inbox_agents (which also mutates inbox membership) or gapify_remove_inbox_agent.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. The agent must infer that this is for adding members while gapify_update_inbox_agents replaces the membership set and gapify_remove_inbox_agent removes members; the description never says so, leaving the add-vs-update choice to guesswork.

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

gapify_add_portalHelp Center: Add a new portalA

Create a help center portal in the account [Help Center] POST /api/v1/accounts/{account_id}/portals Auth: User API key (header api-access-token). Body fields: archived, color, config, custom_domain, header_text, homepage_link, name, slug, page_title, account_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the portal
slugNoSlug for the portal to display in link
colorNoHeader color for help-center Example: "add color HEX string, \"#fffff\""
configNoConfiguration about supporting locales Example: {"allowed_locales":["en","es"],"default_locale":"en"}
archivedNoStatus to check if portal is live Example: false
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
page_titleNoPage title for the portal
header_textNoHelp center header Example: "Handbook"
custom_domainNoCustom domain to display help center. Example: "https://app.gapify.ai/hc/help-center"
homepage_linkNolink to main dashboard Example: "https://gapify.ai/"

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), so the bar is lower. The description adds real value beyond them: the auth mechanism (User API key in `api-access-token`), the exact endpoint, and the extra_body merge behavior. It stops short of disclosing error/duplicate-slug behavior, which keeps it off a 5.

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

Conciseness4/5

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

Front-loaded with the purpose, then endpoint/auth/body fields in a compact block. The enumerated body-field list is somewhat redundant given 100% schema coverage, but it is short and the extra_body and localization notes earn their space.

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

Completeness4/5

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

For a mutation tool with 11 params, one required, no output schema, and annotations covering the safety profile, the description supplies auth, endpoint, payload shape, and a passthrough mechanism. It omits the required-parameter note and any hint of return/error behavior, so it is not fully complete but is close.

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 goes beyond the schema by documenting the extra_body passthrough and, notably, the localization rule that text may be Persian/other languages sent unchanged and that IDs/numbers may use Persian or Arabic-Indic digits — value the schema does not carry.

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

Purpose4/5

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

The description opens with a specific verb+resource: 'Create a help center portal in the account.' That cleanly separates it from gapify_list_portals and gapify_update_portal, though those siblings are never named explicitly, so differentiation is inferred from the verb rather than stated.

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

Usage Guidelines3/5

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

Usage is implied by the verb and the API endpoint shown, but there is no explicit when-to-use/when-not guidance or routing to alternatives (e.g. update_portal for existing portals). The auth note and extra_body escape hatch add practical context but not selection guidance.

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

gapify_add_team_agentsTeams: Add a New AgentA

Add agents to a team [Teams] POST /api/v1/accounts/{account_id}/teams/{team_id}/team_members Auth: User API key (header api-access-token). Body fields: user_ids (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
user_idsYesIDs of users to be added to the team Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), so the bar is lower. The description still adds real context beyond them: the auth mechanism (User API key in api-access-token header), the concrete endpoint, and the extra_body merge behavior. It stops short of describing duplicate-membership behavior, so it is not a 5.

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

Conciseness3/5

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

Purpose is front-loaded and the API/auth details are compact, but the trailing note about Persian/Arabic-Indic digits and unchanged text is boilerplate noise that does not earn its place for an ID-based membership call.

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 description covers the endpoint, auth, required body field, and an escape hatch (extra_body), which is adequate to invoke it. It is silent on the response shape and on what happens when a user is already a team member, leaving gaps for a non-idempotent write.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents account_id, team_id, user_ids, and extra_body, making 3 the baseline. The description restates user_ids as required and mentions extra_body but adds no format or constraint detail beyond what the schema provides.

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

Purpose5/5

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

States a specific verb+resource (add agents to a team) that is immediately distinguishable from the sibling operations list_team_agents, update_team_agents, and remove_team_agent. An agent can tell what this does without opening the schema.

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

Usage Guidelines2/5

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

The text is an API reference rather than guidance: it never says when to use this versus update_team_agents or the similar gapify_add_inbox_agents, nor does it state any preconditions. No when-to-use, when-not-to-use, or alternative is given.

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

gapify_add_webhookWebhooks: Add a webhookA

Add a webhook subscription to the account [Webhooks] POST /api/v1/accounts/{account_id}/webhooks Auth: User API key (header api-access-token). Body fields: url, subscriptions. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe url where the events should be sent Example: "https://example.com"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
subscriptionsNoThe events you want to subscribe to. Example: ["conversation_created"]

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 (readOnly=false, idempotent=false, destructive=false, openWorld=true), so the bar is lower. The description adds real value beyond that: required auth header, HTTP endpoint, body field set, the extra_body escape hatch, and the Persian/Arabic-Indic digit handling for inputs. It stops short of stating behavior on duplicate URLs or success/error responses.

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

Conciseness4/5

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

Purpose is front-loaded, then auth and body details follow in a compact block. Every sentence carries information (endpoint, auth, fields, encoding note); it is dense but not padded.

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

Completeness4/5

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

With no output schema and annotations covering the safety profile, the description is nearly self-sufficient: it supplies endpoint, auth mechanism, required body fields, and encoding caveats. It could go further on valid subscription event values and failure behavior, but nothing essential for a correct call 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 the schema already documents url, account_id, subscriptions, and extra_body, making 3 the baseline. The description restates the body fields and notes the language/digit-input flexibility, which adds minor context but no syntax the schema lacks.

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 ('Add a webhook subscription to the account') and the endpoint. It is clearly distinguishable from siblings gapify_list_webhooks, gapify_update_webhook, and gapify_delete_webhook, which cover the other CRUD operations.

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 create verb, but the description never states when to add a webhook versus updating or listing them, nor any prerequisites beyond the auth key. No alternatives or exclusions are named, so guidance remains implicit.

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

gapify_agent_conversation_metricsReports: Agent Conversation MetricsA
Read-onlyIdempotent

Get conversation metrics for Agent [Reports] GET /api/v2/accounts/{account_id}/reports/conversations/ Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoQuery param. Type of report One of: `agent` Example: agent
user_idNoQuery param. The numeric ID of the user
account_idYesThe numeric ID of the account

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the read-only, idempotent, open-world, non-destructive profile, so the bar is lower. The description still adds real context beyond them: the required User API key auth header (api-access-token) and the note that text/IDs may arrive in Persian or Arabic-Indic digits and are passed through unchanged — behaviorally relevant for invocation.

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 core purpose is front-loaded in the first line, with endpoint and auth details following compactly. The Persian/Arabic-Indic digit note is niche but short, and everything is stated without padding or repetition.

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

Completeness3/5

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

Auth, endpoint, and the Digit/language quirk are covered, and annotations carry the safety profile. The main gap is that with no output schema, the description never indicates which conversation metrics are returned or their shape, leaving the agent unable to anticipate the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents account_id, type, and user_id. The description adds nothing about parameter meaning, format, or the 'type=agent' enum value beyond what the schema provides, so it lands at the baseline for well-covered schemas.

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

Purpose4/5

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

The description states a specific verb and resource ('Get conversation metrics for Agent') and anchors it with the endpoint path GET /reports/conversations/, so the agent knows exactly what it does. However, it does not distinguish itself from near-siblings like gapify_account_conversation_metrics or gapify_get_account_reports_summary, leaving ambiguity about which report endpoint to pick.

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

Usage Guidelines3/5

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

The '[Reports]' tag and 'Agent' scoping imply this is for agent-level reporting, but there is no explicit when-to-use or when-not-to-use guidance, and no named alternative among the several report-related siblings. Usage is only implied, not stated.

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

gapify_assign_conversationConversation Assignment: Assign ConversationB

Assign a conversation to an agent or a team [Conversation Assignment] POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/assignments Auth: User API key (header api-access-token). Body fields: assignee_id, team_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoId of the team. If the assignee_id is present, this param would be ignored Example: 0
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
assignee_idNoId of the assignee user Example: 0
conversation_idYesThe numeric ID of the conversation

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare mutating (readOnlyHint=false), non-idempotent, non-destructive, open-world behavior. The description usefully adds the auth requirement (User API key header) and language/digit handling context, but does not say what a reassignment replaces, whether the prior assignee is notified, or permission requirements.

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

Conciseness4/5

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

The core purpose is front-loaded, followed by endpoint, auth, and param notes in a compact block. It is somewhat dense (mixing endpoint/auth/body/language into one paragraph) but no sentence is truly wasted.

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

Completeness3/5

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

For a mutation tool with no output schema, the description covers endpoint, auth, body fields, and passthrough but omits success/return behavior and side effects. Adequate to invoke but incomplete on outcome expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 baseline is 3. The description restates body fields (assignee_id, team_id) and the extra_body passthrough that the schema already documents in detail, adding little beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource ("Assign a conversation to an agent or a team") and even includes the exact REST endpoint, making scope unambiguous. It distinguishes itself clearly from siblings like create_conversation or toggle_conversation_status.

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 never says when to use this tool versus alternatives, nor does it state prerequisites or exclusions. The only conditional behavior (team_id ignored when assignee_id is present) is in the schema, not framed as guidance in the description.

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

gapify_client_create_contactContacts API: Create a contactB

Create a contact [Contacts API] POST /public/api/v1/inboxes/{inbox_identifier}/contacts Body fields: identifier, identifier_hash, email, name, phone_number, avatar_url, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the contact
emailNoEmail of the contact Example: "user@example.com"
avatar_urlNoThe url to a jpeg, png file for the user avatar Example: "https://example.com"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
identifierNoExternal identifier of the contact
phone_numberNoPhone number of the contact
identifier_hashNoIdentifier hash prepared for HMAC authentication
inbox_identifierYesThe identifier obtained from API inbox channel
custom_attributesNoCustom attributes of the customer Example: {}

TDQS

B3.3/5.0
Behavior4/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, openWorldHint=true), so the bar is lower. The description adds real behavioral context beyond that: the extra_body merge escape hatch, and that text is sent unchanged in any language while Persian/Arabic-Indic digits are accepted in IDs and phone numbers. It still omits error/duplicate behavior and auth requirements for identifier_hash.

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?

Front-loaded with the verb and endpoint, which is good, but the enumeration of body fields duplicates the schema almost verbatim and consumes most of the description without adding meaning. The language/digit sentence is the only part that clearly 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 create-mutation with no output schema, the description covers the endpoint and inputs but says nothing about the response (created contact payload), error conditions such as duplicate identifiers, or required permissions. Annotations cover the safety profile, so the gap is moderate rather than severe.

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

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 each field and the baseline is 3. The description largely re-lists the same fields, though the note about Persian/Arabic-Indic digits in IDs, numbers and phone numbers adds genuine input-format semantics the schema does not carry.

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

Purpose4/5

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

States a specific verb and resource ('Create a contact') and pins it to a concrete endpoint (POST /public/api/v1/inboxes/{inbox_identifier}/contacts), so the agent knows exactly what happens. It does not distinguish itself from the sibling gapify_create_contact or gapify_client_create_contact, leaving the agent to infer which API surface applies.

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 prerequisites, and no mention of the near-identical siblings gapify_create_contact / gapify_client_get_contact / gapify_client_update_contact. The agent must guess whether this is the public-API variant or the conversational-client variant.

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

gapify_client_create_conversationConversations API: Create a conversationB

Create a conversation [Conversations API] POST /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations Body fields: custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
inbox_identifierYesThe identifier obtained from API inbox channel
custom_attributesNoCustom attributes of the conversation Example: {}
contact_identifierYesThe source id of contact obtained on contact create

TDQS

B3.2/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, idempotentHint=false, openWorldHint=true, destructiveHint=false), so the description need not restate them. It adds some real context: the endpoint path, the ability to pass extra body fields via extra_body, and the fact that text and digits are forwarded unchanged. It says nothing about auth requirements, duplicate handling, or what a successful creation yields.

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 core action is front-loaded in the first clause, followed by the endpoint and body information in a compact block. The Persian-digit sentence is somewhat tangential but is relevant to how input values are handled, 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?

With no output schema and a mutation tool, the description should carry more of the behavioral burden. It covers the endpoint, the body shape, and the extra_body escape hatch, but omits error conditions, authentication expectations, and any notion of what the call returns, leaving gaps for a non-idempotent create operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters, making 3 the baseline. The description's only additive note is that values may be supplied in Persian or Arabic-Indic digits and are sent unchanged, which is a marginal semantic detail rather than a substantive clarification of inbox_identifier or contact_identifier.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a conversation') and even pins the exact REST endpoint, which removes ambiguity about what is being created. However, it never distinguishes this client-scoped variant from the sibling gapify_create_conversation, so an agent must infer the difference from the '[Conversations API]' tag and the inbox/contact path.

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 the closely related sibling gapify_create_conversation. An agent choosing between the two create-conversation tools gets no routing signal.

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

gapify_client_create_messageMessages API: Create a messageB

Create a message [Messages API] POST /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages Body fields: content, echo_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoContent for the message
echo_idNoTemporary identifier which will be passed back via websockets
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
conversation_idYesThe numeric ID of the conversation
inbox_identifierYesThe identifier obtained from API inbox channel
contact_identifierYesThe source id of contact obtained on contact create

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (write op, non-idempotent, non-destructive, open-world). Beyond that, the description usefully discloses that text is sent unchanged and that Persian/Arabic-Indic digits are accepted for IDs and numbers, plus the extra_body merge mechanism. It omits auth requirements and error behavior, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with the action, then the endpoint, then body fields, then the language/digit note. It is appropriately short and every sentence carries information; the Persian/Arabic-Indic note is slightly tangential but plausibly useful for this locale-focused API.

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 6-parameter mutation tool with no output schema, the description covers the call surface (endpoint, body fields, extra_body) but says nothing about what a successful create returns, error modes, or that echo_id comes back over websockets (only in the schema). Adequate but with clear gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents content, echo_id, extra_body and the three identifiers in detail; baseline is 3. The description restates the body fields (content, echo_id) and clarifies the extra_body escape hatch, but adds little beyond the schema's own descriptions.

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

Purpose4/5

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

States a specific verb+resource ('Create a message') and even gives the full POST endpoint path with the resource hierarchy, so the agent knows exactly what it does. However, it never distinguishes this 'client' message creation from the sibling gapify_create_message, leaving the split between the two API surfaces 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 when-to-use guidance, no prerequisites (e.g. that a conversation must exist first), and no named alternative among the many message-related siblings (gapify_create_message, gapify_client_update_message). The endpoint path implies context but provides no explicit routing advice.

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

gapify_client_get_contactContacts API: Get a contactB
Read-onlyIdempotent

Get the details of a contact [Contacts API] GET /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier} Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_identifierYesThe identifier obtained from API inbox channel
contact_identifierYesThe source id of contact obtained on contact create

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, openWorldHint, and destructiveHint=false, so the safety profile is clear. The description adds a useful caveat that text and numeric identifiers may use Persian/Arabic-Indic digits, but it does not describe return format, error behavior, or authentication needs.

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

Conciseness4/5

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

The description is front-loaded with the operation and resource, then adds a relevant caveat. It contains no filler, though the raw endpoint is somewhat redundant with the schema.

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 tool, the description plus rich annotations and full schema coverage is largely sufficient to call it. It still lacks sibling differentiation and does not explain what contact details are returned, which would help an agent use the result.

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

Parameters3/5

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

Schema description coverage is 100%, so both required parameters are fully documented there. The description mirrors the endpoint placeholders and adds a note about digit encoding, but provides no per-parameter meaning beyond what the schema already supplies.

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

Purpose4/5

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

States a specific verb and resource ('Get the details of a contact') and includes the API endpoint, making the basic operation clear. However, it does not differentiate this client contact fetch from similar siblings like gapify_get_contact or gapify_list_contacts.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use, when-not, or alternative guidance. An agent must infer that this tool is for retrieving a known contact rather than listing or searching.

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

gapify_client_get_inboxInbox API: Inbox detailsB
Read-onlyIdempotent

Get the details of an inbox [Inbox API] GET /public/api/v1/inboxes/{inbox_identifier} Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_identifierYesThe identifier obtained from API inbox channel

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 carried by structured data. The description adds real value beyond that with the endpoint path (confirming a single-resource fetch) and the note that Persian/Arabic-Indic digits may appear in IDs and numbers unchanged, which is useful for input normalization. It still says nothing about response content or error behavior.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, followed by the endpoint and a compact encoding note. It is appropriately short and every sentence carries some information, though the Persian/Arabic-Indic digit note reads as boilerplate and slightly dilutes focus.

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 remains the only source for return-shape information, and it never says what "details" an inbox returns. For a single-parameter read tool whose annotations already cover the safety profile, this is adequate but leaves a real gap around what the caller receives.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 the single inbox_identifier parameter, so the baseline is 3. The endpoint path in the description implicitly confirms it is a path parameter, but no additional syntax, format, or sourcing guidance is provided beyond what the schema already states.

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

Purpose4/5

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

The description states a specific verb+resource ("Get the details of an inbox") and even pins the underlying endpoint, so the operation is unambiguous. However, the sibling list contains gapify_get_inbox as well as gapify_list_inboxes, gapify_create_inbox, and gapify_update_inbox, and nothing in the description distinguishes this "client" variant from the platform-side get. The purpose is clear but sibling differentiation is absent.

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 stated prerequisites, and no named alternative. The description does not tell an agent when to prefer gapify_client_get_inbox over gapify_get_inbox or gapify_list_inboxes, which is exactly the ambiguity a sibling-heavy toolset creates.

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

gapify_client_list_conversationsConversations API: List all conversationsA
Read-onlyIdempotent

List all conversations for the contact [Conversations API] GET /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_identifierYesThe identifier obtained from API inbox channel
contact_identifierYesThe source id of contact obtained on contact create

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, openWorld and non-destructive, so the safety profile is covered. The description adds real context beyond that: the required auth scheme ('User API key' in an `api-access-token` header) and the caveat that Persian/Arabic-Indic digits and multilingual text pass through unchanged, which matters for matching identifiers and output.

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

Conciseness4/5

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

Front-loads the purpose in one sentence, then gives endpoint, auth, and an encoding caveat compactly. The digit/language sentence is somewhat boilerplate for a list call but is short and does not bloat the definition.

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

Completeness3/5

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

Covers scope and auth adequately for a read-only list call, but with no output schema it says nothing about the return shape, pagination, or whether empty results are possible. An agent knows how to call it but not what to expect 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 both parameters are documented in-schema, so the baseline is 3. The description adds nothing about format beyond the URL template, and the multi-language digit note is at best tangential to how the identifiers should be supplied.

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

Purpose4/5

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

States a specific verb and resource ('List all conversations for the contact') and pins the scope via the GET path with inbox and contact identifiers. This distinguishes it from the broader gapify_list_conversations, though it does not explicitly contrast with the near-identical sibling gapify_list_contact_conversations.

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

Usage Guidelines3/5

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

Usage is only implied by the scoping path: you need an inbox and contact identifier, so it is for per-contact conversation retrieval. It never names when to prefer this over gapify_list_contact_conversations or gapify_filter_conversations, nor any prerequisites beyond auth.

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

gapify_client_list_messagesMessages API: List all messagesA
Read-onlyIdempotent

List all messages in the conversation [Messages API] GET /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesThe numeric ID of the conversation
inbox_identifierYesThe identifier obtained from API inbox channel
contact_identifierYesThe source id of contact obtained on contact create

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/non-destructive behavior, so the bar is lower, and the description adds two concrete traits beyond them: the required auth header (api-access-token) and the data-encoding caveat that text may arrive in Persian and digits may be Persian/Arabic-Indic. It omits return shape and pagination behavior, keeping it out of the top band.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, followed by the endpoint and auth, with the encoding caveat last. It is compact overall, though the Persian-digit sentence is somewhat tangential to listing messages.

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 list tool with no output schema, the description never indicates what is returned (message fields, ordering) or whether results are paginated/limited, which an agent needs before calling. Auth and encoding details are covered, but the return-side gap keeps this at minimum viable.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three required identifiers and their meaning. The description adds only the endpoint template, which restates where each parameter belongs rather than adding new semantic detail, matching the 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?

The description names a specific verb and resource ('List all messages in the conversation') and pins the resource with an explicit endpoint path showing the inbox/contact/conversation hierarchy. It does not, however, distinguish this client-facing tool from the platform sibling gapify_get_messages, so an agent can't route between them from the text 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?

Usage is only implied by the endpoint path and the 'User API key' auth note, which signals the public/client API scope. There is no explicit when-to-use, when-not-to-use, or reference to the sibling gapify_get_messages alternative.

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

gapify_client_update_contactContacts API: Update a contactA

Update a contact's attributes [Contacts API] PATCH /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier} Body fields: identifier, identifier_hash, email, name, phone_number, avatar_url, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the contact
emailNoEmail of the contact Example: "user@example.com"
avatar_urlNoThe url to a jpeg, png file for the user avatar Example: "https://example.com"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
identifierNoExternal identifier of the contact
phone_numberNoPhone number of the contact
identifier_hashNoIdentifier hash prepared for HMAC authentication
inbox_identifierYesThe identifier obtained from API inbox channel
custom_attributesNoCustom attributes of the customer Example: {}
contact_identifierYesThe source id of contact obtained on contact create

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true), so the bar is lower. The description goes beyond them usefully by disclosing the extra_body merge mechanism and the fact that text is sent unchanged with Persian/Arabic-Indic digit support. It still omits whether unspecified fields are left intact (partial vs full update), which matters for a PATCH.

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

Conciseness4/5

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

Front-loaded with the action and endpoint, followed by the body-field inventory and one encoding caveat; nothing is padded. The body-field enumeration is the weakest part since it repeats the schema, but it is brief.

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

Completeness3/5

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

No output schema exists, so return values need not be described, and all ten parameters are documented in the schema. What is missing is update semantics (partial vs full replace), auth/permission expectations, and any sibling disambiguation for a tool with several near-identical update neighbors.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description lifts it by naming the accepted body fields as a set, explaining how extra_body carries unlisted keys, and adding an input-format rule for identifiers/numbers/phone numbers (Persian or Arabic-Indic digits). The field list itself is largely redundant with the schema.

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

Purpose4/5

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

States a specific verb and resource ('Update a contact's attributes') and pins down the exact HTTP method and path, so the agent knows this is an inbox-scoped PATCH. It does not, however, differentiate itself from the sibling gapify_update_contact, leaving the agent to infer which contact-update variant applies.

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 prerequisites (e.g. needing the inbox identifier from the inbox channel), and no routing to or away from the sibling gapify_update_contact or gapify_get_contact. The only context is the raw endpoint path, which the agent must interpret on its own.

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

gapify_client_update_messageMessages API: Update a messageB

Update a message [Messages API] PATCH /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}/conversations/{conversation_id}/messages/{message_id} Body fields: submitted_values. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
message_idYesThe numeric ID of the message
conversation_idYesThe numeric ID of the conversation
inbox_identifierYesThe identifier obtained from API inbox channel
submitted_valuesNoValues the contact submitted for an interactive message (form, input_select or cards).
contact_identifierYesThe source id of contact obtained on contact create

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare non-readOnly, non-idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds real value with the encoding/language disclosure (values sent unchanged, Persian or Arabic-Indic digits accepted), but says nothing about permissions, side effects, or what the update returns.

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

Conciseness4/5

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

Front-loads the action and endpoint, then lists body fields and the encoding caveat. Each sentence carries information; the endpoint URL is verbose but legitimately precise for a client API wrapper.

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 description covers inputs reasonably but omits what the response contains, what happens to unmodified message fields, and any auth requirements. Adequate but with clear gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six parameters thoroughly. The description reinforces submitted_values and extra_body and adds a genuinely useful note about Persian/Arabic-Indic digits being sent unchanged, but offers no syntax or format detail beyond the schema.

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

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 message') and pins it to a concrete PATCH endpoint, so an agent can distinguish it from siblings like gapify_create_message and gapify_delete_message. It stops short of describing what aspects of a message are actually mutable beyond the submitted_values field.

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 update versus create/delete a message, and no prerequisites or alternative tools are named. The agent must infer usage entirely from the method name and path.

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

gapify_create_agent_botAccount AgentBots: Create an Agent BotA

Create an agent bot in the account [Account AgentBots] POST /api/v1/accounts/{account_id}/agent_bots Auth: User API key (header api-access-token). Body fields: name, description, outgoing_url. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the agent bot
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the agent bot
outgoing_urlNoThe webhook URL for the bot Example: "https://example.com"

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the write/idempotency/open-world profile, but the description adds genuinely useful behavioral context: the required auth header, the exact endpoint, the extra_body merge escape hatch, and that non-Latin text and Persian/Arabic-Indic digits are passed through unchanged. That goes meaningfully beyond the structured fields.

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

Conciseness4/5

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

Front-loaded with the purpose, then endpoint, auth, body fields and edge-case note in a tight block. No filler sentences, though the line-broken spec-style formatting is slightly dense.

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 create tool with no output schema, the definition covers auth, endpoint, body fields, the extra_body escape hatch and text/digit handling — enough to call it correctly. It stops short of stating what is returned or whether the new bot id is needed downstream.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 name, account_id, description, outgoing_url and extra_body are already documented at baseline 3. The description reiterates the three body fields and clarifies how extra_body works, but adds no format or constraint detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an agent bot in the account') and scopes it by HTTP endpoint, so the action is unambiguous. However it offers no differentiation from the near-duplicate sibling gapify_platform_create_agent_bot, leaving the agent to guess which create tool to pick.

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

Usage Guidelines2/5

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

It provides context ('Account AgentBots', endpoint path) but never says when to choose this tool over alternatives, nor any exclusions or prerequisites beyond the auth line. With a nearly identical sibling creator present, the absence of routing guidance is a real gap.

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

gapify_create_contactContacts: Create ContactB

Create a new contact in the account [Contacts] POST /api/v1/accounts/{account_id}/contacts Auth: User API key (header api-access-token). Body fields: inbox_id (required), name, email, phone_number, avatar, avatar_url, identifier, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoname of the contact
emailNoemail of the contact Example: "user@example.com"
avatarNoSend the form data with the avatar image binary or use the avatar_url
inbox_idYesNumeric ID of the inbox. Example: 0
account_idYesThe numeric ID of the account
avatar_urlNoThe url to a jpeg, png file for the contact avatar Example: "https://example.com"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
identifierNoA unique identifier for the contact in external system
phone_numberNophone number of the contact
custom_attributesNoAn object where you can store custom attributes for contact. example {"type":"customer", "age":30} Example: {}

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the write profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false), so the safety bar is low. The description adds real value beyond that: the required auth header, the exact endpoint, and the note that text/IDs are sent unchanged and may contain Persian or Arabic-Indic digits. It does not say what happens on a duplicate email or identifier, which matters for a non-idempotent create.

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

Conciseness4/5

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

Front-loads the action and endpoint, then auth, then body fields -- a sensible order. The body-field list largely restates the schema, which is mild redundancy, but the added language/digit note justifies the length and nothing is padded.

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

Completeness4/5

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

For a 10-parameter write tool with nested objects, no output schema and no idempotency guarantee, the description covers endpoint, auth, required fields, field list, the extra_body escape hatch, and input encoding. What it omits is failure/duplicate behavior and the distinction from the client-side sibling, which are the remaining reasons an agent could still mis-call it.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents every field. The description earns above baseline by adding input-format nuance the schema omits: values pass through unchanged, and identifiers/phone numbers may use Persian or Arabic-Indic digits, which directly affects how a caller should format inbox_id and account_id.

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

Purpose4/5

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

States a specific verb+resource ("Create a new contact in the account") and includes the endpoint, so the operation is unambiguous. However, it never distinguishes itself from the sibling gapify_client_create_contact, which addresses the same resource from a different API surface, so an agent cannot route between them from the description alone.

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

Usage Guidelines2/5

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

The description gives prerequisites (auth header, required inbox_id) but no when-to-use guidance and names no alternative. The critical ambiguity -- gapify_create_contact vs gapify_client_create_contact -- is left entirely unaddressed, and no note about duplicates or pre-checks is offered.

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

gapify_create_contact_inboxContacts: Create contact inboxA

Create a contact inbox record for an inbox [Contacts] POST /api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes Auth: User API key (header api-access-token). Body fields: inbox_id (required), source_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
inbox_idYesThe ID of the inbox Example: 0
source_idNoContact Inbox Source Id
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, openWorld; the description goes further by naming the auth mechanism and exact header (api-access-token), disclosing the extra_body escape hatch, and warning that text may be Persian/Farsi and digits may be Arabic-Indic and are passed through unchanged — a genuinely useful non-obvious behavior. It stops short of saying what happens on duplicate creation or what the response contains.

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

Conciseness4/5

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

Front-loaded with the core action before endpoint/auth/body details, and each sentence carries information. The HTTP verb/path line is somewhat redundant with the tool name, and the Farsi/digit note is lengthy, but nothing is wasted.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers auth, required body fields, the extra_body mechanism and an encoding caveat, and annotations carry the safety profile. It omits return shape and failure/duplicate behavior, but is usable as written for a 5-parameter endpoint.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents id, inbox_id, source_id, account_id and extra_body. The description restates the body fields and marks inbox_id required, adding minimal semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource ('Create a contact inbox record for an inbox') and reinforces it with the exact endpoint POST /api/v1/accounts/{account_id}/contacts/{id}/contact_inboxes. This is clearly a join/link operation distinct from gapify_create_contact, though it never explicitly contrasts itself with sibling tools like get_contactable_inboxes or create_contact.

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 resource name and the required path components (account_id, id, inbox_id), so an agent can infer you need an existing contact and inbox. However, there is no explicit when-to-use statement, no prerequisite note (e.g., that the contact must already exist, or when to prefer this over assigning an inbox another way), and no alternatives named among the many sibling tools.

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

gapify_create_conversationConversations: Create New ConversationA

Create a conversation for a contact in an inbox. Requires the contact inbox source_id (see gapify_create_contact_inbox) [Conversations] POST /api/v1/accounts/{account_id}/conversations Auth: User API key or Agent bot API key (header api-access-token). Body fields: source_id (required), inbox_id (required), contact_id, additional_attributes, custom_attributes, status, assignee_id, team_id, message. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoInitial status of the conversation. One of: `open`, `resolved`, `pending`. Example: "open"
messageNoThe initial message to be sent to the conversation Example: {"content":"string","template_params":{"name":"sample_issue_resolution","category":"UTILITY","language":"en_US","processed_params":{"1":"Gapify"}}}
team_idNoTeam Id for assigning a conversation to a team
inbox_idYesId of inbox in which the conversation is created <br/> Allowed Inbox Types: Website, Phone, Api, Email
source_idYesConversation source id
account_idYesThe numeric ID of the account
contact_idNoContact Id for which conversation is created
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
assignee_idNoAgent Id for assigning a conversation to an agent
custom_attributesNoThe object to save custom attributes for conversation, accepts custom attributes key and value Example: {"attribute_key":"attribute_value","priority_conversation_number":3}
additional_attributesNoLets you specify attributes like browser information Example: {}

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true. The description adds valuable context beyond those annotations: required auth headers (User API key or Agent bot API key), support for extra_body, and the fact that Persian/Arabic-Indic digits are accepted in IDs and numbers.

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

Conciseness4/5

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

The description is front-loaded with the purpose and then provides useful operational details (endpoint, auth, body fields, extra_body, language note). It is reasonably concise for an 11-parameter tool, though the body-fields list partially duplicates what the schema already provides.

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 11 parameters, nested objects, no output schema, and the available annotations, the description covers the essential context: purpose, required fields, auth, endpoint, extra_body, and language/digit handling. It omits account_id as a required path parameter in the body-fields list, but that is implied by the endpoint, and no output schema exists to explain.

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 meaning beyond the schema by clarifying that source_id comes from gapify_create_contact_inbox and by noting language and digit handling for text values, which is not captured in the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create a conversation for a contact in an inbox.' It also gives the exact endpoint and required source_id. However, it does not explicitly differentiate this from the sibling gapify_client_create_conversation, which is the most similar 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?

Usage context is implied by the prerequisite note '(see gapify_create_contact_inbox)' and the auth requirements, but there is no explicit guidance on when to choose this tool versus gapify_client_create_conversation or gapify_create_message, nor when not to use it.

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

gapify_create_custom_filterCustom Filters: Create a custom filterA

Create a custom filter in the account [Custom Filters] POST /api/v1/accounts/{account_id}/custom_filters Auth: User API key (header api-access-token). Body fields: name, type, query. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the custom filter
typeNoType of the custom filter. One of: `conversation`, `contact`, `report`. Example: "conversation"
queryNoA query that needs to be saved as a custom filter Example: {}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
filter_typeNoQuery param. The type of custom filter One of: `conversation`, `contact`, `report` Example: conversation

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the write profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), so the safety bar is partially met. The description adds genuine context beyond annotations: the required auth header ('api-access-token'), the exact endpoint, that extra keys go through extra_body, and that Persian/Arabic-Indic text and digits are passed through unchanged.

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

Conciseness4/5

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

Front-loaded with the purpose, followed by endpoint, auth, and body-field notes in a compact block. Every line carries information, though the encoding/language note is somewhat tangential for a create call.

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 non-idempotent create tool with no output schema, the description supplies endpoint, auth requirement, body fields, and an encoding caveat, while annotations carry the safety profile. An agent has enough to invoke it correctly; only a note on what a successful create returns or whether the name must be unique 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 the schema already documents all six parameters including the type enum values and extra_body. The description recaps the main body fields (name, type, query) and mentions extra_body, adding marginal value but no syntax or semantics the schema lacks. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Create a custom filter in the account') and even names the API endpoint. It clearly distinguishes the create operation from siblings like gapify_update_custom_filter and gapify_list_custom_filters by virtue of the verb, though it never explicitly references them.

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

Usage Guidelines3/5

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

Usage is implied: this is the tool to add a new saved filter. There is no explicit when-to-use versus update/delete/get, no prerequisites, and no guidance on choosing between creating a filter here vs using a list/filter query tool. 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.

gapify_create_inboxInboxes: Create an inboxA

Create a new inbox (channel) in the account [Inboxes] POST /api/v1/accounts/{account_id}/inboxes/ Auth: User API key (header api-access-token). Body fields: name, avatar, channel. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the inbox
avatarNoFile for avatar image
channelNoChannel settings object. For a website inbox: {type: "web_widget", website_url, welcome_title, welcome_tagline, agent_away_message, widget_color}. Text values may be Persian. Example: {"type":"web_widget","website_url":"https://example.com","welcome_title":"string","welcome_tagline":"string","agent_away_message":"string","widget_color":"string"}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the write/idempotency/open-world profile, so the bar is lower, yet the description adds real context beyond them: the required User API key header, the fact that extra_body fields are merged into the request, and the unusual behavior that Persian/Arabic-Indic text and digits are forwarded unchanged. It does not say what the call returns, which is the remaining gap.

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

Conciseness4/5

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

Front-loaded with the purpose, then compactly layers endpoint, auth, body fields, and encoding notes; every sentence carries information. Slightly dense but 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?

With no output schema, nothing tells the agent what a successful create returns (e.g., the new inbox ID) or what errors to expect, which matters for a non-idempotent mutation that downstream calls must reference. Auth, body, and encoding are otherwise covered adequately for a 5-param tool.

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

Parameters4/5

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

Schema description coverage is 100%, so a 3 is the baseline, but the description adds semantics the schema lacks: which body fields are accepted (name, avatar, channel), the escape hatch via extra_body, and the language/digit normalization behavior for text and numeric values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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+resource ("Create a new inbox (channel) in the account") and even names the endpoint, so an agent knows exactly what operation this is. It is distinguishable from the read/list siblings by the verb, though it does not explicitly contrast with the nearby gapify_create_contact_inbox, which is a different resource.

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

Usage Guidelines3/5

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

Usage is only implied by the create verb; there is no statement of when to prefer this over alternatives such as gapify_client_create_inbox or gapify_raw_request, and no prerequisites or exclusions. The auth header note gives useful context but not when-to-use guidance.

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

gapify_create_integration_hookIntegrations: Create an integration hookA

Create an integration hook [Integrations] POST /api/v1/accounts/{account_id}/integrations/hooks Auth: User API key (header api-access-token). Body fields: app_id, inbox_id, settings. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idNoThe ID of app for which integration hook is being created
inbox_idNoThe inbox ID, if the hook is an inbox hook
settingsNoThe settings required by the integration Example: {}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the safety profile (non-readOnly, non-destructive, openWorld, non-idempotent), so the bar is lower. The description adds real value beyond them: the required auth mechanism (User API key in an `api-access-token` header), the extra_body passthrough behavior, and the Persian/Arabic-Indic digit handling. It still omits response behavior, but that is a minor gap against annotation coverage.

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

Conciseness4/5

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

Compact and front-loaded, leading with the create action before the endpoint path, auth, fields, and notes. The POST path and header details are functional rather than filler, though the block is somewhat dense.

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 create-style mutation with no output schema, the description covers auth, body fields, the extra_body escape hatch, and an important input-encoding quirk. Annotations handle the safety profile, so the remaining omission of return/pagination behavior is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 restates the body fields (app_id, inbox_id, settings) and explains extra_body, matching the schema, but adds no syntax or format detail beyond what the schema already documents.

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

Purpose4/5

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

States a specific verb+resource ('Create an integration hook') that clearly distinguishes it from sibling update/delete/list integration tools. However, it never explicitly names an alternative or clarifies scope beyond the verb, 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 vs when-not-to-use guidance, no prerequisites, and no routing to alternatives like gapify_update_integration_hook or gapify_delete_integration_hook. The listing of body fields and the inbox_id hint imply scope but provide no usage direction.

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

gapify_create_messageMessages: Create New MessageA

Send a new message or private note in a conversation [Messages] POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages Auth: User API key or Agent bot API key (header api-access-token). Body fields: content (required), message_type, private, content_type, content_attributes, template_params. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesText of the message. Any language, including Persian, is sent unchanged.
privateNoFlag to identify if it is a private note Example: false
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
content_typeNoContent type of the message. One of: `text`, `input_email`, `cards`, `input_select`, `form`, `article`. Use `text` for normal messages. Example: "cards"
message_typeNoDirection of the message. One of: `outgoing` (agent to contact), `incoming`. Example: "outgoing"
conversation_idYesThe numeric ID of the conversation
template_paramsNoThe template params for the message in case of whatsapp Channel Example: {"name":"sample_issue_resolution","category":"UTILITY","language":"en_US","processed_params":{"1":"Gapify"}}
content_attributesNoattributes based on your content type Example: {}

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the write/non-idempotent/open-world profile, and the description adds genuinely new behavioral context: auth requirements (User API key or Agent bot API key via api-access-token header), the extra_body escape hatch, and the encoding rule for Persian/Arabic-Indic digits. It doesn't cover rate limits or return behavior, but adds real value beyond 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?

Purpose is front-loaded, followed by endpoint, auth, and field summary. It is dense with technical detail but each clause (auth, body fields, extra_body, digit handling) carries information, so little is wasted.

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

Completeness4/5

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

For a create-message tool with no output schema and full schema coverage, the description supplies the required-parameter emphasis, auth modes, and language handling. Return-value behavior is unspecified but not needed given no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly; the baseline is 3. The description lists the body fields and clarifies extra_body but adds little syntax or format detail beyond the schema.

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

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 new message or private note in a conversation') and anchors it with the concrete endpoint POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages. An agent can immediately distinguish this from read siblings like gapify_get_messages and delete_message.

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 purpose and endpoint, but there is no explicit when-to-use vs the very similar gapify_client_create_message or gapify_raw_request. No exclusions or conditions are stated, leaving routing to inference.

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

gapify_create_teamTeams: Create a teamA

Create a team in the account [Teams] POST /api/v1/accounts/{account_id}/teams Auth: User API key (header api-access-token). Body fields: name, description, allow_auto_assign. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the team
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description of the team
allow_auto_assignNoIf this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team Example: false

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-destructive, non-idempotent, open-world write. The description adds real context beyond that: the required User API key header, the extra_body merge behavior, and how Persian/Arabic-Indic text and digits are handled. It omits return/side-effect details, but the annotation baseline lowers the burden.

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

Conciseness4/5

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

Front-loads the purpose, then auth, body fields, and encoding notes. Mostly compact, though the raw POST path and full endpoint add some implementation noise for an agent that only needs the action and inputs.

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

Completeness4/5

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

For a 5-parameter create tool with a nested extra_body object and no output schema, the description covers auth, the body contract, and the passthrough mechanism well. It does not describe the created resource's shape, which is a minor gap given no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is already documented. The description restates the body field names (name, description, allow_auto_assign) and clarifies that account_id is a path element, but adds no format or constraint 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 and resource ('Create a team in the account'), which cleanly distinguishes it from the get/update/delete/list team siblings. It does not explicitly name an alternative, but the action itself is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied by the verb 'Create'; there is no explicit when-to-use vs. when-not guidance or reference to sibling tools such as gapify_update_team or gapify_list_teams. The note about extra_body hints at an escape hatch but does not frame usage conditions.

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

gapify_delete_agent_botAccount AgentBots: Delete an AgentBotA
DestructiveIdempotent

Delete an agent bot from the account [Account AgentBots] DELETE /api/v1/accounts/{account_id}/agent_bots/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated
account_idYesThe numeric ID of the account

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description still adds real value beyond them: the auth requirement (User API key in the api-access-token header) and the explicit confirmation that the deletion is permanent. It stops short of describing side effects on conversations or inboxes referencing the bot.

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

Conciseness4/5

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

Front-loaded with the action, then the endpoint and auth in tight sentences with no wasted prose. The Persian/Arabic-Indic digit note is boilerplate but is short and operationally relevant, so it 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 two-parameter destructive DELETE with full-100% schema coverage and no output schema, the description supplies the action, endpoint, auth header and permanence warning — everything needed to invoke it correctly. Only cascading-effect details are absent, which is a minor omission given the annotation coverage.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely useful encoding guidance — IDs and numbers may be supplied with Persian or Arabic-Indic digits — which directly affects how account_id and id should be formatted. This is meaning the schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an agent bot from the account') plus the exact endpoint, so the action and scope are unambiguous. However, with near-identical siblings like gapify_platform_delete_agent_bot and gapify_remove_agent in the list, the description never explains what distinguishes this account-level bot deletion from 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?

The only guidance is the 'Destructive' warning; there is no statement of when to use this tool versus gapify_platform_delete_agent_bot or gapify_remove_agent, nor any prerequisite or caution about irreversibility beyond the single word. An agent gets no routing logic from the text.

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

gapify_delete_contactContacts: Delete ContactA
DestructiveIdempotent

Delete a contact by ID [Contacts] DELETE /api/v1/accounts/{account_id}/contacts/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
account_idYesThe numeric ID of the account

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's 'permanently deletes' line mostly reinforces existing signal. It does add genuine value beyond the structured fields: the required auth header (api-access-token / User API key) and the note that Persian/Arabic-Indic digits are accepted unchanged.

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

Conciseness4/5

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

Front-loads the core action ('Delete a contact by ID') and keeps supporting detail in short lines. The raw HTTP endpoint line is slightly redundant with the operation, but overall it is efficient and well ordered.

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 no output schema, the description covers the essentials: destructive permanence, auth requirements, and ID formatting. It stops short of stating what happens to dependent contacts or conversations, but is close to complete for this operation.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (id, account_id) are already documented in the schema. The description adds only the digit-format note about IDs and numbers, which is a modest format hint rather than new parameter meaning. 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 (Delete), resource (contact), and key (by ID), immediately distinguishable from siblings like gapify_update_contact, gapify_get_contact, and gapify_create_contact. An agent can identify the correct operation 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 description says what it does but gives no when-to-use framing, no prerequisites, and never references the parent-account scoping or any alternative. Usage is only implied by the operation name, which is the minimum viable level.

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

gapify_delete_custom_filterCustom Filters: Delete a custom filterA
DestructiveIdempotent

Delete a custom filter from the account [Custom Filters] DELETE /api/v1/accounts/{account_id}/custom_filters/{custom_filter_id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
custom_filter_idYesThe numeric ID of the custom filter

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description corroborates with explicit permanence ('permanently deletes the resource') and adds the auth requirement (User API key in the api-access-token header), which annotations do not carry. It does not say what happens when the ID does not exist, so it stops short of full coverage.

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

Conciseness4/5

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

Front-loaded with purpose and endpoint, then auth and destructiveness, which is good ordering. The trailing locale/digit sentence is only marginally relevant to a two-ID delete and slightly dilutes an otherwise tight definition.

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

Completeness4/5

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

For a simple two-parameter delete with no output schema and annotations covering safety, the description supplies purpose, endpoint, auth, and permanence. Missing only edge-case behavior (non-existent filter, cascading effects), which is minor here.

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

Parameters3/5

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

Schema description coverage is 100%, so both IDs are already documented by the schema; baseline is 3. The Persian/Arabic-Indic digit note adds a small amount of format guidance for the ID values but nothing about type coercion or the string/number union.

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

Purpose5/5

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

States a specific verb and resource ('Delete a custom filter from the account') and pins the exact endpoint DELETE /api/v1/accounts/{account_id}/custom_filters/{custom_filter_id}. The resource is unambiguous against siblings such as delete_contact, delete_team, or update_custom_filter.

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 name and the CRUD context, but the description never states when to delete versus update/remove, nor any prerequisite such as needing the filter to exist first. No alternative tool is named.

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

gapify_delete_integration_hookIntegrations: Delete an Integration HookA
DestructiveIdempotent

Delete an Integration Hook [Integrations] DELETE /api/v1/accounts/{account_id}/integrations/hooks/{hook_id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesThe numeric ID of the integration hook
account_idYesThe numeric ID of the account

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds value beyond them: the required auth mechanism (User API key in the `api-access-token` header) and the permanence wording. It doesn't cover error/permission behavior, but the auth disclosure is genuine added 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?

Front-loads the action and endpoint, then layers auth and destructiveness notes concisely. The trailing multilingual/digit boilerplate is generic padding but not enough to derail the structure.

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

Completeness4/5

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

For a two-param delete with no output schema, the description covers the essentials an agent needs to call it: identity, endpoint, auth, and destructiveness. Missing only permission/failure behavior, which is a minor gap here.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a relevant encoding nuance: IDs and numbers may be submitted with Persian or Arabic-Indic digits, which directly affects how the required hook_id/account_id values can be formatted.

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 an Integration Hook') and pins it to the exact endpoint DELETE /integrations/hooks/{hook_id}, which cleanly separates it from the sibling create/update/list integration hook tools.

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 signals destructiveness ('this permanently deletes the resource'), which implies caution, but gives no explicit when-to-use-vs-alternatives guidance (e.g. prefer update_integration_hook to modify, delete only to remove permanently). Usage is implied rather than stated.

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

gapify_delete_messageMessages: Delete a messageA
DestructiveIdempotent

Delete a message and its attachments from a conversation [Messages] DELETE /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{message_id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
message_idYesThe numeric ID of the message
conversation_idYesThe numeric ID of the conversation

TDQS

A3.9/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=true, so the safety profile is covered. The description adds genuinely useful context beyond that: the deletion also removes attachments, the auth requirement (User API key via `api-access-token` header), and that deletion is permanent.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by the endpoint and auth note. The 'Destructive: this permanently deletes the resource' line partially repeats the destructiveHint annotation, and the Persian/Arabic-Indic digit note reads as generic boilerplate, but overall the description stays compact.

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 with no output schema and full annotation coverage, the description is nearly complete: it states the resource, the cascading attachment removal, permanence, and auth. It only lacks explicit usage routing against alternatives, which is minor here.

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

Parameters3/5

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

Schema description coverage is 100% with all three IDs documented, so the baseline is 3. The URL template implicitly maps account_id/conversation_id/message_id as path parameters, but the description adds no semantics (e.g., format or ID sources) beyond what the schema provides.

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

Purpose5/5

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

States a specific verb+resource: 'Delete a message and its attachments from a conversation'. This clearly distinguishes it from siblings like gapify_get_messages, gapify_create_message, and gapify_client_update_message, and the endpoint line reinforces exactly which resource is removed.

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

Usage Guidelines3/5

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

The delete intent is implied and unambiguous for this operation, but the description offers no explicit when-to-use/when-not guidance or alternatives (e.g., that it cannot be undone, or that attachments are removed alongside the message). 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.

gapify_delete_teamTeams: Delete a teamA
DestructiveIdempotent

Delete a team from the account [Teams] DELETE /api/v1/accounts/{account_id}/teams/{team_id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
account_idYesThe numeric ID of the account

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the auth requirement (User API key in `api-access-token` header) and reinforces permanence ('permanently deletes the resource'). The input-language/digit note is useful behavioral context for callers. It does not restate the idempotency trait, but the added auth detail is real value beyond structured data.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by endpoint, auth, and destructive warning in a tight sequence. The trailing Persian/Arabic-Indic digit note is somewhat generic boilerplate but still relevant to input handling.

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-param destructive delete with no output schema and full annotation coverage, the description supplies the endpoint, auth mechanism, and irreversibility warning. Nothing essential to correct invocation is missing, though a note on what happens to team members/agents would round it out.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both required path parameters, and the endpoint string in the description confirms them. No additional syntax, format, or edge-case meaning is added, 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 ('Delete a team from the account') and even names the endpoint, so an agent can immediately distinguish it from gapify_create_team, gapify_update_team, and gapify_list_teams.

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 the API endpoint, but there is no explicit guidance on when to choose this over alternatives or any prerequisite/warning workflow before an irreversible delete. For a destructive single-purpose tool this is adequate but unhelpful beyond the obvious.

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

gapify_delete_webhookWebhooks: Delete a webhookA
DestructiveIdempotent

Delete a webhook from the account [Webhooks] DELETE /api/v1/accounts/{account_id}/webhooks/{webhook_id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
webhook_idYesThe numeric ID of the webhook

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds useful context beyond annotations by specifying the required auth header and noting that Persian/Arabic-Indic digits may be used, while also reinforcing permanence.

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

Conciseness5/5

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

The description is front-loaded with the action and resource, then quickly covers endpoint, auth, destructive behavior, and language/digit handling. Every line adds operational value 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?

For a two-parameter destructive delete with rich annotations and no output schema, the description provides everything needed: purpose, auth, endpoint, permanence, and input-format caveat. There is no meaningful missing context for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the two required ID parameters are already documented. The description adds useful format guidance that IDs and numbers may use Persian or Arabic-Indic digits, which is directly relevant to account_id and webhook_id.

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

Purpose5/5

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

The description states a specific verb and resource: "Delete a webhook from the account," and the endpoint confirms the exact scope. It is clearly distinguishable from sibling tools such as gapify_list_webhooks, gapify_add_webhook, and gapify_update_webhook.

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

Usage Guidelines4/5

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

The description gives clear context for using this tool and explicitly warns that the operation permanently deletes the resource. It does not explicitly name alternatives or when-not-to-use guidance, but the delete-specific purpose makes the selection obvious among siblings.

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

gapify_filter_contactsContacts: Contact FilterA

Filter contacts with custom filter options and pagination [Contacts] POST /api/v1/accounts/{account_id}/contacts/filter Auth: User API key or Agent bot API key (header api-access-token). Body fields: payload. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoQuery param. Page number, starting at 1.
payloadNoArray of filter conditions. Each item: {attribute_key, filter_operator (e.g. equal_to, not_equal_to, contains, does_not_contain), values: [...], query_operator: "AND" | "OR", null on the last item}. Values may be Persian text. Example: [{"attribute_key":"name","filter_operator":"equal_to","values":["en"],"query_operator":"AND"},{"attribute_key":"country_code","filter_operator":"equal_to","values":["us"],"query_operator":null}]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare a non-read-only, open-world, non-idempotent profile, and the description corroborates this by disclosing the raw HTTP surface (POST endpoint) and the auth requirement (User API key or Agent bot API key via `api-access-token` header). The Persian/Farsi and Arabic-Indic digit passthrough note is genuinely useful behavioral context not derivable from annotations or schema.

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

Conciseness4/5

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

The definition is front-loaded with the purpose, then method, auth, and body fields in compact fashion. The closing digit-encoding sentence is somewhat tangential but short and adds distinct value; overall little waste.

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

Completeness4/5

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

With no output schema, the description supplies the endpoint, HTTP method, auth scheme, body-field pointer, and the extra_body escape hatch, which is adequate context for calling this nested-payload filter. Sibling differentiation is the main gap, but the mechanics of invocation are well covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents page, payload, account_id, and extra_body. The description only restates that 'payload' is the body field and that extra_body carries unlisted keys, adding 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 clear verb+resource: 'Filter contacts with custom filter options and pagination.' This distinguishes it from plain listing, and the 'custom filter options' phrasing signals the structured payload approach. However it never names the alternatives (gapify_list_contacts, gapify_search_contacts), so the agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Usage is only implied. The description mentions custom filter options and pagination but gives no explicit when-to-use or when-not-to-use versus siblings like search_contacts or list_contacts. Auth prerequisites and body-field naming are present, but routing guidance to alternatives is absent.

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

gapify_filter_conversationsConversations: Conversations FilterA

Filter conversations with custom filter options and pagination [Conversations] POST /api/v1/accounts/{account_id}/conversations/filter Auth: User API key or Agent bot API key (header api-access-token). Body fields: payload. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoQuery param. Page number, starting at 1.
payloadNoArray of filter conditions. Each item: {attribute_key, filter_operator (e.g. equal_to, not_equal_to, contains, does_not_contain), values: [...], query_operator: "AND" | "OR", null on the last item}. Values may be Persian text. Example: [{"attribute_key":"browser_language","filter_operator":"not_eq","values":["en"],"query_operator":"AND"},{"attribute_key":"status","filter_operator":"eq","values":["pending"],"query_operator":null}]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds genuinely useful non-schema behavior: dual auth paths (User API key or Agent bot key via api-access-token header), the concrete endpoint, extra_body merge semantics, and that Persian/Arabic-Indic digits are forwarded unchanged. It does not explain pagination limits or result shape.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, with auth and body notes following in a compact block. Mild redundancy in 'Body fields: payload' since payload is fully specified in the schema, but no genuinely wasted sentences.

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

Completeness4/5

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

No output schema exists, but the description covers the operation, auth, endpoint and body-extension mechanism, which is most of what an agent needs. Gaps are minor: no note on pagination behavior/limits and no mention of the non-read-only annotation despite the filter semantics, though the schema example adequately carries the filter DSL.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents payload, page, account_id and extra_body with an example. The description goes slightly beyond the schema by flagging that text values pass through unchanged and that IDs/numbers may arrive in Persian or Arabic-Indic digits — a real encoding caveat not captured elsewhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Filter conversations') plus scoping qualifiers (custom filter options, pagination). It implicitly distinguishes itself from gapify_list_conversations by emphasizing custom filters, but never names the sibling or states the difference 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 the tool for filtered/advanced conversation queries versus a plain list. There is no explicit when-to-use, when-not-to-use, or alternative routing among the several nearby conversation siblings (list_conversations, get_conversation_counts).

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

gapify_get_account_reportsReports: Get Account reportsA
Read-onlyIdempotent

Get time-series report data for a metric, report type and date range [Reports] GET /api/v2/accounts/{account_id}/reports Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoQuery param. The Id of specific object in case of agent/inbox/label
typeNoQuery param. Type of report One of: `account`, `agent`, `inbox`, `label`, `team` Example: account
sinceNoQuery param. The timestamp from where report should start.
untilNoQuery param. The timestamp from where report should stop.
metricNoQuery param. The type of metric One of: `conversations_count`, `incoming_messages_count`, `outgoing_messages_count`, `avg_first_response_time`, `avg_resolution_time`, `resolutions_count` Example: conversations_count
account_idYesThe numeric ID of the account

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/openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful non-annotation context: the required auth mechanism (User API key in the api-access-token header) and a data-encoding caveat about Persian/Arabic-Indic digits and unchanged text values.

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?

Short and front-loaded: the core action leads, followed by endpoint and auth. The closing sentence on Persian/Arabic-Indic digits is a bit tangential to the tool's primary purpose but is legitimate I/O context and does not bloat the definition.

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 tool with full parameter documentation and annotations covering the safety profile, the essentials are present. However, there is no output schema and the description only says 'time-series report data' without indicating the shape, granularity, or pagination behavior of the returned data, leaving the return contract underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 enumerates the allowed report types and metrics, so the description needn't repeat them. The description maps the conceptual inputs (metric, report type, date range) but adds no format or constraint detail beyond the schema, making the baseline of 3 appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Get time-series report data for a metric, report type and date range') and names the endpoint. It implicitly distinguishes itself from the sibling gapify_get_account_reports_summary via 'time-series' vs. summary, but never names that sibling explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

The phrase 'time-series report data' implies when this tool applies (trend/over-time queries versus a summary), but there is no explicit when-to-use guidance, no exclusions, and no mention of the closely related summary or metrics siblings. Usage is left to inference.

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

gapify_get_account_reports_summaryReports: Get Account reports summaryA
Read-onlyIdempotent

Get summary report totals for a report type and date range [Reports] GET /api/v2/accounts/{account_id}/reports/summary Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoQuery param. The Id of specific object in case of agent/inbox/label
typeNoQuery param. Type of report One of: `account`, `agent`, `inbox`, `label`, `team` Example: account
sinceNoQuery param. The timestamp from where report should start.
untilNoQuery param. The timestamp from where report should stop.
account_idYesThe numeric ID of the account

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, openWorldHint, and destructiveHint=false, covering safety. The description adds useful behavioral context beyond annotations: authentication via User API key in the api-access-token header, the HTTP endpoint, and multilingual digit handling. It does not cover return format or pagination.

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

Conciseness4/5

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

The description is front-loaded with the tool purpose, then endpoint and auth details. It remains reasonably tight, though the multilingual text/digit note is somewhat specialized and could be trimmed if not broadly relevant.

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 summary endpoint with rich annotations and full schema coverage, the description covers purpose, auth, and endpoint. However, with no output schema, it does not explain the shape or contents of the returned summary totals, leaving a notable 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%, so the schema already documents all five parameters. The description only restates the report type and date range concepts without adding syntax, format, or edge-case meaning beyond the schema, matching the 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 (Get) and resource (summary report totals for a report type and date range), which distinguishes it from the sibling gapify_get_account_reports. It does not explicitly name or contrast with that sibling, which keeps it from a 5.

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

Usage Guidelines3/5

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

Usage is implied: use this when you need summary totals for a given report type and date range. There is no explicit when/when-not guidance or reference to the detailed-report sibling gapify_get_account_reports, so it remains only implied.

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

gapify_get_agent_botAccount AgentBots: Get an agent bot detailsA
Read-onlyIdempotent

Get the details of an agent bot in the account [Account AgentBots] GET /api/v1/accounts/{account_id}/agent_bots/{id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated
account_idYesThe numeric ID of the account

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond them: the required auth scheme (User API key in an `api-access-token` header) and the fact that text values are sent unchanged and may contain Persian/Arabic-Indic digits or non-Latin characters.

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 core purpose and endpoint are front-loaded in the first line, followed by compact auth and encoding notes. Every element is short and relevant, with no filler.

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

Completeness4/5

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

For a two-parameter read-only fetch with full schema coverage and rich annotations, the description covers purpose, endpoint, auth and data-encoding caveats. With no output schema present it could say a little more about the returned object, but nothing essential to 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 both parameters are already documented and a baseline of 3 applies. The description adds no further meaning about `id` or `account_id`, and notably does not correct the schema's misleading `id` description (it says 'agentbot to be updated' for what is a read-only fetch).

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get the details of an agent bot in the account') and pins it to the exact REST endpoint, so the agent knows precisely what it retrieves. It does not, however, distinguish itself from the near-identical sibling gapify_platform_get_agent_bot, leaving the agent to guess which variant applies in the account-scoped context.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named despite multiple overlapping agent-bot getters in the sibling list. Usage is only implied by the endpoint path's account scope.

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

gapify_get_automation_ruleAutomation Rule: Get a automation rule detailsA
Read-onlyIdempotent

Get an automation rule by ID [Automation Rule] GET /api/v1/accounts/{account_id}/automation_rules/{id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the automation rule to be updated.
account_idYesThe numeric ID of the account

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-schema context: the required User API key header (`api-access-token`) and the locale/numeral convention (Persian/Arabic-Indic digits accepted, text passed through unchanged). It omits behavior for a missing/invalid rule ID, which keeps it from a 5.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the endpoint, auth and encoding details are compact single lines. The API path and encoding boilerplate are somewhat mechanical, but nothing is redundant enough to penalize heavily.

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 ideally convey what a returned automation rule contains or the failure mode for an unknown ID; instead it stops at endpoint, auth and encoding. For a simple two-parameter read it is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema documents both account_id and id. The description adds only the numeral-format note (Persian/Arabic-Indic digits allowed) for IDs; notably it does not correct the schema's misleading id description, which says 'the automation rule to be updated' on a read tool.

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

Purpose4/5

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

States a specific verb and resource ('Get an automation rule by ID') and even gives the underlying endpoint path, so the operation is unambiguous. It does not, however, explicitly distinguish itself from the sibling list/add/update/remove automation rule tools, 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?

The 'by ID' framing implies this is the lookup tool for a single known rule, but there is no explicit guidance on when to use it versus gapify_list_automation_rules or gapify_update_automation_rule. Usage is inferable from the name rather than stated.

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

gapify_get_contactContacts: Show ContactA
Read-onlyIdempotent

Get a contact by ID [Contacts] GET /api/v1/accounts/{account_id}/contacts/{id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
account_idYesThe numeric ID of the account

TDQS

A3.7/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 openWorld, so the safety profile is covered. The description adds real value beyond that: the required auth scheme (User API key in the api-access-token header) and the unusual note that text may arrive in Persian and IDs/numbers may use Persian or Arabic-Indic digits, which materially affects how an agent should pass and interpret values.

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

Conciseness4/5

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

Front-loaded with the operation, then the HTTP route, auth, and the locale caveat. Every element is relevant and there is no padding, though the endpoint/auth lines partly duplicate metadata an agent may already have.

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 ideally say something about the returned contact shape or behavior when the ID is not found, and it does not. Annotations and the schema cover safety and inputs, so it is adequate but leaves a noticeable gap around return semantics.

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 and the schema already documents both account_id and id. The digit-encoding note adds genuine meaning for the id/account_id parameters that the schema does not convey, so a small bump above baseline is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 a contact by ID'), which cleanly separates it from list_contacts, search_contacts, and filter_contacts. It does not, however, distinguish itself from the near-identical sibling gapify_client_get_contact, so it falls short of a 5.

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

Usage Guidelines3/5

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

The 'by ID' phrasing implies the use case (single-record retrieval when the identifier is known), but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as search_contacts when the ID is unknown. 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.

gapify_get_contactable_inboxesContacts: Get Contactable InboxesA
Read-onlyIdempotent

List the inboxes through which a contact can be reached [Contacts] GET /api/v1/accounts/{account_id}/contacts/{id}/contactable_inboxes Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
account_idYesThe numeric ID of the account

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description usefully adds the required auth mechanism (User API key in the api-access-token header) and notes Persian/Arabic-Indic digit handling for inputs, going beyond the structured safety metadata.

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 purpose is front-loaded in one clear sentence, followed by compact endpoint and auth lines. The final localization sentence is somewhat generic and not specific to this endpoint, but it is short and relevant to input formatting.

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

Completeness4/5

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

For a simple two-parameter read-only list tool, the description covers purpose, endpoint, auth, and input encoding. It does not describe the shape of the returned inbox list, which is a minor gap given no output schema exists, but the core information an agent needs to call it correctly is present.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents account_id and id, making 3 the baseline. The description adds meaningful input-format context by noting that IDs and numbers may use Persian or Arabic-Indic digits, which directly affects how those parameters should be supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (inboxes through which a contact can be reached), and includes the exact HTTP endpoint. It implies a contact-scoped filter, which separates it from gapify_list_inboxes, but it never explicitly names or contrasts 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 Guidelines3/5

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

The description lets an agent infer that this is used when the reachable inboxes for a specific contact are needed, but it gives no explicit when-to-use guidance, prerequisites, or alternatives such as gapify_list_inboxes or gapify_create_contact_inbox.

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

gapify_get_conversationConversations: Conversation DetailsA
Read-onlyIdempotent

Get a conversation's details by its display ID [Conversations] GET /api/v1/accounts/{account_id}/conversations/{conversation_id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
conversation_idYesThe numeric ID of the conversation

TDQS

A3.7/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: the required auth mechanism ('User API key, header api-access-token') and the locale caveat about Persian/Arabic-Indic digits, which affects how IDs may be supplied.

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

Conciseness4/5

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

Front-loads the purpose, then appends endpoint, auth, and encoding notes. Efficient, though the bracketed tag and raw GET path duplicate structured context.

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

Completeness4/5

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

For a simple two-required-param read tool with no output schema, the description covers what an agent needs to call it: purpose, endpoint, auth, and input encoding quirks. Return shape is unspecified, but no output schema exists to lean on.

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

Parameters3/5

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

Schema description coverage is 100%, so both required parameters are documented in the schema; baseline is 3. The description adds only tangential meaning (digits may be Persian/Arabic-Indic) and no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb+resource ('Get a conversation's details') that clearly distinguishes it from list_conversations, filter_conversations, and get_messages. Minor ambiguity: it says 'by its display ID' while the schema param is 'conversation_id' described as the numeric ID, so the identifier semantics are slightly loose.

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

Usage Guidelines3/5

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

The read-only retrieval intent is implied but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives (e.g., use list_conversations to find the ID first). Usage must be inferred from the name.

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

gapify_get_conversation_countsConversations: Get Conversation CountsB
Read-onlyIdempotent

Get conversation counts by assignment (mine, unassigned, assigned, all), with optional filters [Conversations] GET /api/v1/accounts/{account_id}/conversations/meta Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoQuery param. Filters conversations with messages containing the search term
labelsNoQuery param. Label names to filter by, comma-separated.
statusNoQuery param. Filter by conversation status. One of: `open`, `resolved`, `pending`, `snoozed` Example: open
team_idNoQuery param. Numeric ID of the team.
inbox_idNoQuery param. Numeric ID of the inbox.
account_idYesThe numeric ID of the account

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 safety is covered. The description adds genuine context beyond them: the REST endpoint and the required auth header ('api-access-token'), plus a note that Persian/Arabic-Indic digits and non-English text pass through unchanged. It does not say what the returned counts look like or whether they 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?

Front-loaded with the purpose in the first clause, then endpoint, auth and encoding notes on separate lines. No filler sentences, though the Persian-digit note is boilerplate that sits oddly on a counts endpoint that returns no text values.

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 aggregation with fully described parameters and no output schema, the definition is serviceable but leaves an important gap: it never describes the shape of the counts returned (per-assignment buckets vs. a single total), which is the single most useful thing to 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 coverage is 100%, so all six filter parameters are already documented in the schema and the baseline is 3. The description adds little beyond 'optional filters', and it introduces an 'assignment' dimension (mine/unassigned/assigned/all) that has no corresponding schema parameter — potentially confusing rather than clarifying.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 conversation counts') plus the grouping dimension (mine/unassigned/assigned/all) and the backing endpoint, so the agent knows exactly what it produces. It does not name or contrast with overlapping siblings such as gapify_filter_conversations or gapify_account_conversation_metrics, leaving the agent to infer which one yields counts versus records.

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?

'with optional filters' implies the filtering use case, and the assignment groupings hint at dashboard-style aggregation. However, there is no explicit when-to-use/when-not guidance and no pointer to alternatives, which matters given several conversation-listing siblings that could be mistaken for this tool.

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

gapify_get_csat_surveyCSAT Survey Page: Get CSAT survey pageB
Read-onlyIdempotent

Get the hosted CSAT (customer satisfaction) survey page for a conversation [CSAT Survey Page] GET /survey/responses/{conversation_uuid} Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_uuidYesThe uuid of the conversation

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, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds context that the page is 'hosted' and that text values pass through unchanged and may use Persian/Arabic-Indic digits, which is genuinely useful input-handling context. It does not describe the returned survey structure or any failure modes.

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

Conciseness4/5

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

The core purpose and endpoint are front-loaded in one sentence, which is efficient. The appended language/digit note is short but reads as boilerplate that is loosely related to the tool's actual purpose, slightly diluting focus.

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

Completeness3/5

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

For a simple read-only GET with one well-documented parameter and no output schema, the description conveys what is fetched and where. However, it says nothing about what the returned survey page contains (questions, scores, response state), which an agent would need to interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter is fully documented in the schema as 'The uuid of the conversation'. The description only restates this via the URL template ('/survey/responses/{conversation_uuid}'), adding no syntax, format, or validation meaning beyond what the schema provides. 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 and resource ('Get the hosted CSAT survey page for a conversation') plus the underlying endpoint, so the agent knows exactly what it retrieves. It does not need to distinguish itself from a close sibling, since no other CSAT tool exists in the sibling list, but it also makes no explicit differentiation statement.

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 alternatives, nor any prerequisites (e.g. whether the conversation must be closed to have a survey). Usage is only implicit in 'for a conversation'. The trailing note about Persian digits is an input-format remark, not when-to-use guidance.

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

gapify_get_custom_attributeCustom Attributes: Get a custom attribute detailsB
Read-onlyIdempotent

Get a custom attribute definition by ID [Custom Attributes] GET /api/v1/accounts/{account_id}/custom_attribute_definitions/{id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the custom attribute to be updated.
account_idYesThe numeric ID of the account

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, and destructiveHint=false, so the safety profile is covered. The description usefully adds the auth requirement (User API key via `api-access-token` header), which is real context beyond the annotations, but says nothing about errors, response shape, 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.

Conciseness3/5

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

The purpose is correctly front-loaded and the endpoint plus auth line are compact. The final sentence about Persian text and digits being "sent unchanged" is about writes and does not earn its place for a GET-by-ID tool, so the description carries irrelevant weight.

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 only 2 fully documented parameters, complete annotations, and no output schema, the definition is functional but thin. Since no output schema exists, the description would ideally say what a custom attribute definition contains; it omits this entirely.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 both `id` and `account_id`; baseline is 3. The description adds no parameter-level meaning beyond the schema (and the trailing Persian/Arabic-Indic digit note concerns written values, not this read operation).

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 a custom attribute definition by ID") and scopes it to a single entity, which distinguishes it from the list/add/update/remove custom-attribute siblings. However, it does not name any sibling or explain the relationship to gapify_list_custom_attributes, so the differentiation is inferred rather than explicit.

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

Usage Guidelines3/5

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

The "by ID" phrasing implies the tool is for retrieving one known attribute rather than browsing, and the required `id` parameter reinforces this. But there is no explicit when-to-use guidance, no mention of when to prefer list_custom_attributes, and no stated prerequisites.

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

gapify_get_custom_filterCustom Filters: Get a custom filter detailsB
Read-onlyIdempotent

Get the details of a custom filter in the account [Custom Filters] GET /api/v1/accounts/{account_id}/custom_filters/{custom_filter_id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
custom_filter_idYesThe numeric ID of the custom filter

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds context the annotations cannot: authentication via User API key in the `api-access-token` header, plus the note that text/ID values may arrive in Persian and are passed through unchanged. It stops short of rate limits or response size behavior, keeping it at a 4.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by the endpoint and auth requirement. The repeated bracket tag '[Custom Filters]' and the raw endpoint string are somewhat redundant with the name and schema, costing a point, but nothing is padded or 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 two-parameter read tool with no output schema, the description covers the call mechanics (endpoint, auth) but never indicates what 'details' are returned, so an agent cannot anticipate the payload shape. Adequate but with a clear gap given the absence of an output schema.

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

Parameters3/5

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

Schema coverage is 100% — both account_id and custom_filter_id are self-documented as numeric IDs. The description's Persian/Arabic-Indic digit note is marginally relevant to how ID values may be encoded, but it is a generic API-wide caveat rather than semantics specific to these two parameters, so the baseline 3 for high schema coverage holds.

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

Purpose4/5

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

States a specific verb and resource ('Get the details of a custom filter'), reinforced by the exact REST endpoint, so an agent knows this is a single-resource read keyed by account_id and custom_filter_id. It does not explicitly contrast itself with gapify_get_custom_filter's siblings like gapify_list_custom_filters or gapify_update_custom_filter, but the singular 'details' framing plus the ID path makes the distinction 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 when-to-use or when-not-to-use guidance and no alternatives named, so an agent must infer from the verb that this is the fetch-one-by-ID tool versus list_custom_filters. The auth line is a prerequisite, not usage routing, so it doesn't raise this dimension.

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

gapify_get_inboxInboxes: Get an inboxA
Read-onlyIdempotent

Get an inbox available in the current account [Inboxes] GET /api/v1/accounts/{account_id}/inboxes/{id}/ Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the inbox
account_idYesThe numeric ID of the account

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), so the bar is lower, and the description adds real value: the required auth mechanism (User API key in the api-access-token header) and the note that text/IDs may arrive in Persian or Arabic-Indic digits and are passed through unchanged. It does not describe error behavior or response shape, but the auth and encoding context is substantive.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, and the HTTP path and auth line are compact and useful reference. The Persian/Unicode sentence is somewhat tangential but does carry format information, so it earns its place reasonably.

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 lookup with full schema coverage and annotations declaring the safety profile, the description covers the essentials: what it fetches, the auth requirement, and input-format quirks. No output schema exists, so return values need not be explained, though error semantics are absent.

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

Parameters4/5

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

Schema description coverage is 100%, so both account_id and id are already documented and the baseline is 3. The digit-handling note ('IDs, numbers and phone numbers may use Persian or Arabic-Indic digits') adds input-format semantics beyond the schema, so it edges above baseline.

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

Purpose4/5

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

States a specific verb and resource (get an inbox in the current account), which is unambiguous on its own. However, it never distinguishes itself from the near-duplicate sibling gapify_client_get_inbox or from gapify_list_inboxes, so sibling differentiation is left 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 statement of when to use this tool versus the alternatives: nothing about when to fetch a single inbox by ID rather than list them, and nothing explaining the difference from gapify_client_get_inbox. Usage must be inferred 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.

gapify_get_messagesMessages: Get messagesB
Read-onlyIdempotent

List the messages of a conversation [Messages] GET /api/v1/accounts/{account_id}/conversations/{conversation_id}/messages Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
conversation_idYesThe numeric ID of the conversation

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnly=true, idempotent=true, destructive=false, and openWorld=true, so the safety profile is covered. The description adds two useful operational facts beyond the annotations: the required auth header ('api-access-token') and that Persian/Arabic-Indic digit handling is passed through unchanged. It does not disclose pagination behavior or result volume, which matters for a list endpoint.

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

Conciseness4/5

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

Front-loads the purpose in the first clause, then supplies endpoint and auth compactly. The trailing Persian/Arabic-Indic digit note is somewhat tangential but is genuinely relevant to text-bearing payloads and costs only one sentence.

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

Completeness3/5

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

For a two-parameter read-only list tool with no output schema, the annotations and 100% schema coverage carry most of the burden, and the description adds auth and text-encoding context. It still omits pagination or ordering behavior, which an agent calling a message-list endpoint would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 already documented as numeric IDs, so the schema does the heavy lifting. The description adds no further semantics beyond echoing account_id and conversation_id in the URL template, matching the baseline of 3 for fully covered schemas.

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

Purpose4/5

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

States a specific verb+resource ('List the messages of a conversation') and the endpoint path makes the scope unambiguous. However it does not distinguish itself from the sibling gapify_client_list_messages, which appears to cover a similar surface, so the sibling differentiation is not fully resolved.

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/when-not guidance and names no alternative (e.g. gapify_get_conversation, gapify_client_list_messages, or filtering helpers). Usage is only implied by the verb and endpoint path, which is minimal for a tool with this many siblings.

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

gapify_get_profileProfile: Fetch user profileA
Read-onlyIdempotent

Get the profile of the user who owns the API access token [Profile] GET /api/v1/profile Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 open-world behavior, so the safety profile is covered. The description adds real context beyond that: the required auth scheme (User API key in the api-access-token header) and the encoding caveat about Persian/Arabic-Indic digits, which an agent handling responses would otherwise miss.

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

Conciseness4/5

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

Front-loaded with the purpose in one sentence, followed by compact auth and encoding notes. The '[Profile] GET /api/v1/profile' line is mildly redundant REST metadata but costs almost nothing.

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

Completeness4/5

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

For a zero-parameter read tool with no output schema, the description covers purpose, target resolution, auth requirement and encoding caveats. The only gap is that it never hints at what fields the profile object contains, which an agent might want before relying on the result.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly conveys that no identifiers are accepted – the token itself determines the target – and adds the auth and numeral-encoding context relevant to using the response.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 the profile of the user who owns the API access token. The 'token owner' qualifier usefully distinguishes it from the many sibling get_user / get_contact / get_account tools, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by 'the user who owns the API access token' – this is the self-profile endpoint, not an arbitrary-user lookup – but there is no explicit when-to-use statement or pointer to gapify_platform_get_user as the alternative for fetching another user.

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

gapify_get_teamTeams: Get a team detailsB
Read-onlyIdempotent

Get the details of a team in the account [Teams] GET /api/v1/accounts/{account_id}/teams/{team_id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
account_idYesThe numeric ID of the account

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds genuinely new context: the required API-key auth header and the note that values may arrive in Persian/Arabic-Indic digits, which is real behavioral information not present in the schema.

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

Conciseness4/5

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

The text is short and front-loaded, leading with the purpose before the endpoint, auth and encoding notes. The Persian-digits sentence is boilerplate that would apply to most tools in this server but is still compact.

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 would ideally describe what a team record contains, but it says nothing about the returned fields. It does cover the endpoint, auth requirement and encoding caveat, and annotations cover safety, so it is adequate but leaves a notable gap for a get-details 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 both parameters are already documented (account_id, team_id) and the baseline is 3. The description adds only the digit-encoding caveat for values, and notably the schema's team_id description says 'to be updated', a copy-paste error the description does not correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get the details of a team in the account') plus the underlying endpoint, so an agent immediately knows this is a single-team read operation. It does not explicitly contrast itself with the sibling tools gapify_list_teams or gapify_update_team, so no credit for sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus gapify_list_teams (to find a team_id) or gapify_update_team. The only contextual hint is the endpoint template showing both account_id and team_id are needed, which implies a prior lookup but never states it.

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

gapify_list_agent_botsAccount AgentBots: List all AgentBotsB
Read-onlyIdempotent

List all agent bots available for the current account [Account AgentBots] GET /api/v1/accounts/{account_id}/agent_bots Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already supply the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description adds genuinely useful behavioral context beyond them: the auth mechanism (User API key in the `api-access-token` header). It stops short of describing return shape or pagination.

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

Conciseness4/5

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

Well front-loaded: the list action, endpoint, and auth are stated in compact order. The trailing Persian/Arabic-Indic digit note is generic boilerplate that earns little place on a read-only list tool with a single ID parameter.

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

Completeness3/5

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

For a simple list tool with annotations covering its safety profile this is mostly adequate, but there is no output schema and the description never says what is returned (fields, pagination). The duplicated sibling also goes unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and the sole account_id parameter is already documented in the schema. The description adds no syntax or format detail beyond 'current account', so the schema carries the load and 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+scope ('List all agent bots available for the current account') and even gives the endpoint. It is clear in isolation, but it does not distinguish itself from the near-identical sibling gapify_platform_list_agent_bots, which leaves the agent unable to choose between them from the description alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no alternative named, despite a near-duplicate sibling (gapify_platform_list_agent_bots) and related getters. The agent must infer the usage context entirely.

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

gapify_list_agentsAgents: List Agents in AccountB
Read-onlyIdempotent

List all agents in the account [Agents] GET /api/v1/accounts/{account_id}/agents Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description earns credit by adding the concrete endpoint and the required auth mechanism (User API key in the api-access-token header), which the annotations do not convey. It still says nothing about pagination or result limits.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the endpoint/auth lines are compact. The trailing language/digit note is somewhat generic boilerplate, but it is short and potentially relevant to the digit-formatted IDs the tool accepts.

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

Completeness3/5

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

For a simple read-only, one-parameter list call the description is close to adequate, but with no output schema the agent gets no sense of what an agent record contains or how many are returned, and pagination behavior is unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and the single account_id parameter is documented there as the numeric account ID. The description adds no format or sourcing detail 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.

Purpose4/5

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

"List all agents in the account" states a specific verb and resource, so the core action is unambiguous. However, the sibling set contains several other list tools (gapify_list_agent_bots, gapify_list_inbox_agents, gapify_list_team_agents), and the description offers no cue to distinguish this account-level agent list from those.

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 indication of when to choose this tool over gapify_list_agent_bots or gapify_list_team_agents, and no prerequisites are stated. The only guidance is implicit — that it is account-scoped — which the agent must infer from the resource path.

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

gapify_list_automation_rulesAutomation Rule: List all automation rules in an accountA
Read-onlyIdempotent

List automation rules in the account [Automation Rule] GET /api/v1/accounts/{account_id}/automation_rules Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoQuery param. The page parameter Example: 1
account_idYesThe numeric ID of the account

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the read-only, idempotent, non-destructive safety profile, so the bar is lower. The description usefully adds the auth mechanism ('User API key' header api-access-token) and an encoding caveat about Persian/Arabic-Indic digits, which are real behavioral details beyond the annotations. Pagination behavior is not addressed.

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

Conciseness4/5

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

Purpose is front-loaded, followed by endpoint, auth and encoding notes, with little waste. The bracketed '[Automation Rule]' tag and raw endpoint path are slightly redundant but not disruptive.

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 whose annotations carry the safety profile and which has no output schema and full parameter documentation, the description covers purpose, endpoint, auth and encoding adequately. Only pagination nuances are left implicit.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (account_id and page), so the schema already documents them. The description adds no extra parameter meaning, which is the expected baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('List automation rules in the account'), which distinguishes it from the singular get/add/update/remove siblings. However, it does not explicitly name or contrast those siblings, so the differentiation is by inference rather than statement.

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 'List ... in the account' phrasing, but there is no explicit when-to-use guidance, no mention of when to prefer this over get_automation_rule, and no exclusions or prerequisites stated.

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

gapify_list_canned_responsesCanned Responses: List all Canned Responses in an AccountA
Read-onlyIdempotent

List all canned responses (saved reply templates) in the account [Canned Responses] GET /api/v1/accounts/{account_id}/canned_responses Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

A3.9/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 value beyond them by disclosing the auth requirement (User API key in the api-access-token header), the exact endpoint, and language/digit handling notes for returned text.

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

Conciseness4/5

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

Front-loads the core purpose, then the endpoint, auth, and language note. It is compact and each line earns its place, though the Persian/Arabic-Indic digit note is somewhat tangential to a list operation.

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

Completeness4/5

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

For a single-parameter read tool with annotations covering safety and no output schema, the description covers auth and endpoint details adequately. No major gaps remain for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% for the single account_id parameter, so the schema already documents it. The description adds no parameter-level detail (e.g., format expectations), matching the baseline 3 when the schema does the heavy lifting.

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

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 all canned responses (saved reply templates) in the account'. The parenthetical clarifies the domain term, and the operation is clearly distinguishable from sibling mutations like gapify_add_canned_response and gapify_update_canned_response.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given. For a simple read/list tool the usage is largely implied by the name, but the description offers no routing cues relative to alternatives such as filtering or searching canned responses.

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

gapify_list_contact_conversationsContacts: Contact ConversationsB
Read-onlyIdempotent

List the conversations of a contact [Contacts] GET /api/v1/accounts/{account_id}/contacts/{id}/conversations Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
account_idYesThe numeric ID of the account

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the auth requirement (User API key in an `api-access-token` header) and a note that text and digits may arrive in Persian/Arabic-Indic form, which is real input-handling context. It says nothing about pagination or result volume, which is the main remaining gap.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the endpoint, auth header, and localization caveat are attached compactly. The Persian/Arabic-Indic digits sentence is somewhat tangential to listing conversations but does inform how callers should format values, so it earns most of its 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?

With no output schema, the description carries the burden of explaining what comes back, yet it never describes the response shape or whether results are paginated. Auth, scope, and input encoding are covered, so it is adequate but leaves a noticeable gap for a list endpoint.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, so the schema fully documents `id` and `account_id`; that establishes a baseline of 3. The description adds no further meaning about these parameters, such as format expectations for the contact ID.

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

Purpose4/5

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

States a specific verb and resource with a scope qualifier: 'List the conversations of a contact'. This is clearly distinguishable from the broader gapify_list_conversations sibling because the scope is narrowed to a single contact, though the description never names that sibling to make the contrast explicit.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no routing to alternatives. The tool sits alongside gapify_list_conversations, gapify_filter_conversations and gapify_get_conversation, and the description offers nothing to help an agent choose between them beyond the implied contact scoping.

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

gapify_list_contact_labelsContact Labels: List LabelsA
Read-onlyIdempotent

List the labels of a contact [Contact Labels] GET /api/v1/accounts/{account_id}/contacts/{contact_identifier}/labels Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
contact_identifierYesThe source id of contact obtained on contact create

TDQS

A3.7/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, openWorldHint), so the bar is lower, and the description goes beyond them by disclosing the exact endpoint, the required auth header ('api-access-token'), and a data-handling note about Persian/Arabic-Indic digits being accepted unchanged. It does not mention pagination or result ordering.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by the route, auth, and locale note. It is compact and mostly earns its space, though restating the raw HTTP path is somewhat redundant for an agent that already has 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 two-parameter read-only list tool with no output schema and rich annotations, the description covers purpose, auth, endpoint, and a locale caveat that could matter for identifier input. Return-value shape is the only unaddressed item, and no output schema exists to carry 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% and both parameters carry their own descriptions, so the schema does the heavy lifting. The description adds nothing about account_id or contact_identifier formats, 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 ('List the labels of a contact'), which is clearly distinct from the many sibling list tools and from the write counterpart gapify_set_contact_labels. It never names that sibling to sharpen the contrast, so it stops short of the top band.

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

Usage Guidelines3/5

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

Usage is implied by the name and the purpose sentence — this is the read-side of contact label management — but the description gives no explicit when-to-use or when-not-to-use guidance and never points to gapify_set_contact_labels or gapify_list_contacts as alternatives.

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

gapify_list_contactsContacts: List ContactsA
Read-onlyIdempotent

List resolved contacts with pagination (15 per page). Resolved contacts are those with an identifier, email or phone number [Contacts] GET /api/v1/accounts/{account_id}/contacts Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoQuery param. The page parameter Example: 1
sortNoQuery param. The attribute by which list should be sorted One of: `name`, `email`, `phone_number`, `last_activity_at`, `-name`, `-email`, `-phone_number`, `-last_activity_at` Example: name
account_idYesThe numeric ID of the account

TDQS

A3.5/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 real value beyond that: page size (15 per page), the auth requirement (User API key via api-access-token header), and the Persian/Arabic-Indic digit handling caveat. It stops short of describing ordering guarantees or total counts, but the additions are substantive.

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

Conciseness4/5

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

Purpose and page size are front-loaded, and the sentences are short. The raw HTTP endpoint and the trailing Persian-text note are slightly tangential for an agent's decision-making but not wasteful enough to hurt much.

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, idempotent list tool with full annotation coverage and no output schema, the description covers what is needed to call it: scope, page size, auth, and input encoding quirks. Only the relationship to search/filter siblings is left unexplained.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents page, sort, and account_id, including the sort enum values. The description only echoes the page size, adding no new meaning to the sort parameter or the accepted digit formats per parameter. 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 ('List resolved contacts') and defines the key qualifier ('those with an identifier, email or phone number'), which is genuinely useful disambiguation. It does not explicitly name the sibling tools it is not (gapify_search_contacts, gapify_filter_contacts), so an agent still has to infer which list variant 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 and no mention of the obvious alternatives gapify_search_contacts and gapify_filter_contacts, which sit right next to this tool. The agent must guess whether plain listing, search, or filter is the right entry point.

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

gapify_list_conversation_labelsConversation Labels: List LabelsA
Read-onlyIdempotent

List the labels of a conversation [Conversation Labels] GET /api/v1/accounts/{account_id}/conversations/{conversation_id}/labels Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
conversation_idYesThe numeric ID of the conversation

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, openWorld and non-destructive, so safety is covered; the description adds genuinely useful context the annotations do not carry — the required auth mechanism (User API key in an api-access-token header) and the note that values may arrive in Persian/Arabic-Indic digits and are passed through unchanged. It still says nothing about pagination or result shape for a read endpoint with no output schema.

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

Conciseness4/5

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

The purpose sentence is front-loaded and the shape is compact: HTTP method/path and auth line follow immediately, then a short locale note. Slight boilerplate (repeating the URL pattern and auth header) keeps it from being maximally tight, but nothing is wasted.

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

Completeness3/5

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

For a simple two-parameter read the description is serviceable, but with no output schema the agent is never told what a label listing looks like (array of names? objects with ids?), and empty-state behavior is unstated. The auth and locale context are helpful, but the return contract is a real 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%, so both parameters (account_id, conversation_id) are already documented in the schema; the baseline of 3 applies. The digit-encoding note tangentially hints that ids may be written with Persian/Arabic-Indic digits, but the description adds no format or constraint 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 (list) and a precisely scoped resource (labels of a conversation), including the exact endpoint, so an agent knows it retrieves label associations for one conversation. It does not explicitly distinguish itself from near-neighbors such as gapify_set_conversation_labels or gapify_list_contact_labels, leaving that separation to the name alone.

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

Usage Guidelines3/5

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

Usage is implied by 'list the labels of a conversation' — a read against an existing conversation id — but there is no explicit when-to-use, no mention of the set_conversation_labels counterpart for writing, and no stated prerequisites beyond the auth line. Adequate but not directive.

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

gapify_list_conversationsConversations: Conversations ListA
Read-onlyIdempotent

List conversations with filters and pagination [Conversations] GET /api/v1/accounts/{account_id}/conversations Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoQuery param. Filters conversations with messages containing the search term
pageNoQuery param. paginate through conversations Example: 1
labelsNoQuery param. Label names to filter by, comma-separated.
statusNoQuery param. Filter by conversation status. One of: `open`, `resolved`, `pending`, `snoozed` Example: open
team_idNoQuery param. Numeric ID of the team.
inbox_idNoQuery param. Numeric ID of the inbox.
account_idYesThe numeric ID of the account
assignee_typeNoQuery param. Filter conversations by assignee type. One of: `me`, `unassigned`, `all`, `assigned` Example: all

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare this as a safe, idempotent read operation, and the description adds useful context: the required User API key header and handling of Persian/Arabic-Indic text and digits. It does not describe return format or pagination limits, but it adds meaningful operational detail beyond 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?

The description is short and front-loads the purpose, with endpoint, auth, and localization notes following logically. The '[Conversations]' tag is slightly redundant but does not bloat the text.

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

Completeness3/5

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

The definition is adequate given annotations and full schema coverage, but for an eight-parameter paginated list tool with no output schema, it lacks details about response shape and pagination behavior. The auth and localization notes help, but do not fully close the 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%, so all eight parameters are already documented in the schema. The description only broadly mentions filters and pagination and does not add parameter-specific meaning beyond that 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?

The description states a specific verb and resource: list conversations with filters and pagination. It is clear what the tool does, but it does not distinguish itself from the sibling gapify_filter_conversations or other conversation-list tools.

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 'list conversations with filters and pagination,' but there is no explicit guidance on when to use this versus gapify_filter_conversations, gapify_list_contact_conversations, or gapify_client_list_conversations.

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

gapify_list_custom_attributesCustom Attributes: List all custom attributes in an accountB
Read-onlyIdempotent

List custom attribute definitions in the account [Custom Attributes] GET /api/v1/accounts/{account_id}/custom_attribute_definitions Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
attribute_modelNoQuery param. conversation_attribute(0)/contact_attribute(1) One of: `0`, `1` Example: 0

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavioral context an agent would not otherwise have: the required 'User API key' header auth and the note that text values may arrive in Persian/other scripts with Persian/Arabic-Indic digits, which matters for downstream parsing.

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

Conciseness3/5

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

The core purpose and auth are front-loaded, but the raw REST endpoint line and especially the Persian/Arabic-Indic digit note read as copy-paste boilerplate that is tangential to a read-only listing call. The definition carries sentences that do not fully earn their place for this operation.

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

Completeness3/5

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

For a simple read-only listing tool with no output schema, the description covers auth and data encoding but never says what the response contains (e.g., the list of definitions and their fields) or whether results are paginated. Adequate but with a visible 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%, so both account_id and attribute_model are already documented in the schema, and the description adds nothing about attribute_model's 0/1 semantics. Per the rubric, a baseline of 3 is correct 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 gives a specific verb ('List') and resource ('custom attribute definitions in the account'), which clearly separates it from the get/add/update/remove custom-attribute siblings. It is clear and unambiguous, though it does not explicitly name which sibling to use instead.

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 retrieval of all definitions but offers no explicit when-to-use, when-not-to-use, or alternative guidance. It never mentions gapify_get_custom_attribute for single lookups or gapify_list_custom_filters as a related listing tool.

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

gapify_list_custom_filtersCustom Filters: List all custom filtersB
Read-onlyIdempotent

List the current user's saved custom filters of a given type [Custom Filters] GET /api/v1/accounts/{account_id}/custom_filters Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account
filter_typeNoQuery param. The type of custom filter One of: `conversation`, `contact`, `report` Example: conversation

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered, but the description adds genuinely new context: the required User API key auth header and the note that text is passed unchanged while IDs/numbers may arrive in Persian or Arabic-Indic digits. It still says nothing about result ordering or pagination.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the remaining sentences are short and information-dense. The REST path and HTTP verb are somewhat redundant for an agent, but the auth and encoding notes earn their 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?

With no output schema, the description should hint at what a list response looks like or whether results are paginated, and it does neither. It is adequate for invocation but leaves the agent guessing about the shape and size of the returned collection.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 (account_id, filter_type) are already documented with the allowed enum values in the schema. The description's 'of a given type' restates filter_type without adding format or default details, 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 gives a specific verb (list) plus resource (the current user's saved custom filters) and scope ('of a given type'), which is enough to separate it from gapify_get_custom_filter or gapify_create_custom_filter. However it never names a sibling or states what makes this listing distinct from the filtered-listing siblings, so it stops short of the top band.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives such as gapify_get_custom_filter for a single filter. The 'of a given type' phrasing only hints that filter_type narrows results, which is implied rather than stated as usage direction.

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

gapify_list_inbox_agentsInboxes: List Agents in InboxB
Read-onlyIdempotent

List the agents assigned to an inbox [Inboxes] GET /api/v1/accounts/{account_id}/inbox_members/{inbox_id} Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_idYesThe ID of the Inbox
account_idYesThe numeric ID of the account

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 auth requirement (User API key in the `api-access-token` header), which is useful, but says nothing about pagination, result size, or return shape.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by endpoint and auth. The trailing Persian/Arabic-Indic digit note is generic API-wide boilerplate that adds little for this specific read tool, but the overall structure is 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?

A simple two-parameter read tool with full annotation coverage and no output schema. Purpose, endpoint, and auth are all present; nothing essential for invoking 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 both account_id and inbox_id are already documented in the schema. The description adds no parameter-level meaning beyond that, which is the baseline 3 when the schema carries the load.

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

Purpose4/5

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

States a specific verb+resource: 'List the agents assigned to an inbox'. This clearly distinguishes it from sibling list tools like gapify_list_agents (all agents) or gapify_list_team_agents (agents in a team), though it never names those alternatives explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no routing to related siblings such as gapify_add_inbox_agents, gapify_update_inbox_agents, or gapify_remove_inbox_agent. The agent must infer the selection context entirely from the name.

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

gapify_list_inboxesInboxes: List all inboxesA
Read-onlyIdempotent

List all inboxes available in the current account [Inboxes] GET /api/v1/accounts/{account_id}/inboxes Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

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 and non-destructive behavior, so the description adds real value on top: the auth requirement (User API key via `api-access-token` header), the concrete endpoint, and the note about Persian/Arabic-Indic digits being sent unchanged. This is meaningful behavioral context beyond the structured fields.

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

Conciseness4/5

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

The core purpose is front-loaded in the opening clause. The trailing endpoint, auth and language notes are compact and each carries useful information, though the language/digits remark is tangential to selecting the tool.

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

Completeness5/5

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

For a single-parameter read-only list endpoint with no output schema, the description supplies the endpoint, auth method and behavioral notes an agent needs to call it correctly. 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?

Only one parameter (account_id) and the schema description coverage is 100%, so the schema already documents it fully. The description's URL path hints at its role but adds no syntax or format detail beyond 'The numeric ID of the account.' 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+scope: 'List all inboxes available in the current account.' This is clearly distinguishable from single-resource siblings like gapify_get_inbox. No explicit sibling naming, but the list vs get distinction is inherent in the phrasing.

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

Usage Guidelines3/5

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

Implies usage by scoping to 'the current account,' but gives no explicit when-to-use guidance or comparison against alternatives such as gapify_get_inbox or gapify_list_inbox_agents. The agent must infer that this is the discovery endpoint for inboxes.

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

gapify_list_integrationsIntegrations: List all the IntegrationsB
Read-onlyIdempotent

List the integrations available for the account [Integrations] GET /api/v1/accounts/{account_id}/integrations/apps Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description earns credit by adding genuinely non-structured context: the required auth mechanism (User API key in an api-access-token header) and the note that text values and digits may arrive in Persian/Arabic-Indic form unchanged. It still omits pagination or result-size behavior, which keeps it from a 5.

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

Conciseness3/5

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

The purpose is front-loaded, which is good, but the block is padded with a raw endpoint path and a generic Persian/Arabic digit boilerplate that is largely irrelevant to a parameterless list call. The sentences are short but not every one earns its place for this specific 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 read-only list tool with a complete one-parameter schema and full annotation coverage, the auth detail is the main missing piece and it is supplied. But with no output schema, the description never indicates what an integration record contains or whether results are paginated, leaving the agent under-informed about 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?

There is a single parameter and schema description coverage is 100%, so the schema already documents account_id as 'The numeric ID of the account'. The description adds nothing further about the parameter, which is the expected baseline when the schema does the heavy lifting.

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

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 integrations available for the account') plus the underlying endpoint, so the agent knows exactly what is returned. However, it does not distinguish itself from the similarly named siblings gapify_create_integration_hook / gapify_update_integration_hook / gapify_delete_integration_hook, which are a different concept an agent could easily confuse with this one.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites beyond the auth header, and no routing to alternatives (e.g. the integration-hook tools or gapify_raw_request). The agent must infer that a read-only listing is the right call purely from the tool name.

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

gapify_list_portalsHelp Center: List all portals in an accountA
Read-onlyIdempotent

List help center portals in the account [Help Center] GET /api/v1/accounts/{account_id}/portals Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

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 and non-destructive, so the safety profile is covered; the description adds value by naming the required auth mechanism (User API key in the api-access-token header) and noting text/digit encoding behavior. It does not, however, mention pagination or result limits, which is the main remaining gap for a list endpoint.

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

Conciseness4/5

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

Purpose is front-loaded, followed by endpoint and auth in a compact block. The trailing locale/digit sentence is generic boilerplate that adds length without much benefit for a read-only listing call.

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

Completeness4/5

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

For a single-parameter read tool with no output schema, the description covers what it does, the endpoint and auth. Nothing required to invoke it is missing, though a hint about what a portal record contains would round it out.

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

Parameters3/5

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

Schema description coverage is 100%, so account_id is already documented as the numeric account ID. The locale note about Persian/Arabic-Indic digits could apply to the identifier's formatting, but it is generic rather than parameter-specific, so the baseline 3 holds.

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 help center portals in the account'), with the endpoint path confirming the shape of the call. The verb clearly separates it from the sibling mutation tools gapify_add_portal and gapify_update_portal.

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 list-verb and the account scoping, but there is no explicit guidance on when to reach for this versus other read tools or any prerequisites beyond the account_id. Adequate but nothing routing-oriented is stated.

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

gapify_list_team_agentsTeams: List Agents in TeamA
Read-onlyIdempotent

List the agents in a team [Teams] GET /api/v1/accounts/{account_id}/teams/{team_id}/team_members Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
account_idYesThe numeric ID of the account

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/non-destructive, so the bar is lower, and the description adds concrete invocation context: the required auth method and header (api-access-token) plus encoding behavior for Persian/Arabic-Indic digits. It still omits return shape and pagination, but the auth disclosure is genuinely useful beyond structured fields.

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

Conciseness4/5

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

Purpose is front-loaded ahead of the endpoint, auth, and encoding notes, and it stays short. The trailing language/digits sentence is generic boilerplate but brief.

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

Completeness3/5

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

For a simple read-only list with full schema coverage and clear annotations, the essentials are present, but with no output schema the description gives no indication of what the response contains or how results are returned.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented in the schema, so the baseline of 3 applies. The description adds no syntax or format detail beyond the schema, and notably does not address the schema's odd 'team to be updated' wording on a read-only list tool.

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

Purpose4/5

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

States a specific verb (List) and resource (agents in a team) with the scoping parameter team_id, which separates it from gapify_list_agents. It is clear what the tool does, though it never explicitly names or contrasts the sibling it could be confused with.

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 name and the team_id scope imply the usage (retrieve membership for one team), but there is no explicit when-to-use or when-to-prefer-an-alternative guidance, e.g. versus gapify_list_agents or gapify_list_inbox_agents.

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

gapify_list_teamsTeams: List all teamsA
Read-onlyIdempotent

List all teams available in the current account [Teams] GET /api/v1/accounts/{account_id}/teams Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds a genuine prerequisite (User API key via api-access-token header) and a note on Persian/Arabic-Indic digit handling, but says nothing about pagination, result limits, or ordering for a bulk list operation.

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

Conciseness4/5

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

The core purpose is front-loaded in one sentence, followed by endpoint and auth details. The trailing Persian/Arabic-Indic digit boilerplate is generic filler that does not help an agent call this particular 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 one-parameter read-only list tool with no output schema, the description covers what is retrieved, the scope, the endpoint, and the auth requirement. Return shape and pagination behavior are unstated, though the 'all teams' phrasing implies no pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 the single account_id parameter, so the schema already carries the semantics. The description only echoes account scope via the URL template and adds no format or constraint details beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource ('List all teams available in the current account') and scopes it to the account, which cleanly separates it from siblings like gapify_get_team, gapify_create_team, and gapify_list_team_agents. An agent can identify the operation 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 'current account' scope and the included endpoint/auth line imply when this tool applies, but there is no explicit statement of when to use it versus gapify_get_team or other team endpoints, and no exclusions. Guidance 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.

gapify_list_webhooksWebhooks: List all webhooksB
Read-onlyIdempotent

List all webhooks in the account [Webhooks] GET /api/v1/accounts/{account_id}/webhooks Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the bar is lower. The description still adds real context: the auth mechanism (User API key in the api-access-token header) and that values pass through unchanged in Persian/other scripts, which matters for interpreting results.

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

Conciseness3/5

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

The core purpose is front-loaded in the first line, but the description then front-loads an endpoint path and a language/digit boilerplate note that is only marginally relevant to a list operation. It is acceptable but not tight.

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

Completeness3/5

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

Auth and endpoint are covered, but for a list tool there is no mention of pagination, result limits, or ordering, and there is no output schema to fall back on. Adequate but with a clear gap for an agent expecting potentially large result sets.

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

Parameters3/5

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

Only one parameter exists and schema coverage is 100%, with the schema describing account_id as the numeric account ID. The description adds no syntax or format 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 and resource ('List all webhooks in the account') and the endpoint reinforces it. It is clearly distinguishable from gapify_add_webhook/gapify_update_webhook/gapify_delete_webhook by verb, though it never explicitly names those siblings.

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

Usage 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 the other webhook tools beyond the verb itself, and no prerequisites or exclusions are stated. An agent must infer that a read-only listing is appropriate.

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

gapify_platform_create_accountAccounts: Create an AccountA

Create an Account [Accounts] POST /platform/api/v1/accounts Auth: Platform app API key (header api-access-token). Body fields: name. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.6/5.0
Behavior4/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, openWorldHint=true), so the bar is lower. The description adds real value beyond that: it specifies the required auth header (api-access-token) and documents that text/ID/number values pass through unchanged with Persian or Arabic-Indic digit handling. It still says nothing about duplicate-name behavior or failure modes, keeping it short of a 5.

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

Conciseness4/5

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

Well front-loaded: verb+resource first, then endpoint, auth, body fields, and edge-case notes in a compact block. Every line carries information, with only minor redundancy between the schema-documented extra_body and its restatement here.

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 with no output schema, the description supplies the endpoint, the auth requirement, the writable field, and value-encoding caveats. Given annotations carry the safety profile and the schema is fully documented, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description restates "Body fields: name" and the extra_body merge mechanism rather than adding syntax or constraints beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ("Create an Account") and pins the exact endpoint (POST /platform/api/v1/accounts), which cleanly separates it from get_account, update_account, and delete_account. It doesn't explicitly name a sibling, but the create-vs-read/update/delete distinction is unambiguous from the name and verb.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no exclusions. It never clarifies how create_account differs from the adjacent creation tools like create_account_user or create_user, so the agent must infer routing from the name alone.

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

gapify_platform_create_account_userAccount Users: Create an Account UserB

Create an Account User [Account Users] POST /platform/api/v1/accounts/{account_id}/account_users Auth: Platform app API key (header api-access-token). Body fields: user_id (required), role (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYeswhether user is an administrator or agent
user_idYesThe ID of the user Example: 1
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already establish write (readOnlyHint=false), non-idempotent, non-destructive, and open-world behavior. The description adds genuine value beyond that: the exact auth mechanism (Platform app API key in `api-access-token` header) and the extra_body passthrough channel. It stops short of stating what happens on duplicate calls or what the response contains, but with annotations present this is solid added 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?

Front-loaded with the action and endpoint, then auth, then body fields — a sensible ordering. The closing sentence about Persian/Farsi text and Arabic-Indic digits is tangential to invoking the tool and costs a little focus, but overall the wording is tight and free of 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 mutation tool with no output schema, the description covers the invocation essentials (auth, path, required body fields) but never says what the call returns or how to interpret success. Given the absence of an output schema, that is a real gap for a create operation, though the input side is adequately covered.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (account_id, user_id, role, extra_body) are already documented in the schema. The description restates the required body fields and confirms the extra_body escape hatch but adds no syntax, format, or validation detail. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb+resource ('Create an Account User') and even pins the REST endpoint, so the agent knows exactly which entity is being created. It does not, however, differentiate this from sibling create operations like gapify_platform_create_user or gapify_create_user, leaving the scope distinction ('account user' vs 'user') to be inferred from the name.

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

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 create_user or list_account_users. The description reads as API reference documentation rather than routing guidance, so the agent gets no help choosing this tool over its siblings.

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

gapify_platform_create_agent_botAgentBots: Create an Agent BotA

Create an agent bot [AgentBots] POST /platform/api/v1/agent_bots Auth: Platform app API key (header api-access-token). Body fields: name, description, outgoing_url. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the agent bot
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the agent bot
outgoing_urlNoThe webhook URL for the bot Example: "https://example.com"

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the write/idempotency/safety profile, and the description usefully adds context beyond them: the required auth header, the exact HTTP route, and the fact that unlisted fields can be merged via extra_body. The note that text and digits are sent unchanged (Persian/Arabic-Indic) is a genuine behavioral detail not present in annotations or schema.

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

Conciseness4/5

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

Compact and front-loaded: purpose first, then endpoint, auth, body fields, and caveats in descending priority. The bracketed "[AgentBots]" tag and the trailing language note are slightly noisy but each line carries information.

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

Completeness4/5

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

For a creation tool with no output schema and annotations already covering safety, the description supplies auth, route, field list, an extensibility mechanism, and an encoding caveat. It omits what the response contains and whether any field is actually required (schema reports zero required), which is a minor but real gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it names the body fields as the request body (name, description, outgoing_url), explains the extra_body merge escape hatch for unlisted keys, and documents the digit/language passthrough behavior that affects how parameter values are transmitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an agent bot") and pins it to an exact endpoint (POST /platform/api/v1/agent_bots), so the operation is unambiguous. It does not, however, distinguish itself from the near-identical sibling gapify_create_agent_bot, leaving the agent to guess which of the two create tools applies to its credential type.

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

Usage Guidelines3/5

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

Usage is only implied by the verb and by the stated auth requirement ("Platform app API key"), which does tell the agent this is the platform-app route rather than the regular one. There is no explicit when-to-use/when-not guidance and no routing away from the sibling create_agent_bot tool.

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

gapify_platform_create_userUsers: Create a UserA

Create a User [Users] POST /platform/api/v1/users Auth: Platform app API key (header api-access-token). Body fields: name, email, password, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the user
emailNoEmail of the user Example: "user@example.com"
passwordNoPassword must contain uppercase, lowercase letters, number and a special character
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
custom_attributesNoCustom attributes you want to associate with the user Example: {}

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the write semantics are covered. The description adds genuinely useful context beyond that: the required auth header (`api-access-token`) and the locale/digit-handling behavior for Persian/Arabic-Indic input, which are not in 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?

Front-loaded with the action and endpoint, then auth and body fields, in a compact block. The locale/digit sentence is slightly tangential but earns its place by warning about input encoding. No redundant sentences.

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

Completeness4/5

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

For a 5-parameter create tool with nested objects and no output schema, the description covers the endpoint, auth, body fields, and input-encoding caveats. It omits error/conflict behavior, but the core information an agent needs to invoke it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents name, email, password, extra_body, and custom_attributes. The description restates the same body fields (name, email, password, custom_attributes) and mentions extra_body, adding no format or constraint detail beyond what the schema provides. 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 ('Create a User') plus the concrete endpoint POST /platform/api/v1/users. It does not, however, differentiate this platform-level user creation from the sibling gapify_platform_create_account_user, which an agent could easily confuse it with.

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

Usage Guidelines2/5

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

Provides the auth mechanism and endpoint, but gives no guidance on when to use this over the many other creation siblings (create_account, create_account_user, create_agent_bot). No prerequisites, exclusions, or alternative routing are stated.

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

gapify_platform_delete_accountAccounts: Delete an AccountA
DestructiveIdempotent

Delete an Account [Accounts] DELETE /platform/api/v1/accounts/{account_id} Auth: Platform app API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the description's 'Destructive: this permanently deletes the resource' is somewhat redundant but reinforces the consequence. It adds useful context about authentication (API key header) and input encoding (Persian/Arabic-Indic digits), which are not covered by 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?

The description is front-loaded with the core action and includes key details (endpoint, auth, destructiveness, encoding) in a compact form. The note about Persian/Arabic-Indic digits is relevant but could be seen as slightly tangential to a delete operation.

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

Completeness4/5

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

For a simple delete tool with one parameter and rich annotations, the description covers the essentials: endpoint, auth, destructive nature, and input encoding. It does not describe error behavior or response format, but with no output schema this is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter is fully documented in the schema. The description adds no additional semantics about account_id beyond noting that IDs may use Persian/Arabic-Indic digits, which is general input formatting rather than parameter-specific meaning.

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 (Delete) and resource (Account) and includes the HTTP method and endpoint. This clearly distinguishes it from sibling tools like create_account, get_account, and update_account.

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

Usage Guidelines3/5

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

The description implies usage through the operation name and destructive warning, but provides no explicit guidance on when to use this tool versus alternatives (e.g., deactivating an account or deleting other resources). No when-not or alternative tools are mentioned.

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

gapify_platform_delete_account_userAccount Users: Delete an Account UserB
DestructiveIdempotent

Delete an Account User [Account Users] DELETE /platform/api/v1/accounts/{account_id}/account_users Auth: Platform app API key (header api-access-token). Body fields: user_id (required). Extra fields can be passed via extra_body. Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe ID of the user Example: 1
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

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, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful auth context (Platform app API key header) and a language/digit-handling note, but it does not clarify whether the user is removed only from the account or deleted globally, which is a key behavioral distinction from gapify_platform_delete_user.

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

Conciseness4/5

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

The content is front-loaded with the action, endpoint, and auth, then lists body fields and a language note. It is reasonably tight, though the 'Destructive: this permanently deletes the resource' sentence largely repeats the destructiveHint annotation.

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 delete tool with no output schema, the description covers the endpoint, auth, required body field, and language handling. It leaves important operational context unstated, such as the effect on the user's account membership versus global user deletion, and any error or not-found behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents user_id, account_id, and extra_body. The description confirms that user_id is a required body field and that extra_body accepts unlisted keys, but adds no format, constraint, or example 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 ('Delete an Account User') and even includes the HTTP method and endpoint, so the core action is unambiguous. It does not explicitly distinguish this from the sibling gapify_platform_delete_user, which is a meaningful ambiguity given the similar name.

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

Usage Guidelines2/5

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

The description states the auth requirement and body fields but offers no when-to-use guidance, no prerequisites, and no comparison to alternatives like delete_user or delete_account. The agent must infer the selection context from the tool name alone.

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

gapify_platform_delete_agent_botAgentBots: Delete an AgentBotA
DestructiveIdempotent

Delete an agent bot [AgentBots] DELETE /platform/api/v1/agent_bots/{id} Auth: Platform app API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real value on top: the exact auth requirement (Platform app API key in the `api-access-token` header) and an explicit statement that deletion is permanent. The trailing note about text/ID digit encodings is largely irrelevant here since the only parameter is an 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?

Front-loaded with purpose, endpoint, auth and destructiveness — the operationally important facts come first. The Persian/Farsi digit sentence is boilerplate that earns little for a single-ID delete call, so it is slightly padded but not wasteful enough to hurt much.

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

Completeness4/5

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

For a one-parameter destructive delete with no output schema, the description covers purpose, endpoint, auth and irreversibility, which is nearly everything the agent needs. Missing only minor operational details such as behavior when the ID does not exist (e.g. 404).

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

Parameters4/5

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

Schema coverage is 100% for the single `id` parameter, so the baseline is 3; the description earns an extra point by disclosing that IDs may be supplied in Persian or Arabic-Indic digits, which is genuine input-format guidance the schema does not contain. It does not, however, correct the schema's misleading text that calls the ID 'the agentbot to be updated'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Delete an agent bot [AgentBots]') plus the concrete endpoint DELETE /platform/api/v1/agent_bots/{id}. That is unambiguous, though it never explicitly distinguishes itself from the near-identical sibling gapify_delete_agent_bot (the non-platform variant), leaving the agent to infer the platform/CLI split from the name.

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

Usage Guidelines3/5

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

Usage is only implied: the word 'Delete' and the warning 'this permanently deletes the resource' tell the agent this is the removal path for an agent bot, but there is no explicit when-to-use statement, no prerequisites, and no reference to any alternative tool.

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

gapify_platform_delete_userUsers: Delete a UserA
DestructiveIdempotent

Delete a User [Users] DELETE /platform/api/v1/users/{id} Auth: Platform app API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe numeric ID of the user on the platform

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint and openWorldHint, so the permanence statement is partly redundant. The description does add new context the annotations lack: the required auth header ('api-access-token') and the platform endpoint path. It stops short of describing cascade effects or behavior when the ID does not exist.

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

Conciseness3/5

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

The operation, endpoint, auth and destructive warning are front-loaded and efficient. However, the trailing sentence about writing text values in Persian is irrelevant to a delete-by-ID call that sends no text, so it is wasted space rather than earning its place.

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

Completeness4/5

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

For a one-parameter destructive tool with full schema coverage and full annotations but no output schema, the description covers the essentials: endpoint, auth, and permanence. It omits error/not-found behavior and whether related resources are removed, which would be useful for an openWorld deletion.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by noting that IDs and numbers may be supplied in Persian/Arabic-Indic digits, which is directly relevant to the single 'id' parameter and not captured in the schema.

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

Purpose4/5

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

States a specific verb and resource ('Delete a User') and names the concrete endpoint, so the operation is unambiguous. It does not explicitly distinguish itself from siblings like update_user or delete_account_user, but the verb+resource pairing is clear enough 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 update_user (e.g., deactivation) or delete_account_user, and no prerequisites beyond the auth note. The 'Platform app API key' hint weakly implies the platform-admin context versus the gapify_client_* family, but there are no explicit alternatives or exclusions.

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

gapify_platform_get_accountAccounts: Get an account detailsA
Read-onlyIdempotent

Get the details of an account [Accounts] GET /platform/api/v1/accounts/{account_id} Auth: Platform app API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

A3.7/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 open-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: the required auth header (`api-access-token`) and the note that text/ID values may arrive in Persian or Arabic-Indic digits.

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 purpose is front-loaded in the first clause, followed by endpoint, auth, and encoding notes. Content is dense but each line carries operational value; the bracketed '[Accounts]' tag is minor noise.

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

Completeness3/5

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

For a single-parameter read tool with no output schema, the description covers invocation (path, auth, encoding) but says nothing about what the returned account details contain, leaving a gap that the absent output schema would otherwise require the description to fill.

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

Parameters4/5

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

Schema coverage is 100% with a single required account_id, so the baseline is 3. The description contributes extra semantic value by flagging that IDs and numbers may be encoded in Persian or Arabic-Indic digits, which matters for how the agent supplies account_id.

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

Purpose4/5

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

States a specific verb and resource ('Get the details of an account') and includes the concrete HTTP endpoint, so the agent knows exactly what it retrieves. It is distinguishable from the create/update/delete account siblings by the read verb, though it does not name them explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the read-only 'get details' framing and the sibling set, but there is no statement of when to call this versus update_account or list_account_users, and no prerequisites or exclusions are given.

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

gapify_platform_get_agent_botAgentBots: Get an agent bot detailsA
Read-onlyIdempotent

Get the details of an agent bot [AgentBots] GET /platform/api/v1/agent_bots/{id} Auth: Platform app API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated

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, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond them: the required auth scheme and header name ('api-access-token'), plus a locale caveat about Persian/Arabic-Indic digits being passed unchanged. It still does not describe what the response contains.

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

Conciseness4/5

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

The definition is compact and front-loads the purpose before the endpoint, auth and encoding notes. The endpoint and auth lines are boilerplate but plausibly useful; nothing is redundant or padded.

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

Completeness4/5

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

For a single-parameter read with full schema coverage and complete annotations, the description supplies purpose, endpoint, auth and encoding caveats. The one gap is that no output schema exists and the description does not hint at what fields are returned, but the remaining essentials are present.

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

Parameters4/5

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

Schema coverage is 100% for the single 'id' parameter, which sets a baseline of 3. The description goes slightly further by noting that IDs may be written with Persian or Arabic-Indic digits, which is directly relevant to how the id value is supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Get the details of an agent bot') and pins the exact endpoint (GET /platform/api/v1/agent_bots/{id}), which implicitly distinguishes it from the sibling gapify_get_agent_bot in a different API surface. However, it never explicitly differentiates itself from the near-identical sibling, leaving the agent to infer the distinction from the path.

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 such as gapify_get_agent_bot or gapify_platform_list_agent_bots. The auth note ('Platform app API key') implies a context but does not state the selection condition, so the agent gets no explicit routing help.

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

gapify_platform_get_userUsers: Get an user detailsA
Read-onlyIdempotent

Get the details of a user [Users] GET /platform/api/v1/users/{id} Auth: Platform app API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe numeric ID of the user on the platform

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 earns credit by adding the auth mechanism (api-access-token header) and the notable behavioral caveat that text may arrive in Persian/Arabic and that IDs/phone numbers can use Persian or Arabic-Indic digits.

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

Conciseness4/5

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

Front-loads the purpose, then the endpoint, then auth, then the encoding caveat. All sentences carry information; the digit-encoding note is slightly tangential to a getter but still relevant to supplying the ID correctly.

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

Completeness4/5

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

For a single-parameter, fully documented, read-only lookup with no output schema, the description covers endpoint, auth, and input encoding. It does not describe the shape of the returned user, but with no output schema that omission is minor.

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

Parameters4/5

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

Schema coverage is 100%, so the id parameter is already documented and baseline would be 3. The description adds genuine meaning beyond the schema by warning that the numeric ID may be expressed in Persian or Arabic-Indic digits, which affects how the agent should format the value.

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

Purpose4/5

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

States a clear verb+resource ('Get the details of a user') and pins it down with the concrete endpoint GET /platform/api/v1/users/{id}, so an agent can distinguish it from the sibling list/create/update/delete user tools. It does not explicitly name which sibling to prefer, so it falls just short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied: the endpoint path makes clear it fetches one user by ID, and the auth note hints at prerequisites, but there is no explicit when-to-use/when-not or routing to alternatives such as list_account_users or get_user_sso_link. Adequate but with a clear gap.

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

gapify_platform_list_account_usersAccount Users: List all Account UsersA
Read-onlyIdempotent

List all account users [Account Users] GET /platform/api/v1/accounts/{account_id}/account_users Auth: Platform app API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesThe numeric ID of the account

TDQS

A3.5/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 openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: the exact auth mechanism (Platform app API key in the api-access-token header) and the fact that text is passed through unchanged with Persian/Arabic-Indic digit handling, which affects how an agent should format inputs.

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

Conciseness4/5

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

Front-loaded with the purpose, followed by endpoint, auth, and encoding notes in a compact block. Every line carries information, though the Persian/Arabic-Indic digit caveat is somewhat generic boilerplate that could be trimmed for a tightly scoped reader.

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

Completeness4/5

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

For a single-parameter read that needs no output schema, the description covers purpose, endpoint, and auth, which is sufficient for an agent to call it correctly. Only pagination/filtering or result-shape hints are absent, and those are minor for a list 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 single account_id parameter is already documented as 'The numeric ID of the account'. The description adds nothing further about the parameter, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List all account users'), clearly separating it from the create_account_user and delete_account_user siblings by the 'List' verb. It does not, however, explicitly name the alternative tools or scope the listing (e.g. pagination), so sibling differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

The description provides no when-to-use or when-not-to-use guidance and never references alternatives. The only extra context (endpoint path, auth header) is invocation mechanics, not usage guidance, leaving the agent to infer when to call this versus related list tools.

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

gapify_platform_list_agent_botsAgentBots: List all AgentBotsA
Read-onlyIdempotent

List all agent bots available [AgentBots] GET /platform/api/v1/agent_bots Auth: Platform app API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds real context beyond that: the required auth mechanism (Platform app API key in the `api-access-token` header) and the encoding caveat about Persian/Arabic-Indic digits, which an agent would not learn from the annotations or the empty schema.

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

Conciseness3/5

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

The core purpose is front-loaded and the endpoint and auth lines are terse and useful. The trailing sentence about Persian/Arabic-Indic digits is boilerplate that does not earn its place on a zero-parameter read tool and slightly muddies the description.

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 parameterless read-only list tool whose annotations already carry the safety profile, the description covers purpose, endpoint, and auth, which is enough to invoke it correctly. With no output schema present, a brief note on the shape of the returned list would have closed the remaining gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The only parameter-adjacent note (language/digit handling) concerns values sent, of which there are none here.

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

Purpose4/5

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

The description states a specific verb and resource ('List all agent bots available') and pins the exact endpoint (GET /platform/api/v1/agent_bots), so the agent knows precisely what it returns. It does not, however, distinguish this platform-API variant from the near-identical sibling `gapify_list_agent_bots`, leaving the agent to guess which of the two 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 and no mention of alternatives. With siblings `gapify_list_agent_bots`, `gapify_get_agent_bot`, and the create/update/delete agent-bot tools all present, the agent gets no help deciding between the list, the single-get, or the non-platform duplicate.

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

gapify_platform_update_accountAccounts: Update an accountA

Update an account's attributes [Accounts] PATCH /platform/api/v1/accounts/{account_id} Auth: Platform app API key (header api-access-token). Body fields: name. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of the account
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the write/non-destructive/non-idempotent/open-world profile, so the bar is lower, and the description adds real context on top: the required auth header (api-access-token), the PATCH verb, and the extra_body merge channel. The note that text is sent unchanged and that IDs/numbers/phones may use Persian or Arabic-Indic digits is a genuinely useful behavioral caveat. It stops short of describing error or partial-update behavior.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, followed by endpoint, auth and body details in a compact block. Every line carries information, though the encoding caveat is somewhat tangential and the whole is denser than a purely task-oriented description needs to be.

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

Completeness4/5

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

For a mutation tool with annotations covering the safety profile, 100% schema coverage and no output schema, the description supplies auth requirements, the exact endpoint, the writable field, the extra_body escape hatch and an encoding caveat. The main omission is what PATCH does to fields not supplied, but otherwise an agent has enough to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents account_id and name. The description goes further by clarifying that only 'name' is a first-class body field and that any other body keys must be routed through extra_body, plus the encoding note that applies to parameter values — meaningful semantics beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Update an account's attributes') and even pins the endpoint (PATCH /platform/api/v1/accounts/{account_id}), which separates it cleanly from create_account, get_account and delete_account. It does not explicitly contrast itself with the other update_* siblings (update_user, update_agent_bot), but the resource name makes the distinction 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 when-to-use or when-not-to-use guidance and no named alternative among the many update_* and *_account siblings. The verb implies mutation, but the agent is left to infer that this is the tool for changing an existing account rather than, say, re-creating it.

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

gapify_platform_update_agent_botAgentBots: Update an agent botA

Update an agent bot's attributes [AgentBots] PATCH /platform/api/v1/agent_bots/{id} Auth: Platform app API key (header api-access-token). Body fields: name, description, outgoing_url. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated
nameNoThe name of the agent bot
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the agent bot
outgoing_urlNoThe webhook URL for the bot Example: "https://example.com"

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent, open-world), so the bar is lower. The description adds genuinely useful context beyond them: the required auth header, the HTTP method and path, the `extra_body` merge escape hatch, and the important note that Persian/Arabic-Indic digits and non-English text pass through unchanged. It does not clarify whether omitted fields are preserved or cleared on a partial update.

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

Conciseness4/5

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

Front-loaded with the action, then endpoint, auth, fields, and the encoding note in a compact block with no filler. The only mild redundancy is restating body fields already present in the schema, but it functions as a quick-scan summary.

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

Completeness5/5

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

There is no output schema, so the description need not describe return values. For a 5-parameter mutation tool with full schema coverage and annotations covering the safety profile, the definition supplies auth, endpoint, writable fields, the extra_body mechanism, and an edge-case encoding rule — everything an agent needs to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds value: it enumerates the writable body fields (name, description, outgoing_url), explains that unlisted keys go through `extra_body`, and adds a value-format caveat about digit/language handling that the schema does not mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ("Update an agent bot's attributes") and pins the exact operation with `[AgentBots] PATCH /platform/api/v1/agent_bots/{id}`. It does not differentiate itself from the near-identical sibling `gapify_update_agent_bot` (non-platform variant), leaving the agent to infer the surface distinction.

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

Usage Guidelines3/5

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

Usage is only implied: the presence of a required `id` and the PATCH endpoint make clear this is for modifying an existing bot. There is no explicit when-to-use, no when-not-to-use, and no mention of how it relates to the competing `gapify_update_agent_bot` sibling. The auth prerequisite (`api-access-token`) is stated, which is a small positive.

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

gapify_platform_update_userUsers: Update a userA

Update a user's attributes [Users] PATCH /platform/api/v1/users/{id} Auth: Platform app API key (header api-access-token). Body fields: name, email, password, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe numeric ID of the user on the platform
nameNoName of the user
emailNoEmail of the user Example: "user@example.com"
passwordNoPassword must contain uppercase, lowercase letters, number and a special character
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
custom_attributesNoCustom attributes you want to associate with the user Example: {}

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent, open-world), so the bar is lower. The description adds real context beyond them: the required auth mode (Platform app API key via api-access-token header), that extra_body merges unlisted fields, and that Persian/Arabic-Indic digits and text pass through unchanged. It stops short of describing partial-update semantics or what happens to fields left unset.

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

Conciseness4/5

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

Front-loads the purpose, then layers endpoint, auth, and encoding notes; every sentence carries information. It is dense but not padded, though the bracketed tag and trailing encoding caveat slightly dilute the core message.

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

Completeness4/5

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

For a 6-parameter update method with no output schema, the description covers purpose, endpoint, auth, body fields, and encoding behavior adequately. It omits error/permission outcomes and return behavior, which is acceptable given the absence of an output schema but leaves minor gaps for a mutation tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds non-obvious semantic value not in the schema: the Persian/Arabic-Indic digit and multi-language handling, plus confirmation of which fields form the body. The field list itself is somewhat redundant with the schema, keeping this just above baseline.

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

Purpose4/5

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

States a specific verb and resource ("Update a user's attributes") plus the concrete endpoint PATCH /platform/api/v1/users/{id}, so the agent knows exactly what this does. It does not explicitly name or differentiate itself from the sibling update tools (update_account, update_agent_bot), but the verb+resource is unambiguous.

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

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 choose this tool over alternatives such as update_account, create_user, or get_user; the reader is left to infer from the name alone. The only usage-flavored notes (extra_body passthrough, language/digit handling) describe invocation mechanics rather than tool selection.

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

gapify_raw_requestRaw Gapify API requestA
Destructive

Send an arbitrary request to the Gapify API for endpoints not covered by the generated tools. Path is relative to the base URL (e.g. /api/v1/accounts/1/labels). Uses the user API key unless auth is changed. Persian digits in the path are converted to ASCII; the body is sent as UTF-8 JSON, so Persian text is preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
authNoWhich API key to senduser
bodyNoJSON body
pathYesPath relative to the base URL, starting with /
queryNoQuery string parameters
methodYesHTTP method

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already disclose destructive, non-idempotent, and open-world behavior. The description adds valuable context beyond that: default auth key, path-relative-to-base-URL convention, Persian digit conversion, and UTF-8 JSON body handling. It doesn't cover rate limits or error behavior, but for a raw request tool this is solid added 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?

Three tightly written sentences with zero filler. The fallback purpose and path convention are front-loaded, and the encoding quirks are noted without digression.

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 raw request tool with five well-documented parameters, an explicit fallback role, and annotations covering safety, the description is complete. It tells an agent everything needed to construct a valid call without explaining return values, which is appropriate given the absence of an output schema.

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

Parameters4/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 each parameter. The description adds a concrete path example and clarifies that auth defaults to the user API key, providing marginal but useful meaning beyond the schema.

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

Purpose5/5

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

States a specific verb (send) and resource (arbitrary request to Gapify API) and distinguishes itself from the many generated endpoint tools by explicitly positioning itself as the fallback for uncovered endpoints. An agent can select it correctly without opening any schema.

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

Usage Guidelines4/5

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

Explicitly says to use it 'for endpoints not covered by the generated tools,' which clearly implies preferring the specific sibling tools when they exist. It doesn't spell out exclusions or list a concrete alternative, but the routing condition is unambiguous.

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

gapify_remove_agentAgents: Remove an Agent from AccountA
DestructiveIdempotent

Remove an agent from the account [Agents] DELETE /api/v1/accounts/{account_id}/agents/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agent to be deleted
account_idYesThe numeric ID of the account

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the 'permanently deletes' note is largely redundant. The description does add genuinely useful context beyond annotations: the required auth scheme (User API key in an api-access-token header) and the note that IDs/numbers may arrive in Persian or Arabic-Indic digits and are sent through unchanged.

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

Conciseness4/5

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

Front-loads the core purpose, then the endpoint, auth, destructive warning, and encoding note in a compact block with no filler sentences. The closing encoding sentence is somewhat boilerplate but is short and potentially relevant to argument formatting.

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-required-param destructive mutation with no output schema, the description covers purpose, endpoint, auth, and irreversibility, and the schema documents both parameters. Only the ambiguity against sibling delete/remove tools keeps it short of 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 id and account_id carry their own descriptions ('The ID of the agent to be deleted', 'The numeric ID of the account'). The description adds no further parameter semantics, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('remove an agent from the account') and adds the HTTP endpoint, making the operation unambiguous. It does not, however, differentiate from siblings like gapify_delete_agent_bot or gapify_remove_inbox_agent / gapify_remove_team_agent, leaving the agent to infer the agent-vs-agent_bot 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 use this tool versus the delete/remove siblings, nor any prerequisites or caveats about irreversibility relative to alternatives. The description only states what the tool does, not when to reach for it.

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

gapify_remove_automation_ruleAutomation Rule: Remove a automation rule from accountA
DestructiveIdempotent

Remove an automation rule from the account [Automation Rule] DELETE /api/v1/accounts/{account_id}/automation_rules/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the automation rule to be deleted
account_idYesThe numeric ID of the account

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so 'Destructive: this permanently deletes the resource' largely repeats structured data. What the description genuinely adds is the authentication requirement (User API key via `api-access-token` header) and the note about Persian/Arabic-Indic digit handling. It says nothing about the response body or error behavior on a missing ID.

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

Conciseness3/5

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

Purpose, endpoint and auth are front-loaded and efficient. However, the closing sentence about text values being written in Persian is boilerplate for a tool with no free-text parameters, so it does not fully earn 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 delete with full schema coverage and annotations carrying the safety profile, the description supplies path, verb and auth, which is enough to invoke it correctly. No output schema exists, so the lack of return-value detail is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 `id` and `account_id` documented, so the baseline is 3. The description adds only a marginal hint that IDs may use Persian/Arabic-Indic digits — useful but not substantial beyond the schema.

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

Purpose5/5

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

States a specific verb ('Remove') plus resource ('automation rule') scoped to the account, and pairs it with the concrete endpoint DELETE /api/v1/accounts/{account_id}/automation_rules/{id}. An agent can distinguish it from gapify_add_automation_rule, gapify_update_automation_rule and gapify_get_automation_rule purely from the description.

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

Usage Guidelines3/5

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

The action is unambiguous, but the description never says when to choose this over alternatives or what prerequisites exist (e.g., rule must exist, permissions beyond the API key). Usage is implied by the verb only, with no exclusions or routing guidance.

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

gapify_remove_canned_responseCanned Responses: Remove a Canned Response from AccountA
DestructiveIdempotent

Remove a canned response from the account [Canned Responses] DELETE /api/v1/accounts/{account_id}/canned_responses/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the canned response to be deleted
account_idYesThe numeric ID of the account

TDQS

A3.5/5.0
Behavior3/5

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

The annotation set already declares destructiveHint=true and idempotentHint=true, so 'permanently deletes the resource' largely restates structured data. The genuinely additive content is the auth requirement (User API key in `api-access-token` header) and the note that Persian/Arabic-Indic digits and multilingual text are passed through unchanged, which an agent would not otherwise know.

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

Conciseness4/5

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

The tool purpose and endpoint are front-loaded in the first two lines, with auth and destructiveness following. The digit/encoding note is somewhat tangential but short and plausibly useful for this API's user base.

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-required-parameter destructive DELETE with full schema coverage and complete annotations, the description covers purpose, endpoint, auth and irreversibility — everything needed to call it safely. Only the success response shape is unaddressed, which is minor for a delete with 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 (id, account_id) are fully documented in the schema, so the description correctly defers to it. The only additional hints — that IDs may use Persian or Arabic-Indic digits and are sent unchanged — are marginal for a two-parameter delete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Remove a canned response from the account') and pins it down further with the literal endpoint DELETE /api/v1/accounts/{account_id}/canned_responses/{id}. It does not explicitly name siblings like gapify_update_canned_response or gapify_list_canned_responses, but the add/update/list/remove verb set makes the distinction 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?

Usage is only implied: an agent can infer this is the deletion counterpart to update/list, but the description never says when to prefer it, what preconditions exist (e.g. that the canned response must exist), or what to do instead if the intent was to deactivate rather than delete.

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

gapify_remove_custom_attributeCustom Attributes: Remove a custom attribute from accountB
DestructiveIdempotent

Remove a custom attribute from account [Custom Attributes] DELETE /api/v1/accounts/{account_id}/custom_attribute_definitions/{id} Auth: User API key (header api-access-token). Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the custom attribute to be deleted
account_idYesThe numeric ID of the account

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, idempotentHint=true and openWorldHint=true, so the 'permanently deletes' line largely repeats structured data. The added value is the auth requirement (User API key in api-access-token header), which the agent cannot get from annotations; the Persian/Arabic-Indic digits note is irrelevant to a delete operation.

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

Conciseness3/5

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

Purpose and endpoint are front-loaded, which is good, but the trailing sentence about Persian/Farsi text values and Persian/Arabic-Indic digits is irrelevant filler for a deletion operation and dilutes the definition.

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

Completeness4/5

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

For a simple two-parameter destructive call with full annotation coverage and a complete schema, the description supplies enough: purpose, endpoint, auth method and irreversibility. No output schema exists, and none is expected for a delete.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (id, account_id) are documented in the schema, so the schema carries the burden. The description adds no parameter-level detail beyond the path template, making 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+resource ('Remove a custom attribute') and even names the exact HTTP operation (DELETE .../custom_attribute_definitions/{id}). This clearly distinguishes it from the sibling verbs list/add/get/update on the same resource.

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

Usage Guidelines2/5

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

The description never states when to use this tool versus the sibling add/update/get/list custom-attribute tools, nor any precondition for removal. Usage is only inferable from the verb 'Remove', so guidance is minimal.

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

gapify_remove_inbox_agentInboxes: Remove an Agent from InboxB
DestructiveIdempotent

Remove agents from an inbox [Inboxes] DELETE /api/v1/accounts/{account_id}/inbox_members Auth: User API key (header api-access-token). Body fields: inbox_id (required), user_ids (required). Extra fields can be passed via extra_body. Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_idYesThe ID of the inbox
user_idsYesIDs of users to be deleted from the inbox Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so credit here comes from added context: the explicit DELETE endpoint, the required auth header, and the 'permanently deletes' note telling the agent what the operation destroys. Idempotency and any membership side effects are not discussed.

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

Conciseness3/5

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

The action is front-loaded, which is good, but the definition pads itself with boilerplate. The Persian/Arabic-Indic digit note is largely irrelevant to a tool that only takes IDs, and the field list duplicates 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 destructive membership-removal tool with full schema coverage and no output schema, the description covers action, endpoint, auth, required fields, and destruction semantics. Only the absence of alternative-routing guidance and idempotency context leaves 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%, so the schema already documents inbox_id, user_ids, account_id and extra_body. The description restates the required body fields but adds no format, digit-handling, or constraint detail beyond what the schema provides, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Remove agents from an inbox') and reinforces it with the HTTP verb and endpoint. It is distinguishable from add/update/list inbox-agent siblings by wording and name, though the text never names the alternatives explicitly.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative routing is provided. The description supplies auth and body-field requirements but leaves the agent to infer that this is the inverse of add_inbox_agents/update_inbox_agents.

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

gapify_remove_team_agentTeams: Remove an Agent from TeamA
DestructiveIdempotent

Remove agents from a team [Teams] DELETE /api/v1/accounts/{account_id}/teams/{team_id}/team_members Auth: User API key (header api-access-token). Body fields: user_ids (required). Extra fields can be passed via extra_body. Destructive: this permanently deletes the resource. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
user_idsYesIDs of users to be deleted from the team Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so the bar is lower. The description nonetheless adds real context: the auth mechanism (header `api-access-token`), the escape hatch via extra_body, and the note that Persian/Arabic-Indic text and digits are passed through unchanged. It restates destruction rather than adding to it, and never mentions idempotency, which is disclosed only in 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?

Front-loads the purpose and endpoint, then layers auth, body, destructiveness and text-encoding notes in a tight block. The Persian/Arabic-Indic digits sentence is somewhat tangential to a removal call but is a single line and arguably useful for the user_ids parameter.

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 a fully described schema, four annotations covering safety and idempotency, and no output schema, the description supplies the remaining essentials: endpoint, auth, body shape, and destructiveness. It stops short of disclosing response shape or what happens on partial or invalid user_ids, which is a minor residual gap.

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

Parameters3/5

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

Schema description coverage is 100% and all four parameters are already documented in the schema, so the baseline is 3. The description adds only the required/optional split for user_ids and the extra_body merge behavior, which the schema already explains for extra_body.

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

Purpose5/5

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

States a specific verb and resource ('Remove agents from a team') and backs it with the exact HTTP method and route (DELETE /api/v1/accounts/{account_id}/teams/{team_id}/team_members). An agent can distinguish this from gapify_add_team_agents, gapify_update_team_agents, and gapify_list_team_agents without opening any schema.

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

Usage Guidelines3/5

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

Usage is only implied by the destructive delete semantics and the 'Remove agents from a team' phrasing. There is no explicit statement of when to reach for this over gapify_update_team_agents or gapify_remove_agent, and no prerequisites beyond the auth line.

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

gapify_search_contactsContacts: Search ContactsA
Read-onlyIdempotent

Search resolved contacts by name, identifier, email or phone number (15 per page). Persian names and Persian-digit phone numbers are accepted [Contacts] GET /api/v1/accounts/{account_id}/contacts/search Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoQuery param. Search using contact `name`, `identifier`, `email` or `phone number`
pageNoQuery param. The page parameter Example: 1
sortNoQuery param. The attribute by which list should be sorted One of: `name`, `email`, `phone_number`, `last_activity_at`, `-name`, `-email`, `-phone_number`, `-last_activity_at` Example: name
account_idYesThe numeric ID of the account

TDQS

A3.5/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), and the description adds real context beyond them: a 15-per-page pagination limit, the required User API key header, and the fact that Persian/Arabic-Indic digits and non-Latin text are accepted unchanged. These are genuine operational details not derivable from the structured fields.

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

Conciseness4/5

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

Front-loaded with the core purpose, then endpoint, auth, and the digit-encoding note. There is mild redundancy (Persian is mentioned twice) but every line carries information and the structure is easy to scan.

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

Completeness4/5

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

For a read-only search with a fully documented schema and no output schema, the description supplies auth, pagination, and encoding behavior, which is enough for correct invocation. Absent is guidance on result shape or how the query matches across 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 q, page, sort, and account_id are already documented in the schema. The description adds only the cross-cutting note about Persian/Arabic-Indic digit handling, which does not elaborate on individual parameter syntax or constraints.

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

Purpose4/5

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

States a specific verb ('Search') and resource ('resolved contacts') plus the searchable fields (name, identifier, email, phone number), which meaningfully distinguishes it from list/filter siblings. It does not explicitly name or contrast with gapify_filter_contacts or gapify_list_contacts, so it falls just short of a 5.

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

Usage Guidelines2/5

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

The description never states when to use this search endpoint versus gapify_filter_contacts, gapify_list_contacts, or gapify_get_contact. Usage is only implied by the fact that a query term is accepted, so an agent gets no routing guidance.

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

gapify_set_contact_labelsContact Labels: Add LabelsA

Set the labels of a contact. Replaces the contact's existing labels with the given list [Contact Labels] POST /api/v1/accounts/{account_id}/contacts/{contact_identifier}/labels Auth: User API key (header api-access-token). Body fields: labels. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of labels (comma-separated strings) Example: ["string"]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
contact_identifierYesThe source id of contact obtained on contact create

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only say readOnly=false, idempotent=false, destructive=false; the description adds meaningful context beyond them by disclosing that existing labels are overwritten, the exact POST endpoint, and the required User API key header (api-access-token). It also explains extra_body for unlisted fields. It stops short of describing error or empty-list behavior.

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

Conciseness4/5

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

Front-loaded with the action and its replace semantics, followed by endpoint, auth, body, then encoding notes. It is a dense patchwork rather than prose, and the Persian/Arabic-Indic digit note is long, but every line carries operational information.

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

Completeness4/5

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

For a mutation tool with no output schema, the definition covers endpoint, auth, body fields, replace behavior, and the extra_body escape hatch. Missing only edge cases (what an empty label list does, validation/label-existence errors), which keeps it short of fully complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description earns extra credit by naming the body field (labels), explaining extra_body merge behavior, and noting that text values are sent unchanged while IDs/numbers may use Persian or Arabic-Indic digits. Those notes add real invocation meaning not present in the schema.

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

Purpose4/5

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

The description gives a specific verb+resource ('Set the labels of a contact') and, critically, spells out replace semantics: 'Replaces the contact's existing labels with the given list.' This clearly separates it from gapify_list_contact_labels, though it never explicitly names siblings like gapify_set_conversation_labels. Note the title ('Add Labels') conflicts with the body ('Replaces'), which could momentarily confuse an agent.

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

Usage Guidelines3/5

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

Usage is implied: call this when you want the contact's label set to equal the supplied list. The replace-vs-append behavior is the key when-to-use signal and it is stated. However, no alternative tool is named and no precondition (e.g., label must already exist) is given, so guidance stops at implicitly adequate.

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

gapify_set_conversation_labelsConversation Labels: Add LabelsA

Set the labels of a conversation. Replaces the conversation's existing labels with the given list [Conversation Labels] POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/labels Auth: User API key (header api-access-token). Body fields: labels. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoArray of labels (comma-separated strings) Example: ["string"]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
conversation_idYesThe numeric ID of the conversation

TDQS

A3.5/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, openWorld=true, destructive=false), and the description goes further by disclosing the replace semantics (existing labels are lost), the auth requirement (User API key in an api-access-token header), and the endpoint/extra_body mechanics. This is real context beyond the structured fields. Note a mild tension: a full replace is naturally idempotent, yet idempotentHint=false — not strong enough to call a contradiction, but worth flagging.

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

Conciseness4/5

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

Purpose and the replace constraint are front-loaded, followed by the endpoint, auth, and body notes in a compact block. The trailing Persian/Arabic-Indic digit note is somewhat tangential but not excessively verbose. Every line is at least plausibly useful.

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

Completeness4/5

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

For a mutation tool with annotations present, full schema coverage, and no output schema, the description supplies the key missing elements: replace behavior, authentication, and endpoint context. An agent has enough to invoke it correctly, though explicit prerequisites or a counterpart-listing reference would make it 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%, so the schema already documents all four parameters. The description reinforces that 'labels' is the body field and that 'extra_body' carries additional JSON properties, but adds no syntax, format, or constraint detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource ('Set the labels of a conversation') and adds the crucial scope detail that it *replaces* existing labels rather than appending, which distinguishes it from a list or add operation. The only blemish is the title 'Add Labels' pulling in the opposite direction, though the description itself is unambiguous. It does not explicitly name the sibling list tool, but the resource noun makes the target clear.

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 or when-not-to-use guidance. The description never contrasts this with gapify_list_conversation_labels or gapify_set_contact_labels, nor does it state prerequisites for calling it. The agent is left to infer context from the tool name alone.

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

gapify_set_inbox_agent_botInboxes: Add or remove agent botA

Connect an agent bot to an inbox, or disconnect it by passing agent_bot as null [Inboxes] POST /api/v1/accounts/{account_id}/inboxes/{id}/set_agent_bot Auth: User API key (header api-access-token). Body fields: agent_bot (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the inbox
agent_botYesAgent bot ID Example: 0
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

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, destructive=false, idempotent=false, openWorld=true, so the safety profile is partly covered. The description adds genuinely new context: the required User API key auth header, the concrete endpoint, and the null-to-disconnect semantic that is not visible anywhere in the schema. It still omits whether the change is reversible and what permission level is needed.

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

Conciseness4/5

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

The core behavior (connect/disconnect) is front-loaded in the first clause, followed by endpoint, auth, and body fields in a compact line. The trailing sentence about Persian/Arabic-Indic digits and unchanged text is generic boilerplate that only marginally applies to an ID-valued payload, slightly diluting focus.

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 100% schema coverage, annotations, and no output schema, the description supplies the missing operational frame: HTTP path, auth mechanism, required body field, and the extra_body escape hatch. It is largely complete, with only return behavior and required role/permission left unstated.

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 a baseline of 3 applies, but the description adds meaning the schema lacks: agent_bot is flagged as required and, critically, that passing null disconnects rather than the schema's declared number|string type implying a value is always expected. This is real semantic value beyond the schema.

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

Purpose4/5

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

States a concrete verb+resource pair ("Connect an agent bot to an inbox") and adds the inverse operation (disconnect via null). It is clearly distinguishable in intent from read siblings like gapify_show_inbox_agent_bot and gapify_list_inbox_agents, though it never names a sibling to route against 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 description gives one conditional rule: pass agent_bot as null to disconnect, which implies the connect case otherwise. There is no guidance on when to prefer this endpoint over the broader inbox-agent operations (gapify_add_inbox_agents / gapify_update_inbox_agents) or any stated prerequisites beyond auth.

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

gapify_show_inbox_agent_botInboxes: Show Inbox Agent BotA
Read-onlyIdempotent

Get the agent bot connected to an inbox, if any [Inboxes] GET /api/v1/accounts/{account_id}/inboxes/{id}/agent_bot Auth: User API key (header api-access-token). Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the inbox
account_idYesThe numeric ID of the account

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld, so the bar is lower; the description adds real context beyond them: the required auth header (`api-access-token`), the concrete endpoint, and the 'if any' hint that the bot may be absent. It still says nothing about error/404 behavior when no bot is connected.

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

Conciseness3/5

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

The core sentence and endpoint are front-loaded and tight, but the trailing note about Persian/Arabic-Indic digits is boilerplate that carries little meaning for a read-only lookup with only IDs as input. It consumes space without earning it.

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 with no output schema, the definition supplies purpose, auth, and endpoint, which is enough to invoke it correctly. Only the shape of the returned bot object and the no-bot case are left unspecified, which are minor 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 both parameters (account_id, id) are documented in the schema, so the baseline of 3 applies. The description adds no syntax, format, or digit-handling detail specific to these parameters beyond the path template.

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

Purpose4/5

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

States a specific verb and resource ('Get the agent bot connected to an inbox') and even names the exact endpoint path, which pins down scope precisely. It implicitly contrasts with the sibling gapify_set_inbox_agent_bot (write) but never names it 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 'if any' signals the read may return nothing, which is useful, but there is no explicit when-to-use guidance or mention of alternatives such as gapify_list_inbox_agents or gapify_set_inbox_agent_bot. Usage is only implied by the resource path.

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

gapify_toggle_conversation_priorityConversations: Toggle PriorityA

Set the priority of a conversation (urgent, high, medium, low or none) [Conversations] POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_priority Auth: User API key or Agent bot API key (header api-access-token). Body fields: priority. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
priorityNoNew priority. One of: `urgent`, `high`, `medium`, `low`, `none`. Example: "urgent"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
conversation_idYesThe numeric ID of the conversation

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, open-world, not idempotent, non-destructive), so the bar is lower, and the description still adds genuinely useful context: accepted auth modes (User API key or Agent bot API key via api-access-token header), the exact request shape, the extra_body escape hatch, and the fact that text is forwarded unchanged. It does not describe rate limits or side effects such as notifications to assignees.

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 purpose and enum values are front-loaded and the remaining lines are compact, though the endpoint path, auth, extra_body, and Persian-digit note are stacked densely. The digits/extra_body notes are low-frequency trivia but cheap, so the text is mostly earned.

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

Completeness4/5

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

For a mutation tool with no output schema and four schema-documented params, the description supplies the essentials an agent needs to invoke it correctly: auth modes, body shape, and the extra_body fallback. Only the response behavior and any downstream effects are left 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%, so all four parameters are already documented in the schema; the description only restates that 'priority' is the body field and that extra_body merges additional keys. Baseline 3 applies since the schema carries the load and no extra syntax or constraint detail is added.

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

Purpose5/5

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

States a specific verb and resource ('Set the priority of a conversation') and immediately enumerates the accepted values (urgent, high, medium, low, none), plus the exact endpoint. This clearly separates it from the adjacent gapify_toggle_conversation_status sibling, which operates on a different attribute.

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 name and the stated resource, and the auth prerequisite is spelled out, but there is no explicit when-to-use/when-not-to-use guidance and no routing to alternatives for related conversation mutations (status, assignee, labels).

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

gapify_toggle_conversation_statusConversations: Toggle StatusA

Change the status of a conversation (open, resolved, pending or snoozed) [Conversations] POST /api/v1/accounts/{account_id}/conversations/{conversation_id}/toggle_status Auth: User API key or Agent bot API key (header api-access-token). Body fields: status. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoNew status. One of: `open`, `resolved`, `pending`, `snoozed`. Example: "open"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
conversation_idYesThe numeric ID of the conversation

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, open-world, non-idempotent mutation, so the bar is lower. The description adds genuinely useful context the annotations lack: the POST endpoint, the two accepted credential types (User API key or Agent bot API key via api-access-token header), and that extra_body can carry unlisted fields.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by endpoint, auth, and body field notes. It is dense but every sentence carries operational information; only the trailing digit/language note feels slightly incidental.

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 required, the description covers the essentials an agent needs to invoke the tool: target statuses, endpoint, expected auth, and the extra_body escape hatch for unlisted fields. Return-value behavior is not addressed but is not needed here.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by noting that text values may be written in Persian/Farsi or other languages and sent unchanged, and that IDs/numbers/phones may use Persian or Arabic-Indic digits.

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 ('Change the status of a conversation') and enumerates the exact target states (open, resolved, pending, snoozed), which cleanly separates it from the sibling gapify_toggle_conversation_priority. An agent can identify the operation 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 description tells you what the operation does but never states when to prefer it over alternatives (e.g. assign_conversation, toggle_conversation_priority) or any prerequisite like the conversation needing to exist. Usage is only implied by the verb and endpoint.

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

gapify_update_agentAgents: Update Agent in AccountA

Update an agent in the account [Agents] PATCH /api/v1/accounts/{account_id}/agents/{id} Auth: User API key (header api-access-token). Body fields: role, availability, auto_offline. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agent to be updated.
roleNoRole of the agent. One of: `agent`, `administrator`. Example: "agent"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
auto_offlineNoWhether the availability status of agent is configured to go offline automatically when away. Example: false
availabilityNoAvailability of the agent. One of: `available`, `busy`, `offline`. Example: "available"

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 (readOnlyHint=false, idempotentHint=false, openWorldHint=true), and the description adds meaningful context beyond them: the required auth header, the PATCH/partial-update nature, the extra_body merge escape hatch, and the i18n/digit normalization behavior. It stops short of saying what happens to omitted fields or how failures surface.

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

Conciseness5/5

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

Front-loaded with verb+resource, then endpoint, auth, and body fields in a compact line-per-concern layout. No filler sentences; the locale note is terse and immediately actionable.

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 PATCH mutation with full schema coverage and no output schema, the description covers endpoint, auth, mutable fields, and the extra_body bypass. It omits partial-update semantics (whether unspecified fields are preserved) and error behavior, which would round it out.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented; the description's enumeration of 'role, availability, auto_offline' largely restates that. The one genuine addition is that text values may be sent in Persian/other languages unchanged and IDs/numbers may use Persian or Arabic-Indic digits, which affects how values should be supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an agent in the account') and anchors it with 'PATCH /api/v1/accounts/{account_id}/agents/{id}', making the operation unambiguous. It does not explicitly contrast itself with the adjacent sibling 'gapify_update_agent_bot', so the agent must rely on the 'agent' vs 'agent_bot' wording to disambiguate.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative for editing agent configuration. The description supplies mechanics (endpoint, auth, body fields) but leaves the selection decision entirely to the reader.

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

gapify_update_agent_botAccount AgentBots: Update an agent botA

Update an agent bot's attributes [Account AgentBots] PATCH /api/v1/accounts/{account_id}/agent_bots/{id} Auth: User API key (header api-access-token). Body fields: name, description, outgoing_url. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the agentbot to be updated
nameNoThe name of the agent bot
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the agent bot
outgoing_urlNoThe webhook URL for the bot Example: "https://example.com"

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly=false, destructive=false, openWorld=true), so the bar is lower. The description adds real context beyond them: the exact auth header (`api-access-token`), the extra_body merge mechanism, and the i18n handling of Persian text and Arabic-Indic digits. It still omits whether unmentioned fields are preserved or cleared during the update.

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

Conciseness4/5

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

Front-loads the purpose and endpoint in the first two lines, then groups auth, body fields, and the i18n caveat compactly. Slightly more text than strictly needed, but no sentence is pure 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 six-parameter mutation tool with no output schema but full schema coverage and annotations, the description supplies the pieces an agent needs: endpoint, auth, writable fields, and the extra_body escape hatch. Missing only partial-update semantics and error behavior, which 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?

Schema description coverage is 100%, so the schema documents every parameter; the baseline is 3. The description reinforces the three writable body fields and explains how extra_body carries unlisted keys, but adds little syntax or format detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 an agent bot's attributes") and pins it with the exact PATCH endpoint and the [Account AgentBots] scope. It does not, however, differentiate this tool from the near-identical siblings gapify_platform_update_agent_bot and gapify_update_agent, so an agent could still confuse them.

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

Usage Guidelines3/5

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

Usage is implied by the update semantics and the account-scoped endpoint, but there is no explicit when-to-use statement, no mention of the create/delete siblings, and no note on when the platform-level variant should be preferred instead.

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

gapify_update_automation_ruleAutomation Rule: Update automation rule in AccountA

Update an automation rule in the account [Automation Rule] PATCH /api/v1/accounts/{account_id}/automation_rules/{id} Auth: User API key (header api-access-token). Body fields: name, description, event_name, active, actions, conditions. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the automation rule to be updated.
nameNoRule name Example: "Add label on message create event"
activeNoEnable/disable automation rule Example: false
actionsNoArray of actions which you want to perform when condition matches, e.g add label support if message contains content help. Example: [{"action_name":"add_label","action_params":["support"]}]
account_idYesThe numeric ID of the account
conditionsNoArray of conditions on which conversation filter would work, e.g message content contains text help. Example: [{"attribute_key":"content","filter_operator":"contains","query_operator":"nil","values":["help"]}]
event_nameNoEvent that triggers the rule. One of: `conversation_created`, `conversation_updated`, `message_created`. Example: "message_created"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description about the automation and actions Example: "Add label support and sales on message create event if incoming message content contains text help"

TDQS

A3.8/5.0
Behavior4/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, openWorldHint=true), and the description adds genuinely useful behavior: the literal HTTP method, the required User API key header, the merge behavior of extra_body, and that Persian/Arabic-Indic digits are passed through unchanged. It does not explain what happens to fields left unset on a PATCH, which is the one behavioral detail still missing.

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

Conciseness4/5

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

Front-loaded with the verb, resource, and endpoint, and the remaining lines are dense with actionable facts. The explicit re-listing of body fields is mildly redundant against a 100%-covered schema, keeping it just under top marks.

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 9-parameter, nested-object mutation tool with no output schema, the description covers auth, transport, the principal body fields, an escape hatch for unknown fields, and text/digit encoding — enough for correct invocation. The remaining hole is update semantics (partial vs full) and whether existing rules' unmentioned fields are preserved.

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 baseline is 3, and the description does duplicate the field list rather than extend it. However, the notes on extra_body for unlisted keys and on Persian/Arabic-Indic digit handling convey non-obvious input semantics that the schema does not encode, which lifts it above the baseline.

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

Purpose4/5

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

States a specific verb and resource ("Update an automation rule in the account") and pins it to PATCH /accounts/{account_id}/automation_rules/{id}, which unambiguously separates it from gapify_add_automation_rule, gapify_get_automation_rule and gapify_remove_automation_rule. It stops short of naming a sibling or contrasting scope, so it is clear but not maximally differentiating.

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

Usage Guidelines3/5

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

Usage is only implied by "update": an agent can infer this is for modifying an existing rule, but there is no statement of when to prefer this over add/remove, nor whether the update is partial or a full replacement. Given this is a PATCH, the absence of any partial-vs-full guidance is a real gap.

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

gapify_update_canned_responseCanned Responses: Update Canned Response in AccountA

Update a canned response in the account [Canned Responses] PATCH /api/v1/accounts/{account_id}/canned_responses/{id} Auth: User API key (header api-access-token). Body fields: content, short_code. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the canned response to be updated.
contentNoMessage content for canned response
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
short_codeNoShort Code for quick access of the canned response

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnly=false, idempotent=false), so the bar is lower; the description still adds real value beyond them by disclosing the auth requirement (api-access-token header), the PATCH/partial-update nature, and the extra_body escape hatch for unlisted fields. It stops short of describing failure modes or what happens to values not passed.

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

Conciseness4/5

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

Front-loaded with the purpose, then endpoint, auth, and body fields in a tight block. The Persian-digits sentence is unusual but plausibly useful for this API; overall efficient, with only minor redundancy in repeating the resource tag.

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

Completeness4/5

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

There is no output schema and annotations carry the safety profile, so the description's burden is the call mechanics. It covers endpoint, auth, updatable fields, and the extra_body mechanism, leaving only return behavior and partial-update edge cases unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter and the baseline is 3. The description mildly enriches this by noting which fields are body fields (content, short_code) and that extra_body merges additional keys, plus a note on Persian/Arabic-Indic digits, but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

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 canned response in the account') and tags the resource family '[Canned Responses]'. It is easily distinguishable from add/list/remove canned response siblings, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'update' and the PATCH endpoint imply this is for modifying an existing canned response, but there is no explicit when-to-use guidance, no prerequisites, and no direction to gapify_add_canned_response for creation vs this for modification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_contactContacts: Update ContactA
Idempotent

Update a contact by ID [Contacts] PUT /api/v1/accounts/{account_id}/contacts/{id} Auth: User API key (header api-access-token). Body fields: name, email, phone_number, avatar, avatar_url, identifier, custom_attributes. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the contact
nameNoname of the contact
emailNoemail of the contact Example: "user@example.com"
avatarNoSend the form data with the avatar image binary or use the avatar_url
account_idYesThe numeric ID of the account
avatar_urlNoThe url to a jpeg, png file for the contact avatar Example: "https://example.com"
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
identifierNoA unique identifier for the contact in external system
phone_numberNophone number of the contact
custom_attributesNoAn object where you can store custom attributes for contact. example {"type":"customer", "age":30} Example: {}

TDQS

A3.6/5.0
Behavior4/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=true), so the description's job is to add context. It does: the required auth header (`api-access-token`), the extra_body escape hatch, and the non-obvious encoding behavior (Persian/Arabic-Indic digits accepted and passed through unchanged). It still doesn't state whether omitted fields are left untouched (partial vs replace semantics).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tightly packed sentences, purpose front-loaded, no repetition of the schema's per-field descriptions. Minor noise from the '[Contacts]' tag and the raw endpoint/auth boilerplate, but nothing wasteful enough to hurt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter REST mutation with no output schema, the description covers the essentials: identity, endpoint, auth, body field set, extension field, and encoding caveats. The one real gap is update semantics (partial vs full overwrite) and error behavior, which annotations only partially imply via idempotentHint.

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 documenting the extra_body merge mechanism and, more usefully, clarifying the accepted digit forms for ID/number-style parameters that the schema does not mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 contact by ID') and pins it to the exact endpoint PUT /api/v1/accounts/{account_id}/contacts/{id}. It is clearly separable from create/get/delete contact siblings, though it never explicitly distinguishes itself from the client-API twin gapify_client_update_contact beyond the auth line.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool does but never when to use it versus alternatives (e.g. gapify_client_update_contact, gapify_create_contact, gapify_set_contact_labels). No preconditions, no exclusions, no routing guidance for the ~100 sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_custom_attributeCustom Attributes: Update custom attribute in AccountA

Update a custom attribute in account [Custom Attributes] PATCH /api/v1/accounts/{account_id}/custom_attribute_definitions/{id} Auth: User API key (header api-access-token). Body fields: attribute_display_name, attribute_display_type, attribute_description, attribute_key, attribute_values, attribute_model. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the custom attribute to be updated.
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
attribute_keyNoAttribute unique key value
attribute_modelNoAttribute type(conversation_attribute- 0, contact_attribute- 1) Example: 0
attribute_valuesNoAttribute values Example: ["string"]
attribute_descriptionNoAttribute description
attribute_display_nameNoAttribute display name
attribute_display_typeNoAttribute display type (text- 0, number- 1, currency- 2, percent- 3, link- 4, date- 5, list- 6, checkbox- 7) Example: 0

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, yet the description adds real value: the required auth header, the PATCH endpoint, the extra_body escape hatch, and the note that text/IDs may arrive in Persian or Arabic-Indic digits and are passed unchanged. It omits what happens to unspecified fields or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then endpoint, auth, body fields, and finally the locale note. Dense but each line carries information; the prose is functional rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-param, nested-object, non-idempotent mutation with no output schema, the description covers auth, endpoint, body surface, and extra_body overrides. It stops short of describing update semantics (partial vs full replacement) or the returned shape, but the essential callable information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented; the description lists the body fields but adds no format or constraint detail beyond the schema. The only marginal additions are the extra_body note and the language/digit handling remark, which do not map to specific parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a custom attribute in account') and its naming maps cleanly onto the sibling set (add/get/list/remove custom attribute). It does not explicitly differentiate from gapify_add_custom_attribute or gapify_remove_custom_attribute, but the verb makes the intent 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?

Usage is implied by the update verb, and the endpoint line signals which fields are patchable, but there is no explicit when-to-use guidance, no mention of when to prefer add/remove or list, and no preconditions stated beyond the auth header.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_custom_filterCustom Filters: Update a custom filterA

Update a custom filter's attributes [Custom Filters] PATCH /api/v1/accounts/{account_id}/custom_filters/{custom_filter_id} Auth: User API key (header api-access-token). Body fields: name, type, query. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the custom filter
typeNoType of the custom filter. One of: `conversation`, `contact`, `report`. Example: "conversation"
queryNoA query that needs to be saved as a custom filter Example: {}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
custom_filter_idYesThe numeric ID of the custom filter

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful operational context beyond them: the required User API key auth header ('api-access-token'), the extra_body escape hatch for unlisted fields, and the fact that Persian/Arabic-Indic digits and non-Latin text are passed through unchanged. It still omits partial-update semantics and error behavior, which matters for a non-idempotent PATCH.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, followed by the concrete endpoint and auth/body details in compact form. The only mild inefficiency is bracketed tag noise ('[Custom Filters]') and the HTTP route being somewhat boilerplate, but nothing is padded or repetitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation wrapper with a nested query object and no output schema, the description supplies the endpoint, auth mechanism, mutatable fields, and the extra_body override, which is most of what an agent needs. Gaps remain around whether unspecified fields are cleared and what the response returns, but it 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%, so the schema already documents account_id, custom_filter_id, name, type, query, and extra_body, including the enum-like type values. The description largely restates the body fields and adds only the digit/text-encoding note, so it does not meaningfully exceed the schema's own detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a custom filter's attributes') and pairs it with the exact endpoint, so an agent knows this mutates an existing filter rather than creating one. It does not explicitly name sibling tools like gapify_create_custom_filter or gapify_get_custom_filter, but the verb/name combination is unambiguous against 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 explicit when-to-use guidance: nothing says this is for modifying an already-existing filter, whether it is a full replacement or partial update, or what error occurs if the filter does not exist. The agent must infer usage entirely from the verb and required path parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_inboxInboxes: Update InboxA

Update an inbox's settings, such as name, avatar and auto assignment [Inboxes] PATCH /api/v1/accounts/{account_id}/inboxes/{id} Auth: User API key (header api-access-token). Body fields: name, enable_auto_assignment (required), avatar, channel. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the inbox
nameNoThe name of the inbox
avatarNoImage file for avatar
channelNoChannel settings object. For a website inbox: {type: "web_widget", website_url, welcome_title, welcome_tagline, agent_away_message, widget_color}. Text values may be Persian. Example: {"website_url":"https://example.com","welcome_title":"string","welcome_tagline":"string","agent_away_message":"string","widget_color":"string"}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
enable_auto_assignmentYesEnable Auto Assignment Example: false

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-idempotent, non-destructive, open-world mutation. The description adds genuinely useful context not in annotations: the required auth header and the fact that Persian/Arabic-Indic digits are accepted unmodified. It does not clarify partial-update semantics (whether omitted fields are cleared), which matters for a non-idempotent PATCH.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and endpoint are front-loaded, then auth, then body fields. The field list duplicates schema content, costing a little space, but the description stays compact and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with annotations and no output schema, the description covers auth, updatable fields, and the extra_body escape hatch. Only the semantics of partial updates and failure behavior are unaddressed; otherwise an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all seven parameters are already documented in the schema. The description largely restates the body fields and even repeats extra_body, adding only the i18n digit note; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Update an inbox's settings' with concrete examples (name, avatar, auto assignment), plus the HTTP route. This clearly separates it from siblings like gapify_update_inbox_agents or gapify_create_inbox, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the tool name and the listed fields. Nothing states when to prefer this over gapify_update_inbox_agents or when an inbox should be created instead; the agent must infer the context from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_inbox_agentsInboxes: Update Agents in InboxA

Replace the agents of an inbox. Agents not in user_ids are removed from the inbox [Inboxes] PATCH /api/v1/accounts/{account_id}/inbox_members Auth: User API key (header api-access-token). Body fields: inbox_id (required), user_ids (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
inbox_idYesThe ID of the inbox
user_idsYesIDs of users to be added to the inbox Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations present, the description adds real value beyond them: it discloses the full-replacement/removal behavior (the single most important trait for this tool), the PATCH endpoint, the required auth header, and extra_body passthrough. Note the tension with destructiveHint=false, since removing agents overwrites existing membership, though re-adding is trivial so it is not a hard contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and removal semantics are correctly front-loaded, but the body-fields line largely duplicates the schema's required list, and the trailing sentence about Persian text values is partly boilerplate that does not apply to this tool (there are no free-text fields, only IDs).

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 moderate-complexity membership mutation with full schema coverage and annotations, the description supplies auth, endpoint, replacement semantics, and param notes. It omits error behavior (e.g., invalid user IDs) and any sense of the response, though no output schema exists to relieve that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds meaning beyond the schema by flagging inbox_id/user_ids as required body fields, documenting extra_body passthrough, and noting that IDs/numbers may arrive in Persian or Arabic-Indic digits. This digit-handling note is genuinely new information not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Replace the agents of an inbox') and immediately clarifies the replace semantics ('Agents not in user_ids are removed'). This clearly distinguishes it from the sibling mutators gapify_add_inbox_agents and gapify_remove_inbox_agent without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Replace' framing and removal clause imply when to use it (when you want to set the complete membership list), but the description never explicitly routes the agent to alternatives like gapify_add_inbox_agents or gapify_remove_inbox_agent for incremental changes. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_integration_hookIntegrations: Update an Integration HookA

Update an Integration Hook [Integrations] PATCH /api/v1/accounts/{account_id}/integrations/hooks/{hook_id} Auth: User API key (header api-access-token). Body fields: settings. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
hook_idYesThe numeric ID of the integration hook
settingsNoThe settings required by the integration Example: {}
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the write/non-idempotent/open-world profile, so the bar is lower, yet the description still adds real context: the required auth scheme (User API key in an api-access-token header), the exact HTTP path, and that unrecognized keys are routed through extra_body. It also warns that Persian/Arabic-Indic digits and Farsi text pass through unchanged, which is non-obvious. It does not say whether settings are merged or replaced, which is the main remaining gap for a non-idempotent PATCH.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then the endpoint, auth, and body notes in a compact block; every line carries information an agent needs. The encoding note is slightly tangential but relevant to payload construction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter update tool with no output schema, the description supplies endpoint, auth requirement, body scope and an escape hatch for extra fields, which is close to what an agent needs to invoke it. The missing piece is whether the settings object replaces or merges existing hook configuration.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 hook_id, account_id, settings and extra_body; the baseline is 3. The description adds only the mapping "Body fields: settings" and the extra_body pass-through note, which the schema description already conveys, without explaining settings contents or merge semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ("Update an Integration Hook") and pins it with the exact endpoint PATCH /api/v1/accounts/{account_id}/integrations/hooks/{hook_id}, so it is clearly distinct from create/delete hook siblings. It does not name any sibling explicitly, but the resource and method make the intent 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?

Usage is only implied: PATCH plus required account_id/hook_id signal that this modifies an existing hook rather than creating one. There is no explicit statement of when to prefer this over gapify_create_integration_hook or gapify_delete_integration_hook, and no preconditions beyond the auth header.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_portalHelp Center: update a new portalA

Update a help center portal [Help Center] PATCH /api/v1/accounts/{account_id}/portals Auth: User API key (header api-access-token). Body fields: archived, color, config, custom_domain, header_text, homepage_link, name, slug, page_title, account_id. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the portal
slugNoSlug for the portal to display in link
colorNoHeader color for help-center Example: "add color HEX string, \"#fffff\""
configNoConfiguration about supporting locales Example: {"allowed_locales":["en","es"],"default_locale":"en"}
archivedNoStatus to check if portal is live Example: false
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
page_titleNoPage title for the portal
header_textNoHelp center header Example: "Handbook"
custom_domainNoCustom domain to display help center. Example: "https://app.gapify.ai/hc/help-center"
homepage_linkNolink to main dashboard Example: "https://gapify.ai/"

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), the description adds genuine context: the auth mechanism (User API key header), the exact mutation verb (PATCH), the extra_body escape hatch, and the notable language/digit handling behavior. It does not, however, note that unspecified fields are left unchanged or any permissions needed beyond the API key.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the verb+resource and organized into endpoint, auth, body-field, and encoding segments. The body-field list duplicates the schema, but overall the text is compact and each line carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with nested objects (config, extra_body) and no output schema, the description supplies auth, endpoint, field coverage, and the extra_body mechanism, which is sufficient to call it correctly. The only omission is whether untouched fields are preserved, which is a minor gap given no return schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 11 parameters, establishing a baseline of 3. The description restates the body-field list and adds a meaningful encoding note (Persian/Arabic-Indic digits and unchanged text), but this is marginal added meaning over what the schema fields already convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ("Update a help center portal") and ties it to a concrete endpoint (PATCH /api/v1/accounts/{account_id}/portals), so an agent can tell it apart from gapify_add_portal or gapify_list_portals. It stops short of explicitly naming those siblings, so it is clear but not sibling-differentiating.

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 vs. when-not guidance and no routing to alternatives such as gapify_add_portal for creation. Usage is only implied by the verb "Update" and the PATCH endpoint, leaving the agent to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_teamTeams: Update a teamA

Update a team's attributes [Teams] PATCH /api/v1/accounts/{account_id}/teams/{team_id} Auth: User API key (header api-access-token). Body fields: name, description, allow_auto_assign. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name of the team
team_idYesThe ID of the team to be updated
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
descriptionNoThe description of the team
allow_auto_assignNoIf this setting is turned on, the system would automatically assign the conversation to an agent in the team while assigning the conversation to a team Example: false

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds useful context beyond that: the exact HTTP method, required auth header, extra_body merge behavior, and the handling of Persian/Arabic-Indic digits and unchanged text values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then efficiently supplies endpoint, auth, body, extra_body, and input-language details. Every sentence carries relevant information for correct invocation, 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?

Given full schema coverage, annotations covering safety/idempotency, and no output schema, the description is nearly complete. It covers auth, endpoint, writable fields, extra_body, and parameter-language handling, though it does not explicitly state partial-update semantics or behavior for omitted fields.

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 meaning beyond the schema by naming the primary writable body fields, explaining extra_body for unlisted fields, and noting that text values and numeric IDs may use Persian or Arabic-Indic digits without transformation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Update a team's attributes'), includes the endpoint, and clearly distinguishes this from sibling team tools like create/get/delete and team-agent operations. An agent can identify this as the tool for changing team-level metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through 'Update' and lists the updatable body fields, but it does not explicitly say when to use this tool versus alternatives such as gapify_update_team_agents or gapify_create_team. No exclusions or prerequisites beyond the auth header are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_team_agentsTeams: Update Agents in TeamA

Replace the agents of a team. Agents not in user_ids are removed from the team [Teams] PATCH /api/v1/accounts/{account_id}/teams/{team_id}/team_members Auth: User API key (header api-access-token). Body fields: user_ids (required). Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe ID of the team to be updated
user_idsYesIDs of users to be added to the team Example: [1]
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), so the bar is lower; the description still adds real context beyond them: the removal side-effect of replacement, the auth requirement (User API key in api-access-token header), the concrete PATCH endpoint, and the extra_body escape hatch. It does not describe the response payload, and the explicit "agents are removed" side-effect sits in mild tension with destructiveHint=false (mitigated because team membership is re-addable, not data loss).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the destructive-ish consequence are front-loaded in the first sentence, followed by endpoint, auth, body fields, and encoding notes in a tight block. The Persian/Unicode digit sentence is tangential but short and correctness-relevant; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with no output schema, the description covers purpose, side-effects, auth, endpoint, and the extra_body mechanism. The main omission is what the call returns (updated team vs. member list), which matters slightly more here because no output schema exists to cover it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine meaning: it corrects the schema's misleading "IDs of users to be added to the team" by framing user_ids as the full replacement set, explains extra_body's merge behavior, and notes that IDs/numbers may be supplied in Persian or Arabic-Indic digits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Replace the agents of a team") and immediately clarifies the replace semantics with "Agents not in user_ids are removed from the team." That semantics cleanly separates it from the add/remove siblings (gapify_add_team_agents, gapify_remove_team_agent) and from gapify_update_team, which patches the team itself rather than its membership.

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 replace semantics imply when to use it (setting the complete membership list rather than incrementally adding/removing), and the tip that omitted agents are removed serves as a caution. However, it never explicitly names the alternative tools or states when to prefer an incremental add/remove instead, so the routing guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gapify_update_webhookWebhooks: Update a webhook objectA

Update a webhook object in the account [Webhooks] PATCH /api/v1/accounts/{account_id}/webhooks/{webhook_id} Auth: User API key (header api-access-token). Body fields: url, subscriptions. Extra fields can be passed via extra_body. Text values may be written in Persian (Farsi) or any other language and are sent unchanged; IDs, numbers and phone numbers may use Persian or Arabic-Indic digits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe url where the events should be sent Example: "https://example.com"
account_idYesThe numeric ID of the account
extra_bodyNoAdditional JSON body fields to merge into the request (for keys not listed above).
webhook_idYesThe numeric ID of the webhook
subscriptionsNoThe events you want to subscribe to. Example: ["conversation_created"]

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), and the description adds genuinely new context: the required user API key header, the exact endpoint, and the non-obvious behavior that text values pass through unchanged in any language while IDs/numbers may use Persian or Arabic-Indic digits. It stops short of explaining partial-update semantics (whether omitted fields are preserved and whether subscriptions replaces the existing list).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the operation, endpoint, auth, and body fields appear in order with no filler. The Persian/Arabic digit guidance is arguably server-wide boilerplate that has little bearing on a webhook update, but it is stated briefly and does not bloat the entry.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers what an agent needs to invoke it: endpoint, auth header, body fields, and how to pass unlisted keys. The remaining gap is replace-vs-merge semantics for url/subscriptions, which the annotations' idempotentHint=false hints at but never clarifies.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 url, subscriptions, account_id, webhook_id, and extra_body are all documented in the schema itself. The description only re-lists the body fields (url, subscriptions) and reiterates that unlisted fields go through extra_body, adding no syntax or format detail 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?

States a specific verb and resource ('Update a webhook object in the account') and even surfaces the exact PATCH endpoint, so the operation is unambiguous. It does not explicitly name or contrast the sibling webhook tools (gapify_add_webhook, gapify_delete_webhook, gapify_list_webhooks), so an agent must infer the distinction from the verb 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?

Usage is implied by 'Update' plus the PATCH path and the required account_id/webhook_id pair, which signals modifying an existing webhook rather than creating one. There is no explicit statement of when to prefer this over gapify_add_webhook or what prerequisites must hold (e.g., the webhook must already exist), 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 118 tool updatesv1.0.1
    • First observedgapify_account_conversation_metrics
    • First observedgapify_add_agent
    • First observedgapify_add_article
    • First observedgapify_add_automation_rule
    • First observedgapify_add_canned_response
    • First observedgapify_add_category
    • First observedgapify_add_custom_attribute
    • First observedgapify_add_inbox_agents
    • First observedgapify_add_portal
    • First observedgapify_add_team_agents
    • First observedgapify_add_webhook
    • First observedgapify_agent_conversation_metrics
    • First observedgapify_assign_conversation
    • First observedgapify_client_create_contact
    • First observedgapify_client_create_conversation
    • First observedgapify_client_create_message
    • First observedgapify_client_get_contact
    • First observedgapify_client_get_inbox
    • First observedgapify_client_list_conversations
    • First observedgapify_client_list_messages
    • First observedgapify_client_update_contact
    • First observedgapify_client_update_message
    • First observedgapify_create_agent_bot
    • First observedgapify_create_contact
    • First observedgapify_create_contact_inbox
    • First observedgapify_create_conversation
    • First observedgapify_create_custom_filter
    • First observedgapify_create_inbox
    • First observedgapify_create_integration_hook
    • First observedgapify_create_message
    • First observedgapify_create_team
    • First observedgapify_delete_agent_bot
    • First observedgapify_delete_contact
    • First observedgapify_delete_custom_filter
    • First observedgapify_delete_integration_hook
    • First observedgapify_delete_message
    • First observedgapify_delete_team
    • First observedgapify_delete_webhook
    • First observedgapify_filter_contacts
    • First observedgapify_filter_conversations
    • First observedgapify_get_account_reports
    • First observedgapify_get_account_reports_summary
    • First observedgapify_get_agent_bot
    • First observedgapify_get_automation_rule
    • First observedgapify_get_contact
    • First observedgapify_get_contactable_inboxes
    • First observedgapify_get_conversation
    • First observedgapify_get_conversation_counts
    • First observedgapify_get_csat_survey
    • First observedgapify_get_custom_attribute
    • First observedgapify_get_custom_filter
    • First observedgapify_get_inbox
    • First observedgapify_get_messages
    • First observedgapify_get_profile
    • First observedgapify_get_team
    • First observedgapify_list_agent_bots
    • First observedgapify_list_agents
    • First observedgapify_list_automation_rules
    • First observedgapify_list_canned_responses
    • First observedgapify_list_contact_conversations
    • First observedgapify_list_contact_labels
    • First observedgapify_list_contacts
    • First observedgapify_list_conversation_labels
    • First observedgapify_list_conversations
    • First observedgapify_list_custom_attributes
    • First observedgapify_list_custom_filters
    • First observedgapify_list_inbox_agents
    • First observedgapify_list_inboxes
    • First observedgapify_list_integrations
    • First observedgapify_list_portals
    • First observedgapify_list_team_agents
    • First observedgapify_list_teams
    • First observedgapify_list_webhooks
    • First observedgapify_platform_create_account
    • First observedgapify_platform_create_account_user
    • First observedgapify_platform_create_agent_bot
    • First observedgapify_platform_create_user
    • First observedgapify_platform_delete_account
    • First observedgapify_platform_delete_account_user
    • First observedgapify_platform_delete_agent_bot
    • First observedgapify_platform_delete_user
    • First observedgapify_platform_get_account
    • First observedgapify_platform_get_agent_bot
    • First observedgapify_platform_get_user
    • First observedgapify_platform_get_user_sso_link
    • First observedgapify_platform_list_account_users
    • First observedgapify_platform_list_agent_bots
    • First observedgapify_platform_update_account
    • First observedgapify_platform_update_agent_bot
    • First observedgapify_platform_update_user
    • First observedgapify_raw_request
    • First observedgapify_remove_agent
    • First observedgapify_remove_automation_rule
    • First observedgapify_remove_canned_response
    • First observedgapify_remove_custom_attribute
    • First observedgapify_remove_inbox_agent
    • First observedgapify_remove_team_agent
    • First observedgapify_search_contacts
    • First observedgapify_set_contact_labels
    • First observedgapify_set_conversation_labels
    • First observedgapify_set_inbox_agent_bot
    • First observedgapify_show_inbox_agent_bot
    • First observedgapify_toggle_conversation_priority
    • First observedgapify_toggle_conversation_status
    • First observedgapify_update_agent
    • First observedgapify_update_agent_bot
    • First observedgapify_update_automation_rule
    • First observedgapify_update_canned_response
    • First observedgapify_update_contact
    • First observedgapify_update_custom_attribute
    • First observedgapify_update_custom_filter
    • First observedgapify_update_inbox
    • First observedgapify_update_inbox_agents
    • First observedgapify_update_integration_hook
    • First observedgapify_update_portal
    • First observedgapify_update_team
    • First observedgapify_update_team_agents
    • First observedgapify_update_webhook

TDQS

B3.2/5.0

Scored across 118 tools

Disambiguation3/5

Descriptions indicate auth surface and path, but the set contains multiple near-duplicate pairs across platform, account, and client APIs (e.g., gapify_platform_list_agent_bots vs gapify_list_agent_bots; gapify_create_contact vs gapify_client_create_contact), so an agent can easily select the wrong variant. The descriptions help, but the sheer number of overlapping resources keeps ambiguity present.

Naming Consistency3/5

Names consistently use snake_case and a gapify_ prefix, but verb conventions vary across resources—create vs add (create_agent_bot vs add_agent), delete vs remove (delete_contact vs remove_agent), and set/toggle for state changes—making the pattern only partially predictable.

Tool Count1/5

118 tools is far beyond the recommended 3-15 range and exceeds the rubric's 50+ threshold for extreme mismatch. Even for a large platform API, this volume overwhelms tool selection and context handling.

Completeness4/5

The set covers CRUD for most major resources (accounts, users, agents, teams, inboxes, contacts, conversations, messages, labels, custom attributes, filters, webhooks, automation rules, help center, integrations, reports) and includes a raw_request escape hatch. Some lifecycle operations (e.g., updating or deleting conversations) are absent, but they are workable via raw requests.

Related MCP Connectors

  • Manage Chatbase agents, sources, conversations and help-desk tickets.

  • Manage Teletype support conversations, customers, messages, and workspace settings

  • Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.

  • Connect Chatway, an AI-powered website live chat and customer support platform, to ChatGPT, Claude, Gemini, Cursor, and other AI assistants using MCP. Chatway helps businesses communicate with website visitors, manage customer conversations, and deliver faster support across multiple channels, including website live chat, email, WhatsApp, Instagram, and Facebook Messenger. Native mobile apps for iOS and Android let support teams manage conversations and respond to customers on the go. With Chatway's MCP server, AI agents can access and manage customer support operations. Search and read conversations, send replies, add private notes, resolve and assign chats, manage contacts, retrieve customer information, and search knowledge base articles. Chatway also includes a built-in AI Support Agent for automated customer service, a shared team inbox, support ticket management, a customizable website chat widget, a help center, team management, automated workflows, visitor tracking, and integrations with popular platforms, including WordPress and Shopify. Connect external AI agents to automate customer support, answer customer questions, access conversation history, and streamline support workflows without building custom integrations. Manage your customer support from anywhere using Chatway's web dashboard or mobile apps. The hosted MCP server supports Streamable HTTP and secure OAuth 2.1 authentication with scoped permissions. Available on all Chatway plans, including the Free plan. Conversation limits apply. Website: https://chatway.app Documentation: https://developers.chatway.app/mcp/guides.mcp_overview

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    MCP server that exposes the complete Libredesk REST API (54 endpoints) as tools, enabling natural language management of conversations, contacts, agents, teams, and more for the open-source customer support desk.
    54
    10 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes the full Chatwoot API as 129 tools for AI assistants, enabling account, contact, conversation, message, inbox, team, report, help center, automation, and custom attribute management, plus exclusive Kanban and scheduled message features.
    6 npm
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Exposes FirstReply customer support operations as MCP tools, enabling AI assistants to browse conversations, draft replies, manage API keys, and access support statistics.
    84
    1
    MIT