retailcrm-mcp
This server provides an MCP interface to RetailCRM for managing orders, customers, products, inventory, payments, notes, tasks, costs, files, reference data, and analytics.
Orders: list with filters, get by ID/externalId, create with items/delivery/customer linking, update status/customer/delivery/comments, fetch change history for incremental sync.
Customers: search/list, get by ID/externalId, create, update, merge duplicates, view customer history, add/list/delete customer notes.
Products & inventory: list products, product groups, and store inventory levels/costs.
Payments: create, edit, and delete order payments.
Tasks: list, create, and edit follow-up tasks/reminders with performers and linked orders/customers.
Segments & costs: list customer segments (RFM/marketing), list and create expense records for margin analytics.
Files: list files, get metadata, upload files (text or base64).
Reference data: retrieve order statuses, delivery types, payment types, stores, sites, countries, order types, and order methods.
Summaries: get period-based order summary (count, revenue, average order value, status distribution) and new-customer count.
Output control: every tool supports compact
summaryoutput by default, full details withdetail:'full', or raw RetailCRM payloads withraw:trueto save tokens.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@retailcrm-mcplist orders from yesterday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-сервер для RetailCRM — заказы, клиенты и товары интернет-магазина через ИИ
Если вы искали, как подключить RetailCRM к нейросети, поднять заказ или карточку клиента и не собирать отчёты руками — это оно. 39 инструментов и 2 навыка поверх API v5: заказы, клиенты, товары, складские остатки, оплаты, задачи, справочники и аналитика. Спрашиваете «что с заказом 12345» — получаете статус, состав и оплату одним ответом.
Промышленный MCP-сервер для e-commerce CRM RetailCRM. 39 инструментов + 2 навыка-промпта для работы с заказами, клиентами, товарами, остатками, оплатами, задачами, справочниками и аналитикой через API v5.
Ответы экономят токены по умолчанию
Читающие инструменты возвращают компактную структурированную сводку только из тех полей, которые нужны агенту, а не весь ответ RetailCRM. Подробность настраивается на каждый вызов:
Параметр | Что делает |
(по умолчанию) |
|
| Все структурированные поля (позиции, доставка, оплаты, адрес…) |
| Нетронутый ответ RetailCRM (для отладки) |
⚠️ v3 ломает совместимость с v2: по умолчанию отдаётся структурированная сводка, а не сырой JSON. Передайте
raw:true, чтобы вернуть прежний формат.
Related MCP server: MoySklad MCP Server
Инструменты (39)
Заказы
Инструмент | Описание |
| Список заказов по статусу, клиенту, номеру, периоду |
| Один заказ по ID или externalId |
| Создать заказ; привязать существующего клиента ( |
| Изменить статус, клиента, доставку, комментарии |
| История изменений заказов, включая смены статусов (инкрементальная синхронизация) |
Клиенты
Инструмент | Описание |
| Поиск клиентов по имени, e-mail, телефону, дате |
| Один клиент по ID или externalId |
| Создать клиента |
| Изменить существующего клиента |
| Объединить дубли (разрушающая операция) |
| Лог изменений клиентов (прирост/отток, инкрементальная синхронизация) |
Товары и остатки
Инструмент | Описание |
| Товары каталога по названию, группе, активности, цене |
| Дерево товарных категорий |
| Остатки и себестоимость по торговым предложениям и складам |
Оплаты
Инструмент | Описание |
| Зафиксировать оплату по заказу |
| Изменить оплату |
| Удалить оплату (разрушающая операция) |
Заметки и задачи
Инструмент | Описание |
| Произвольные заметки по клиенту |
| Задачи и напоминания |
Маркетинг и финансы
Инструмент | Описание |
| Сегменты клиентов (RFM и маркетинговые когорты) |
| Записи расходов для аналитики маржи |
Файлы
Инструмент | Описание |
| Прикрепление и получение файлов (загрузка сырым octet-stream) |
Справочники
Инструмент | Описание |
| Справочники статусов, доставок, оплат и магазинов |
| Сайты, доступные ключу API (для заполнения параметра |
| Справочники адресов и заказов |
Аналитика
Инструмент | Описание |
| Статистика заказов за период: точное количество и выручка, средний чек, распределение по статусам |
| Количество новых клиентов за период |
Навыки-промпты (2)
Навык | Описание |
| Быстрый ежедневный обзор сегодняшних заказов |
| Найти клиента по имени, e-mail или телефону |
Настройка
В RetailCRM откройте Настройки → Интеграция → Ключи API.
Создайте ключ API с нужными правами (заказы, клиенты, склад, справочники). Для мультисайтового ключа передавайте код
siteв инструментах создания и изменения (см.list_sites).Запомните свой домен (часть
yourstoreизyourstore.retailcrm.ru).
Переменные окружения
Переменная | Обяз. | Описание |
| да | Домен вашего RetailCRM (например, |
| да | Ключ API (передаётся в заголовке |
| нет |
|
| нет | Клиентское ограничение запросов в секунду (RetailCRM допускает ~10/с) |
| нет | Привязка HTTP-сервера (по умолчанию |
| нет | Разрешённые значения |
| нет |
|
RETAILCRM_URLпо-прежнему принимается как запасной вариант дляRETAILCRM_DOMAIN.
Подключение к Claude Desktop
{
"mcpServers": {
"retailcrm": {
"command": "npx",
"args": ["-y", "@theyahia/retailcrm-mcp"],
"env": {
"RETAILCRM_DOMAIN": "yourstore.retailcrm.ru",
"RETAILCRM_API_KEY": "your-api-key"
}
}
}
}Режим Streamable HTTP
Запуск в виде HTTP-сервера вместо stdio:
RETAILCRM_DOMAIN=yourstore.retailcrm.ru \
RETAILCRM_API_KEY=your-key \
npx @theyahia/retailcrm-mcp --httpPOST /mcp— эндпоинт MCP Streamable HTTP (stateless: на каждый запрос создаётся новый сервер)GET /health— проверка состояния (JSON с версией и числом инструментов)GET/DELETE /mcp—405(в stateless-режиме не используются)Привязка по умолчанию:
127.0.0.1:3000. Защита от DNS-rebinding для локальных привязок включена по умолчанию.
Smithery
npx @smithery/cli install @theyahia/retailcrm-mcpДемо-промпты
1. Обзор заказов за день: «Покажи все заказы, созданные сегодня, в статусе „новый“. Дай итоговое количество и выручку.»
2. Клиент и его история заказов: «Найди клиента с почтой anna@example.com. Покажи полный профиль и последние заказы.»
3. Проверка остатков: «Есть ли товар с externalId SKU-42 в наличии и на каком складе?»
Вебхуки и триггеры
RetailCRM не умеет создавать вебхуки через API. Используйте Триггеры в админке (Настройки → Триггеры), чтобы отправлять HTTP-запросы на внешние эндпоинты по событиям заказов и клиентов.
Обработка ошибок
Лимиты запросов и 5xx: автоматический повтор с экспоненциальной задержкой и джиттером (до 3 попыток).
Ошибки API: детали ошибки RetailCRM разбираются и возвращаются модели как результат инструмента с
isError: true, чтобы агент мог исправиться сам (например, повторить сby:"externalId").Таймауты: 15 секунд на запрос с повтором.
Разработка
npm install
npm test # vitest (на моках; живой ключ API не нужен)
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm run dev # dev-режим stdio (tsx)
npm run build # очистка + сборка в dist/Лицензия
MIT
Available Tools
39 toolscreate_costA
Create an expense record, optionally attributed to an order. Returns {success, id}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| summ | Yes | Cost amount | |
| comment | No | Free-text comment | |
| date_to | No | Cost period end (YYYY-MM-DD) | |
| order_id | No | Attribute the cost to an order RetailCRM ID | |
| cost_item | Yes | Cost item code (expense category) | |
| date_from | Yes | Cost period start (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutating (readOnlyHint=false) and non-destructive (destructiveHint=false). Description adds return format '{success, id}' and optional order attribution, but no further behavioral traits like permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, includes return value and key behavior. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with well-described parameters, the description is complete. It explains purpose and return value. Missing details like error handling or idempotency but not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds minimal extra meaning beyond the schema, only clarifying the optional order attribution context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Create', resource 'expense record', and optional attribution to an order. It distinguishes from sibling list_costs which is a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when needing to record an expense, but provides no explicit guidance on when to use or not use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerB
Create a customer with name, contacts, address, optional externalId. Returns {success, id}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| No | Customer email | ||
| phones | No | Array of phone numbers | |
| last_name | No | Customer last name | |
| first_name | Yes | Customer first name | |
| patronymic | No | Customer patronymic (middle name) | |
| external_id | No | External system ID for linking | |
| address_city | No | City | |
| address_text | No | Full address as free text | |
| address_region | No | Region/state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive. Description adds return format {success, id}, but no additional behavioral traits like permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key info, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 10 parameters and no output schema, the description is too minimal. Does not explain required field, defaults, or behavior for missing optional fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description lists only a few fields (name, contacts, address, externalId), adding no significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a customer' with key fields, distinguishing it from update/merge siblings. Verb and resource are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like update_customer or merge_customers. Missing explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_orderA
Create an order with line items and delivery. Link an existing customer via customer_id/customer_external_id, or pass first_name (+phone/email) to create one inline. Returns {success, id, order?}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| No | Customer email | ||
| items | Yes | Order items (at least one required) | |
| phone | No | Customer phone number | |
| status | No | Initial order status code (e.g. 'new') | |
| last_name | No | Customer last name | |
| first_name | No | Customer first name (omit only when linking by customer_id/customer_external_id) | |
| order_type | No | Order type code | eshop-individual |
| customer_id | No | Link the order to an EXISTING customer by RetailCRM ID (mutually exclusive with inline name/phone/email) | |
| delivery_code | No | Delivery type code | |
| delivery_cost | No | Delivery cost | |
| delivery_address | No | Delivery address as free text | |
| customer_external_id | No | Link the order to an EXISTING customer by externalId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds that it returns '{success, id, order?}', but does not elaborate on side effects, idempotency, or error cases. Thus it adds some value beyond annotations but not substantial behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first covers the core action and customer linking decisions, second provides return format. No redundant information. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, 1 required, and no output schema, the description covers the critical decision logic (customer handling) and return shape. Schema covers remaining param details. Could mention items requirement, but it's inferred from the main action. Good for the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing baseline 3. The description adds meaning by explaining the two mutually exclusive customer linking modes and which parameters to use together (customer_id/external_id vs first_name+phone/email). This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create an order with line items and delivery', specifying the verb (create) and resource (order). It distinguishes from sibling tools like update_order by focusing on creation and customer linking methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each customer linking method (existing vs inline creation). While it doesn't explicitly exclude alternative tools like create_customer, the context is clear for order creation. No explicit when-not guidance, but the sibling tools are distinct actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customer_notes_createA
Add a note to a customer (by id or externalId). Returns {success, id}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| text | Yes | Note text | |
| manager_id | No | Author manager ID | |
| customer_id | No | Customer RetailCRM ID the note attaches to | |
| customer_external_id | No | Customer externalId (alternative to customer_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds behavioral context: it returns a {success, id} object and supports two identification methods, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, one sentence with clear information on action, identification methods, and return value. It is efficient, although it could mention the optionality of parameters for better structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core operation and return format, but lacks details on error scenarios, authentication requirements, or the need for 'site' in multi-site contexts (though schema covers that). For a simple create tool, it is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all parameters. The description mentions 'by id or externalId' but does not add significant semantics beyond the schema. The schema already explains parameter roles, so the description adds limited value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a note to a customer and specifies identification by id or externalId. It also mentions the return value, and the action is distinct from sibling tools like customer_notes_list and customer_notes_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., customer_notes_list for reading, customer_notes_delete for deletion). No prerequisites or exclusions are mentioned, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customer_notes_deleteBDestructive
Delete a customer note by id. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only adds 'Returns {success}', which is minimal. Annotations already provide destructiveHint=true, readOnlyHint=false, so the description adds little behavioral insight beyond what is structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that immediately states the purpose and output, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description is adequate. It covers the essential action and result, though it could mention deletion is irreversible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the description 'Note ID to delete' for the id parameter. The description adds no additional meaning beyond the schema, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Delete a customer note by id', clearly identifying the verb and resource, and distinguishes from sibling tools like customer_notes_create and customer_notes_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as customer_notes_create or customer_notes_list, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customer_notes_listARead-only
List free-text notes attached to customers. Returns {notes[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_customer_id | No | Filter notes by customer RetailCRM ID | |
| filter_customer_external_id | No | Filter notes by customer externalId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's listing behavior is consistent. It adds the return format but lacks further behavioral details like sorting, rate limits, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly communicates the tool's purpose and return value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description helpfully mentions the return shape. However, it omits potential details like default sorting or any other implicit filters, which are not critical for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description does not add extra meaning or usage tips beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'free-text notes attached to customers'. It also specifies the return format, distinguishing it from sibling tools like customer_notes_create and customer_notes_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies listing notes but provides no explicit context on when to use this tool versus alternatives, nor any prerequisites or restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
customers_historyARead-only
Customer field-change log for growth/churn signals and incremental sync. Returns {history[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_date_to | No | Changes on/before this date (YYYY-MM-DD) | |
| filter_since_id | No | Return changes after this history entry ID (incremental sync) | |
| filter_date_from | No | Changes on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds that this is a log (non-destructive) and returns paginated history, reinforcing transparency. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads purpose and return type. Every word adds value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explicitly states the return shape ({history[], pagination}). All parameters are described in schema, and the tool's purpose is fully covered. Complete for a log tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description does not add meaning beyond the schema beyond summarizing the return shape, which is not parameter-specific. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool returns a customer field-change log for growth/churn signals and incremental sync, clearly indicating the verb ('log'), resource ('customer field-change'), and scope. It distinguishes from siblings like orders_history by specifying 'customer' and the use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage for growth/churn signals and incremental sync, providing context, but does not explicitly state when not to use it or compare with alternatives like get_customer or customers list. Some implicit guidance exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files_getARead-only
Get a file's metadata by id. Returns {file}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File ID to fetch metadata for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds no extra behavioral details beyond returning a file object. Minimal value added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Fully front-loaded with purpose and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one required parameter and no output schema, the description adequately covers input and output expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the id parameter. Description does not add additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get', resource 'file metadata', and method 'by id'. It distinguishes from siblings like files_upload (upload) and files_list (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. While implied by the straightforward retrieval, it doesn't state exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files_listARead-only
List files attached to orders/customers. Returns {files[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_filename | No | Filter by filename (partial match) | |
| filter_order_id | No | Filter files attached to an order | |
| filter_customer_id | No | Filter files attached to a customer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to reiterate safety. The description adds the return structure ({files[], pagination}), which is useful context but doesn't disclose additional behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with purpose and return shape. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters all documented in schema and annotations providing readOnlyHint, the description is sufficiently complete. It describes the return shape, which compensates for the lack of an output schema. Slight room for improvement in ordering or default behavior, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all 5 parameters. The description adds no further meaning beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'List', resource 'files', and scope 'attached to orders/customers'. It also specifies the return shape. This effectively distinguishes it from sibling tools like list_orders or list_customers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing files but provides no guidance on when to use this tool versus alternatives (e.g., files_get for a single file). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
files_uploadA
Upload a file (UTF-8 text or base64 binary). Returns {success, file}.
| Name | Required | Description | Default |
|---|---|---|---|
| base64 | No | Set true if `content` is base64-encoded binary | |
| content | Yes | File content (UTF-8 text, or base64 when base64=true) | |
| filename | Yes | Filename for the uploaded file | |
| content_type | No | MIME type (default application/octet-stream) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive. The description adds that it returns {success, file}, but does not disclose potential side effects like overwriting existing files, storage limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two short sentences) and front-loads the main action and supported content types. It is efficient but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema (100% coverage) and absence of output schema, the description adequately explains the return and content types but lacks context on limits, overwriting, and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds no additional semantic value beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Upload' and the resource 'file', and specifies the two supported content types (UTF-8 text or base64 binary). It is distinct from sibling tools like files_list and files_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor any prerequisites or conditions. Usage is implied but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerARead-only
Get a single customer by id or externalId. Returns a shaped customer; detail:'full' adds address and contact details.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup field: 'id' (RetailCRM ID) or 'externalId' | id |
| id | Yes | Customer ID or externalId to retrieve | |
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| detail | No | Output verbosity: 'summary' (compact, default — saves tokens) or 'full' (all shaped fields incl. line items, delivery, payments). | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds useful behavioral context: results are shaped, and the detail parameter controls verbosity (adding address/contact). This goes beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence. It front-loads the core action (Get a single customer) and efficiently covers key parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough given the tool's simplicity and the rich input schema (4 parameters with full descriptions). It explains the two lookup fields and the detail toggle. No output schema exists, but the description hints at the return shape adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining that detail:'full' includes address and contact details, which reinforces the enum options. It also clarifies the two lookup methods via the 'by' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a single customer by id or externalId, and mentions the shaped output and detail levels. This distinguishes it from list_customers which returns multiple customers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for single customer retrieval, but does not explicitly state when to use this tool versus alternatives like list_customers or search tools. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customers_summaryARead-only
Period-scoped new-customer count for a date range. Returns {period, newCustomers}.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | End date (YYYY-MM-DD) | |
| date_from | Yes | Start date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds moderate value by stating the return shape {period, newCustomers}. However, it does not discuss potential limitations or side effects, beyond what the annotation provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences that front-load the purpose and return shape. No wasted words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description states the return shape, which is helpful given no output schema. However, the term 'period-scoped' is vague and could be more explicit (e.g., daily, monthly). Given the tool's simplicity, it is mostly complete but leaves some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description's mention of 'period-scoped' adds minimal extra meaning; the schema already specifies date format and required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Period-scoped new-customer count for a date range.' It distinguishes from siblings like list_customers (which lists all customers) and get_orders_summary (which summarizes orders) by specifying it focuses on new customers over a date range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or what other tools (e.g., get_orders_summary) are better suited for order summaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-only
Get a single order by RetailCRM id or externalId. Returns a shaped order; detail:'full' adds items, delivery, payments, comments.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup field: 'id' (RetailCRM ID) or 'externalId' | id |
| id | Yes | Order ID or externalId to retrieve | |
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| detail | No | Output verbosity: 'summary' (compact, default — saves tokens) or 'full' (all shaped fields incl. line items, delivery, payments). | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which is consistent with a read operation. The description adds context about shaping a response and mentions the raw parameter for debugging, which is helpful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action and resource. Every word serves purpose; no redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return values at different detail levels and the raw mode. For a simple read tool with 4 parameters, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters (100% coverage). The description adds value by explaining 'shaped order,' 'untouched RetailCRM payload' for raw, and implications of detail values, going beyond simple enum labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get a single order by RetailCRM id or externalId,' specifying the resource and lookup methods. It effectively distinguishes from sibling tools like list_orders or update_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the detail parameter: 'summary' (compact) vs 'full' (adds items, delivery, payments). It implies when to use each but does not explicitly state when not to use the tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orders_summaryARead-only
Period-scoped order summary: exact totalCount for the date range plus revenue, average order value, and status distribution aggregated over up to max_pages×100 orders (partial:true if the window exceeds that).
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | End date for the summary period (YYYY-MM-DD) | |
| date_from | Yes | Start date for the summary period (YYYY-MM-DD) | |
| max_pages | No | Pages of 100 orders to aggregate (revenue/status are computed over this window; the count is always exact) | |
| filter_status | No | Restrict the summary to a single status code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true. Description adds transparency about partial aggregation (partial:true if window exceeds max_pages×100) and exact count. Could mention more about performance or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with parenthetical clarification is efficient and front-loaded. Every word adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Describes key return fields and partial flag, but without output schema, it lacks detail on edge cases (e.g., empty result, structure of status distribution). Could be more thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters. Description adds context about computed fields (revenue, AOV, status distribution) and how max_pages affects aggregation window, filling gaps not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a period-scoped order summary with specific metrics (totalCount, revenue, average order value, status distribution). It distinguishes from siblings like list_orders and get_customers_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for aggregated summaries vs. individual order views, but no explicit guidance or alternatives are mentioned. Could specify when to use over list_orders or get_customers_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_costsARead-only
List expense records (for margin/profit analytics) by date and cost group. Returns {costs[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_date_to | No | Costs created on/before (YYYY-MM-DD) | |
| filter_date_from | No | Costs created on/after (YYYY-MM-DD) | |
| filter_cost_groups | No | Filter by cost group code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds useful behavioral context: purpose (profit analytics), return format ({costs[], pagination}), and constraints (by date/cost group). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with verb and resource, efficiently states purpose and return format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and annotations, the description covers purpose, filtering scope, and return structure. No output schema is needed given the textual hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. Description just reiterates 'by date and cost group' without adding new detail beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies verb (list), resource (expense records/costs), and purpose (margin/profit analytics). It is clear but does not explicitly differentiate from sibling list tools beyond the specific filters mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from description (by date and cost group), but no explicit when-to-use, when-not-to-use, or alternative tools mentioned. Context signals show many list tools with overlapping functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesARead-only
Valid country ISO codes for addresses/delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds the behavioral context of returning ISO codes. However, it does not detail output format (e.g., list of strings) beyond that, nor mention any other traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (5 words) and front-loaded with the key purpose. No wasted words; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description provides the essential purpose but lacks details on output structure or additional context. It is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'raw' parameter, so the description need not add more. Baseline 3 is appropriate as the schema sufficiently documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'Valid country ISO codes' and specifies the context 'for addresses/delivery'. This distinguishes it from sibling tools that list other entities (e.g., products, orders).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage for obtaining country codes but lacks 'when not to use' or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersARead-only
List/search customers by name, email, phone, created-date. Returns (summary): pagination + array of {id, name, email, phone, ordersCount, totalSpent}. detail:'full' adds address/externalId/all phones.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| detail | No | Output verbosity: 'summary' (compact, default — saves tokens) or 'full' (all shaped fields incl. line items, delivery, payments). | summary |
| filter_name | No | Filter by customer name (partial match) | |
| filter_email | No | Filter by email address | |
| filter_phone | No | Filter by phone number | |
| filter_date_to | No | Filter customers created on/before (YYYY-MM-DD) | |
| filter_date_from | No | Filter customers created on/after (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety of the operation is clear. The description adds value by describing the return format and the effect of the detail parameter, but does not disclose additional behaviors like pagination limits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, filters, and return format. No wasted words or repetition of schema. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description covers the main intent and partial return format. However, it omits details on pagination structure (page/limit) and the raw parameter, leaving some gaps for an agent to infer from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds specific meaning beyond the schema by detailing what fields are included in summary vs full detail. For example, 'summary: {id, name, email, phone, ordersCount, totalSpent}' and 'full adds address/externalId/all phones' provides concrete context that the schema's generic 'compact' vs 'full' description lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists/searches customers by specific fields (name, email, phone, created-date) and describes the return format. It uses specific verb+resource, and the resource 'customers' distinguishes it from sibling tools like list_products or list_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing or filtering customers but does not explicitly discuss when to use this tool versus alternatives like get_customer (single) or create_customer. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_delivery_typesARead-only
All delivery types with codes, names, default costs.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that the output includes codes, names, and default costs. No additional behavioral traits (e.g., pagination, rate limits) are disclosed. Adequate but minimal value added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (7 words) and front-loaded. Every word contributes, but it could potentially include a bit more context without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no required parameters and no output schema, the description is mostly sufficient but lacks mention of the 'raw' parameter and any ordering/filtering details. Adequate but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'raw' parameter, which is well-described in the schema. The description does not mention this parameter or add meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'All delivery types with codes, names, default costs' clearly states what the tool does (lists delivery types) and includes specific fields returned. It distinguishes from sibling tools like list_product_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are mentioned. The readOnlyHint implies safe use, but without guidance, usage is inferred only from the tool's name and description. Sibling tools exist but no differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_order_methodsCRead-only
All order methods (acquisition channels).
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already declares readOnlyHint=true, indicating a safe read operation. The description adds no behavioral details beyond that, such as whether pagination, sorting, or filtering is supported. It does not disclose any limitations or side effects, missing an opportunity to add context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the core purpose. No unnecessary words or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal and lacks details like return format, error handling, or pagination. With no output schema, the agent needs more context on what the list items contain. Incomplete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'raw' is fully described in the schema (100% coverage), so the baseline is 3. The description does not mention the parameter at all, so it adds no semantic value beyond the schema. Adequate but no extra benefit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'All order methods (acquisition channels)' clearly states that the tool retrieves a list of acquisition channels. The verb 'list' is implied by the name and the description confirms it returns all order methods. It is specific and not a tautology, though it could be more explicit about the output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like list_order_types or list_payment_types. There is no mention of prerequisites, exclusions, or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersARead-only
List orders with filters by status, customer name, number, and created-date range. Returns (summary): pagination + array of {id, number, status, total, customer, phone, itemCount, createdAt}. Use detail:'full' for line items/delivery/payments, raw:true for the untouched payload.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| detail | No | Output verbosity: 'summary' (compact, default — saves tokens) or 'full' (all shaped fields incl. line items, delivery, payments). | summary |
| filter_number | No | Filter by order number | |
| filter_status | No | Filter by order status code (e.g. 'new', 'complete'). Call list_statuses for valid codes. | |
| filter_date_to | No | Filter orders created on/before this date (YYYY-MM-DD) | |
| filter_customer | No | Filter by customer name (partial match) | |
| filter_date_from | No | Filter orders created on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which is consistent. The description adds behavioral details: pagination return structure, the effect of detail and raw parameters, and date format requirement. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant text. Front-loaded with core purpose and filter types, followed by return summary and additional options. Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description adequately explains the return structure (pagination + array) and key options. It could be more specific about pagination details (e.g., page/limit defaults), but these are in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the effect of detail and raw parameters beyond their schema descriptions. However, it does not elaborate on other parameters beyond restating their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List orders with filters' and lists the specific filter criteria, distinguishing it from single-order retrieval (get_order) and other operations. The return structure is also outlined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing with filters and mentions options like detail:'full' and raw:true, but does not explicitly exclude cases where get_order or orders_history would be more appropriate. Sibling tool names provide context but no direct 'when-not-to-use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_order_typesARead-only
All order types (codes/names) — valid values for create_order's order_type.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that the tool returns codes and names, which is valuable beyond annotations. No contradictory or missing behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key output, and every word is necessary. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description fully covers purpose, output (codes/names), and usage context (valid values for create_order). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the description does not need to add parameter info. Baseline 3 applies; no extra value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists all order types (codes/names) and explicitly ties them to create_order's order_type, distinguishing it from sibling list tools for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing valid order types for create_order, providing clear context but no alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_typesARead-only
All payment types with codes and names.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. The description adds that it returns 'all' payment types with codes and names, but does not disclose any additional behavioral traits such as pagination, ordering, or potential omissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Appropriate for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list with one optional boolean parameter, no output schema), the description covers the return content adequately, though it could mention if the list is exhaustive or paginated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not mention the 'raw' parameter or add any meaning beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'All payment types with codes and names' clearly states the verb (list) and resource (payment types), and distinguishes it from sibling tools like list_delivery_types and list_statuses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no context about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_product_groupsARead-only
List product groups (category tree). Returns {productGroup[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_active | No | Filter by active status | |
| filter_parent_group | No | Restrict to children of this parent group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks it as read-only, and the description adds minimal context about the category tree. No additional behavioral traits disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with purpose and return structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with readOnlyHint, fully documented parameters, and no output schema requirements, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description does not add extra meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List product groups (category tree)' and specifies the return format '{productGroup[], pagination}', clearly distinguishing it from sibling tools like list_products which deal with individual products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied as a listing tool, but there is no explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-only
List catalog products with filters by name, active, group, price range. Returns pagination + array of {id, name, article, active, url, groups, offers}.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_name | No | Filter by product name (partial match) | |
| filter_active | No | Filter by active status (true = active only) | |
| filter_groups | No | Filter by product group ID (see list_product_groups) | |
| filter_max_price | No | Maximum price filter | |
| filter_min_price | No | Minimum price filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description confirms it returns data without side effects. It adds context on pagination and the 'raw' debug flag, which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information. Every word adds value, clearly describing the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers the return format (pagination + array of fields) and the key filtering capabilities. No gaps are apparent given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not add new parameter semantics. It briefly summarizes available filters, but this does not surpass the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'catalog products', and enumerates specific filters (name, active, group, price range). It distinguishes from sibling tools like list_product_groups by focusing on products themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like list_product_groups. Usage is implied through the filter parameters, but no direct guidance or exclusion is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_segmentsARead-only
List customer segments (RFM/marketing cohorts). Returns {segments[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_type | No | Segment type | |
| filter_active | No | Only active segments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already sets readOnlyHint=true. The description adds the return structure with pagination but does not disclose other behavioral details (e.g., is the list ordered? any limits beyond pagination?). Some value added, but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose and covers the key output. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no output schema, the description covers the basic intent and pagination. It could be improved by specifying fields in the segments[] array, but it is sufficient for an agent to understand the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have descriptions in the input schema, so the description does not add additional semantic meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'customer segments (RFM/marketing cohorts)'. It also describes the return structure as {segments[], pagination}, making it specific and distinct from sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for listing customer segments but does not provide explicit guidance on when to use it versus alternatives like list_customers or list_products. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesARead-only
All sites/stores the API key can act on — use the returned code as the site param on multi-site create/edit.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by explaining that the tool returns codes for use in other API calls. It does not contradict annotations, and the readOnlyHint is consistent with a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the purpose and secondary usage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description adequately explains what the tool returns (site codes) and how to use them. No additional information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the single 'raw' parameter already described in the schema. The description does not add extra parameter details, but the baseline of 3 is appropriate as the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all sites/stores the API key can act on, which is a specific verb+resource. It distinguishes from sibling tools that deal with orders, customers, etc., by focusing on site enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use the returned code as the 'site' param in multi-site create/edit operations, providing clear context for when to use this tool. It does not mention when not to use, but alternatives are not needed as sibling tools have different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statusesARead-only
All order statuses (codes, names, groups, ordering). Call before filtering/updating orders by status.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, so the description does not need to repeat that. It adds context about the returned data (codes, names, groups, ordering), but does not describe any other behavioral traits. This is adequate for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose and usage hint without any redundant words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description provides sufficient information: what the tool returns and when to use it. The parameter is well-documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'raw' is fully documented in the input schema with a clear description. The tool description does not add extra information about parameters, but schema coverage is 100%, so the description is not required to elaborate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'All order statuses (codes, names, groups, ordering)', which explicitly identifies the tool's purpose and the data it returns. It is distinct from sibling tools like list_product_groups or list_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Call before filtering/updating orders by status.' This tells the agent when to use the tool, though it does not mention alternatives or when not to use it, which is acceptable for a simple read-only tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_storesARead-only
All warehouses/stores (codes, names, types).
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only. The description adds that it returns codes, names, and types, but does not mention pagination or limits. Adds some context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with no wasted words. Could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description sufficiently states what is returned. It is complete enough for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'raw' parameter already explained. The description adds no further meaning to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all warehouses/stores with codes, names, and types. It distinguishes from sibling tools that deal with orders, customers, products, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied by the simple nature of listing stores, but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_customersADestructive
Merge duplicate customers into a target; merged records are DELETED. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| result_customer_id | Yes | ID of the customer to keep (the merge target) | |
| merged_customer_ids | Yes | IDs of customers to merge into the target (will be deleted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explicitly states that merged records are deleted and returns {success}, adding behavioral context beyond the annotation's destructiveHint=true. However, it does not mention side effects like handling of associated data or rollback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence conveys purpose, key behavior (deletion), and return value. No wasted words; front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two well-documented parameters, destructive annotation, and simple return, the description is mostly complete. It lacks details about conflict resolution or handling of related records, but these are edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds no additional parameter-level meaning, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('merge duplicate customers'), the resource ('customers'), and key outcomes (target kept, merged deleted). This distinguishes it from other customer tools like create_customer, update_customer, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when duplicates exist but does not explicitly state when to use this tool versus alternatives (e.g., update_customer) or conditions/limitations. No guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_payment_createA
Record a payment against an order (amount, type, status, paid_at). Returns {success, id}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| type | Yes | Payment type code (see list_payment_types) | |
| amount | Yes | Payment amount | |
| status | No | Payment status code (e.g. 'paid') | |
| paid_at | No | Paid timestamp 'YYYY-MM-DD HH:MM:SS' | |
| order_id | No | Order RetailCRM ID the payment belongs to | |
| order_external_id | No | Order externalId (alternative to order_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, indicating a mutation operation. The description adds the return format but not side effects, idempotency, or error conditions. Minimal additional behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence with no wasted words. Perfectly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and simple annotations, the description covers the basic purpose and return but lacks guidance on order identifier selection (order_id vs order_external_id) and required field interpretation beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds a concise list of key parameters but no deeper semantics. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (record a payment against an order), lists key parameters (amount, type, status, paid_at), and describes the return value ({success, id}). Distinguishes from sibling tools like order_payment_edit and order_payment_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Does not provide explicit guidance on when to use this tool versus alternatives like order_payment_edit or order_payment_delete. No mention of prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_payment_deleteBDestructive
Delete an order payment by id. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior; description adds only a minimal return format. No additional side effects or authorization needs mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no unnecessary information; concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple delete operation, but missing context such as success conditions or error handling for a destructive action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add meaning beyond the existing parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action of deleting an order payment by id, distinguishing it from create and edit sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use versus alternatives like order_payment_edit or order_payment_create; no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_payment_editB
Edit an existing order payment (amount/status/paid_at). Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup field | id |
| id | Yes | Payment ID (or externalId) to edit | |
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| amount | No | Updated amount | |
| status | No | Updated payment status code | |
| paid_at | No | Updated paid timestamp 'YYYY-MM-DD HH:MM:SS' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no extra behavioral context such as side effects, permissions, or reversibility. It only says 'Edit' and 'Returns {success}'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, concise, and front-loaded with verb and resource. It could include a brief usage hint, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description only mentions 'Returns {success}' which is minimal. It does not specify whether the response includes the updated payment object or just a success flag. For a mutation tool, more detail on return value and error handling is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a description. The description summarizes editable fields but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Edit' and resource 'existing order payment', and lists editable fields (amount/status/paid_at). It distinguishes from sibling tools like order_payment_create and order_payment_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when editing an existing payment but does not explicitly state when to use, when not to use, or compare with alternatives like update_order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orders_historyARead-only
Order change history incl. status transitions; supports incremental sync via filter_since_id and a date window. Returns {history[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the untouched RetailCRM payload (for debugging; verbose). | |
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_date_to | No | Changes on/before this date (YYYY-MM-DD) | |
| filter_order_id | No | Restrict to a single order's history by RetailCRM ID | |
| filter_since_id | No | Return changes after this history entry ID (incremental sync) | |
| filter_date_from | No | Changes on/after this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description confirms read-only behavior. It adds context about incremental sync and paginated return, which aligns with annotations and provides useful behavioral details beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose, no fluff. Every sentence adds value: purpose, sync support, return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only history tool with 7 parameters and no required fields, the description adequately covers return format and incremental sync. No output schema, but the return structure is described explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description highlights key parameters (filter_since_id, date window) for sync, adding context beyond schema descriptions. Not all parameters are elaborated, but the most important ones are emphasized.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves order change history with status transitions and supports incremental sync. It distinguishes from related tools like get_order (single order) and list_orders (list of orders).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use the tool (for history with incremental sync via filter_since_id and date window), but does not explicitly mention when not to use or contrast with sibling tools like customers_history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_inventoriesARead-only
Stock levels (and cost prices) per offer/warehouse. Use details:true for the per-store breakdown. Returns {offers[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| limit | No | Results per page (max 100) | |
| details | No | Include per-store breakdown (sets filter[details]=1) | |
| filter_product_active | No | Only offers of active products | |
| filter_offer_external_id | No | Filter by offer externalId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description matches the readOnlyHint annotation and adds detail about the return structure (pagination, offers). No hidden side effects or permissions are disclosed, but the tool is safe and simple.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the core purpose, key parameter usage, and return format without extraneous information. Front-loaded with the most important data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters all documented in schema and no output schema, the description covers the essential return structure. It could elaborate on the offers[] contents, but the tool is a straightforward listing endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds limited value beyond the schema. It does clarify the effect of the details parameter, but others are already well-documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns stock levels and cost prices per offer/warehouse, with an option for per-store breakdown. This distinguishes it from sibling tools that handle orders, customers, or products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides practical guidance on using the details parameter for per-store breakdown. While it doesn't explicitly state when not to use this tool, the read-only nature and clear data returned make usage straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_createA
Create a task (text, due datetime, performer, linked order/customer). Returns {success, id}.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| text | Yes | Task text / what to do | |
| datetime | No | Due datetime 'YYYY-MM-DD HH:MM:SS' | |
| order_id | No | Link to order RetailCRM ID | |
| commentary | No | Additional commentary | |
| customer_id | No | Link to customer RetailCRM ID | |
| performer_id | No | Assign to manager ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive mutation. Description adds that it returns {success, id}, but doesn't disclose details like permissions needed, behavior on duplicate text, or how linked entities are validated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action and result. No wasted words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description covers return format. Tool is simple with 1 required param. Could mention that site is required when API key is scoped to multiple sites, but that's in schema. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds a concise grouping of parameter purposes (due datetime, performer, linked order/customer), but adds little beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'task', listing key fields (text, due datetime, performer, linked order/customer). It implicitly distinguishes from sibling tools like tasks_list (list) and tasks_edit (edit).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but the purpose is clear and the sibling names imply that tasks_list and tasks_edit cover other operations. Could benefit from a note on prerequisites like site parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_editA
Edit a task or mark it complete. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Task ID to edit | |
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| text | No | Updated task text | |
| complete | No | Mark the task completed | |
| datetime | No | Updated due datetime 'YYYY-MM-DD HH:MM:SS' | |
| commentary | No | Updated commentary | |
| performer_id | No | Reassign to manager ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false and destructiveHint=false. The description adds that it returns {success}, but does not disclose permissions, side effects, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant words. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 7 parameters and no output schema, the description is minimal. It does not explain the return value beyond {success}, constraints like site requirement for multi-site keys, or behavior of marking complete vs editing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Edit a task or mark it complete', specifying the verb (edit) and resource (task). It distinguishes from sibling tools like tasks_list and tasks_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when editing a task, but does not explicitly state when to use this tool versus tasks_create or tasks_list, nor provides exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_listARead-only
List follow-up tasks/reminders, filterable by status/performer/customer. Returns {tasks[], pagination}.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page (max 100) | |
| filter_status | No | Filter by completion status | |
| filter_customer | No | Filter by customer name/contact (text match — RetailCRM v5 has no numeric customer-ID task filter) | |
| filter_performer_id | No | Filter by assigned manager ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint annotation. Adds return structure details ({tasks[], pagination}) and filter options, which provides useful behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with front-loaded action and key details. Every element is necessary and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately specifies return structure and filter parameters. Annotations cover safety. Could mention sorting order, but not critical for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions. Description provides a high-level summary of filter capabilities but does not add significant new meaning beyond the existing schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (list), resource (tasks), filterable fields (status/performer/customer), and return structure. Differentiates from sibling task tools (tasks_create, tasks_edit) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes what the tool does and filter options, but lacks explicit guidance on when to use this tool vs alternatives (e.g., tasks_create for new tasks, list_orders for orders). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerA
Edit an existing customer (name, email, phones, address) by id or externalId. Only the fields you pass are sent. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup field | id |
| id | Yes | Customer ID or externalId to edit | |
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| No | Updated email | ||
| phones | No | Replace phone numbers | |
| last_name | No | Updated last name | |
| first_name | No | Updated first name | |
| patronymic | No | Updated patronymic | |
| address_city | No | Updated city | |
| address_text | No | Updated full address text | |
| address_region | No | Updated region/state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds 'Edit' (a write operation) and the return value '{success}', but does not disclose additional behaviors such as idempotency, authorization requirements, or side effects beyond the partial update characteristic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First sentence encapsulates purpose and identification method. Second covers partial update behavior and return value. No wasted words and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 11 simple parameters and full schema coverage, the description is sufficient. However, it could mention that the customer must exist, or that some fields may be conditionally required based on site settings. No output schema, but return value is specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, baseline is 3. The description adds value by noting that only passed fields are sent (partial update) and that identification can be by id or externalId, which informs the 'by' parameter usage beyond its schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Edit', the resource 'existing customer', and the identification method 'by id or externalId'. It lists the updatable fields (name, email, phones, address), which distinguishes it from customer creation or retrieval tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when modifying an existing customer but does not explicitly state when to use this tool versus alternatives like create_customer or merge_customers. No exclusion or prerequisite conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_orderA
Update an order (status, customer, delivery, comments). Only the fields you pass are sent. Returns {success}.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Lookup field | id |
| id | Yes | Order ID to update | |
| site | No | Site (store) symbolic code. Required on create/edit when the API key is scoped to multiple sites (see list_sites). | |
| No | Updated customer email | ||
| phone | No | Updated customer phone | |
| status | No | New status code | |
| last_name | No | Updated customer last name | |
| first_name | No | Updated customer first name | |
| customer_id | No | Re-link the order to an existing customer by RetailCRM ID | |
| delivery_code | No | Updated delivery type code | |
| delivery_cost | No | Updated delivery cost | |
| manager_comment | No | Internal manager comment | |
| customer_comment | No | Customer-visible comment | |
| delivery_address | No | Updated delivery address | |
| customer_external_id | No | Re-link the order to an existing customer by externalId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=false and destructiveHint=false. The description adds that it performs an update and returns '{success}'. It also clarifies the partial-update behavior. No contradictions, but could include error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information. Every sentence adds value: the first states what the tool does, the second explains the partial-update and return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 parameters, partial update), the description covers core behavior and return. No output schema exists, but the return is simple. Slightly lacking on error cases and prerequisites, but adequate for an update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with individual parameter descriptions. The description groups parameters into categories (status, customer, delivery, comments) and explains the partial-update semantics, adding moderate value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an order' with specific fields (status, customer, delivery, comments). It distinguishes from sibling tools like get_order, create_order, and orders_history by focusing on update functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates 'Only the fields you pass are sent', implying partial update behavior. However, it does not explicitly state when to use this tool versus alternatives (e.g., create_order) or define prerequisites like order existence.
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. Dates show when Glama detected each change.
39 tool updates
v3.0.0- First observed
create_cost - First observed
create_customer - First observed
create_order - First observed
customer_notes_create - First observed
customer_notes_delete - First observed
customer_notes_list - First observed
customers_history - First observed
files_get - First observed
files_list - First observed
files_upload - First observed
get_customer - First observed
get_customers_summary - First observed
get_order - First observed
get_orders_summary - First observed
list_costs - First observed
list_countries - First observed
list_customers - First observed
list_delivery_types - First observed
list_order_methods - First observed
list_order_types - First observed
list_orders - First observed
list_payment_types - First observed
list_product_groups - First observed
list_products - First observed
list_segments - First observed
list_sites - First observed
list_statuses - First observed
list_stores - First observed
merge_customers - First observed
order_payment_create - First observed
order_payment_delete - First observed
order_payment_edit - First observed
orders_history - First observed
store_inventories - First observed
tasks_create - First observed
tasks_edit - First observed
tasks_list - First observed
update_customer - First observed
update_order
TDQS
Each tool targets a distinct operation (list, get, create, update, delete, history, summary) on a specific entity (orders, customers, products, payments, etc.). Descriptions clearly differentiate them, even where naming patterns vary.
Tool names mix verb-first (e.g., list_orders, create_customer) and noun-first patterns (e.g., orders_history, customer_notes_list, order_payment_create). While readable, the inconsistency in naming convention increases ambiguity.
With 39 tools, the surface is heavy. Many reference data tools (list_statuses, list_delivery_types) add bulk without deepening functionality. The count is unnecessarily high for the scope.
Several fundamental CRUD operations are missing: no order delete, no customer delete, no product create/update/delete, no note update, no task delete, no file delete. These gaps will hinder autonomous agent workflows in a retail CRM.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for managing WooCommerce stores through AI assistants like Claude. Provides 101 tools covering products, orders, customers, coupons, shipping, taxes, webhooks, settings, reports, and more.1001392MIT
- AlicenseCqualityBmaintenanceMCP server for MoySklad (МойСклад) warehouse and CRM management API. 21 tools covering the full order lifecycle: products, stock, counterparties, customer orders, shipments, supplies, warehouses, organizations, reports, and webhooks.601005MIT
- AlicenseNot gradedqualityCmaintenanceA production-ready MCP server for Method CRM API integration. It enables LLMs to interact with Method CRM data through tools for tables, files, users, events, and API key management.3MIT
- AlicenseBqualityCmaintenanceSelf-hosted MCP server that connects AI assistants to Kommo CRM (API v4), enabling real-time CRM actions such as creating/managing leads, tasks, notes, and more through 29 tools.291MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/theYahia/retailcrm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server