A1 Yandex KIT MCP
This server is an MCP gateway to the Yandex KIT e-commerce API, letting an AI assistant read and manage a live store (catalog, orders, promotions, webhooks, etc.) through typed tools and a generic operation runner.
Explore and call the whole KIT API —
search_operations,get_operation_schema, andkit_requestgive access to all 162 API operations, not just the dedicated tools.Product catalog management — create/update products, variants, categories, characteristics, collections, and characteristic colors; archive/unarchive records.
Pricing and stock — list/get variants, update variants, and bulk-update prices for up to 5000 variants in one atomic request.
Media and files — upload files and videos (by path, base64, or URL), poll video processing, and attach media to variants.
Orders and customers — list/get orders, confirm/cancel orders, complete delivery, set Chestny Znak marking codes, and manage customer data.
Promotions — create/update discounts, promocodes, and gift cards; attach/detach products, categories, or collections; list and inspect promotion statuses.
Webhooks — create, update, validate, list, and delete webhooks.
Store operations — get store/current user/regions, manage warehouses, alerts, and news articles.
Safety-oriented design — read-only tools are marked
readOnlyHint; write tools require explicit calls, and destructive operations are flagged.
Provides AI assistant tools for managing a Yandex KIT online store, including order operations, catalog management, promotions and promo codes, store resources, webhooks, catalog auditing, and launch readiness checks.
Provides a Telegram channel for following updates and new capabilities of the Yandex KIT Skills assistant.
Поручайте задачи магазина Яндекс KIT ассистенту
Yandex KIT Skills β
Проверьте, что требует внимания, приведите каталог в порядок, разберите заказы и запустите промо обычной фразой. Ассистент читает текущее состояние магазина, выполняет изменения только по точной команде и показывает проверенный итог.
Проверяет. Заказы, каталог, промо, вебхуки и готовность магазина к открытию.
Выполняет. Обновляет заданные цены и остатки, запускает акции, работает с файлами и документами.
Показывает результат. Сообщает, что изменилось, что проверено полностью и где данных не хватило.
Ваш первый запрос
Что сейчас требует внимания в магазине? Проверь заказы и каталог и укажи, какие данные удалось проверить.
Подключить магазин · Посмотреть, что ещё можно поручить · Подписаться на Telegram-канал
AI-ассистент для Яндекс KIT
Yandex KIT Skills β позволяет управлять магазином из привычного приложения (Claude, Cursor, Codex и других). Вы ставите задачи обычными словами, а ассистент проверяет текущее состояние магазина, находит то, что требует внимания, и выполняет команды.
Четыре готовых сценария. Операционные риски и приоритеты, ошибки каталога, запуск акций и готовность магазина к открытию.
Голосом или текстом. Формулируйте рабочие задачи естественным языком. Пишите или диктуйте, если приложение поддерживает голосовой ввод. При желании можно вызвать нужный навык напрямую.
Изменения только по команде. Проверки ничего не меняют, а цены, остатки, сроки и другие бизнес-значения ассистент не придумывает.
Что уже умеет ассистент
Оператор (
a1-yandex-kit-operator) проводит операционный разбор магазина: находит всё, из-за чего можно потерять заказ, деньги или репутацию, расставляет риски по срочности и формирует точный план действий.Доктор каталога (
a1-yandex-kit-catalog-doctor) находит ошибки, из-за которых товары теряют видимость и продажи, и по команде владельца исправляет их.Запуск промо (
a1-yandex-kit-promo-launcher) превращает заданные условия в готовую акцию: создаёт, изменяет и запускает скидки, промокоды и подарки в магазине.Проверка запуска (
a1-yandex-kit-launch-check) определяет, готов ли магазин к открытию и приёму заказов: находит блокеры и перечисляет всё, что ещё нужно подтвердить.Специализированные навыки.
a1-yandex-kit-orders,a1-yandex-kit-catalog,a1-yandex-kit-promotions,a1-yandex-kit-storeиa1-yandex-kit-webhooks— для отдельных задач по заказам, каталогу, акциям, ресурсам магазина и вебхукам.Не нашли нужного сценария? Расскажите, какой задачи вам не хватает, и следите за новыми возможностями.
Related MCP server: retailcrm-mcp
Увидеть работу за минуту
После подключения:
Вы: Что сейчас требует внимания в магазине?
Ассистент: Проверил доступные заказы, каталог, промо и вебхуки. Показал найденные риски и отдельно отметил участки, которые не удалось проверить полностью.
Вы: Выгрузи заказы в CSV с датой, суммой и статусом.
Ассистент: Подготовил выгрузку и указал её охват. Если список получен не полностью, это отмечено в результате.
Вы: Подними цены всех товаров на 20%.
Ассистент: Цены всех 12 товаров повышены с 999 ₽ до 1 199 ₽. Базовые и итоговые цены обновлены и проверены.
Вы: [прикладывает семь PDF-файлов]
Здесь инструкции, технические паспорта и сертификаты. Названия файлов непонятные. Разбери, к каким товарам относится каждый документ, и прикрепи их, пожалуйста.
Ассистент: Разобрал содержимое семи документов и сопоставил их с каталогом по названиям моделей и SKU:
«Кресло Urban Relax» — инструкция по сборке и технический паспорт;
«Nordic Comfort Lounge Chair» — инструкция по сборке и спецификация материалов;
«Black Force», «Pink Dream» и «Champion Spirit» — декларация соответствия для каждого парфюма.
Все совпадения однозначные. Прикрепил 7 из 7 документов, дал им понятные названия и проверил список документов у каждого товара. Нераспознанных файлов нет.
Содержание
Быстрый старт
Откройте терминал и установите пакет навыков:
npx skills@latest add ztemerbekov/a1-yandex-kit-skills -yЧтобы позже получить свежие обновления, выполните
npx skills update.Явно вызовите установщик навыком
a1-yandex-kit-setup. В Codex вызов выглядит так:$a1-yandex-kit-setupВ другом приложении выберите навык с этим именем в списке команд.
Следуйте вопросам установщика. Он проверит окружение и токен, подключит магазин к выбранному приложению и выполнит первый вызов.
После сообщения об успешном подключении рабочие сценарии можно вызывать обычными фразами — голосом или текстом. Начните с простого вопроса:
Как дела в магазине?
Установщик работает с Claude Code, Claude Desktop, Cursor, OpenAI Codex и другими приложениями. Пакет также можно установить через маркетплейс приложения. Если подключение не завершилось, откройте подробную инструкцию: там есть полный список платформ, ручная настройка и способы устранения ошибок.
Подробнее о сценариях
Выберите знакомую задачу и отправьте запрос ассистенту. Формулировки можно менять: подставьте свои товары, заказы, даты и условия. Для проверки достаточно описать, что вас интересует; для изменения укажите нужное значение или приложите файл, из которого его взять.
Начинается рабочий день, накопились заказы или нужно быстро разобраться в состоянии магазина. Оператор (a1-yandex-kit-operator) проверит доступные данные и расставит найденные риски по срочности.
Что можно написать:
Как дела в магазине? С чего начать сегодня?
Я три дня не заглядывал в магазин. Разбери заказы за это время и покажи, что требует внимания.
Перед выходными проверь заказы, каталог и действующие акции. Какие вопросы нужно решить в первую очередь?
Что получите: разбор заказов, состояния каталога, промо и вебхуков с фактами из магазина. Ассистент отдельно укажет, что не удалось проверить.
Пришла поставка, изменился прайс или в каталоге накопились ошибки. Доктор каталога (a1-yandex-kit-catalog-doctor) поможет проверить товары и внести заданные изменения.
Что можно написать:
Проведи полный аудит каталога. Сначала покажи ошибки, которые мешают купить товар.
Найди товары без фотографий и проверь, где не заполнены характеристики.
Подними цены всех товаров на 20%.
Установи остаток у кроп-топа Summer Breeze: 13 штук.
Прикладываю файл с новыми остатками. Сопоставь товары по SKU и обнови остатки по файлу. Покажи строки, для которых не нашлось однозначного совпадения.
Что получите: список ошибок с указанием товаров или проверенный результат изменений. Для аудита ассистент разделит блокеры, риски и рекомендации, укажет охват и непроверенные участки. Цены и остатки возьмёт из вашей команды или файла.
Нужно проверить оплату, подготовить отчёт или передать отправления службе доставки. Эти задачи доступны через a1-yandex-kit-orders.
Что можно написать:
Покажи заказы за сегодня и их статусы оплаты. Скрой имена, телефоны и адреса.
Выгрузи заказы за прошлую неделю в CSV: дата, сумма и статус.
Дай платёжную ссылку для заказа 123.
Сформируй акты приёма-передачи для всех частей заказа 123. Если для какой-то части акт недоступен, объясни почему.
Что получите: список заказов, CSV, платёжную ссылку или ссылки на PDF с актами — в зависимости от запроса. Если выгрузка неполная, ассистент укажет её охват; если акт недоступен, перечислит пропущенные части заказа с причинами.
Платёжную ссылку ассистент отдаёт вам; покупателю её отправляете вы. Она постоянная и неотзываемая, поэтому не публикуйте её в открытом доступе. Ссылки на PDF с актами, наоборот, истекают: если ссылка перестала работать, запросите акт заново.
Поставщик прислал материалы, и их нужно разложить по карточкам. Навыки a1-yandex-kit-catalog и a1-yandex-kit-store помогают работать с медиа и файлами магазина.
Что можно написать:
Прикладываю семь PDF-файлов: инструкции, технические паспорта и сертификаты. Разбери, к каким товарам они относятся, и прикрепи документы к карточкам.
Покажи загруженные файлы, включая документы, со ссылками на них.
Покажи список загруженных видео и их статусы обработки.
Добавь это фото к товару SKU-42. Сохрани остальные фотографии в карточке.
Что получите: список файлов или результат прикрепления материалов с проверкой карточек. Если по документу нельзя однозначно определить товар, ассистент уточнит соответствие. Видео хранятся отдельно и не входят в общий список файлов — их можно запросить отдельной фразой.
Условия акции уже определены, осталось перенести их в магазин. Запуск промо (a1-yandex-kit-promo-launcher) создаёт и изменяет скидки, промокоды и подарки по вашей команде.
Что можно написать:
Какие акции сейчас действуют? Покажи сроки, товары и условия каждой.
Создай промокод SMPT10 «Сентябрь 10»: скидка 10% на все товары с 1 по 30 сентября 2026 года по Москве, без лимита использований. Активируй сразу.
Продли промокод SMPT10 до 7 октября 2026 года, 23:59 по Москве. Остальные условия сохрани.
Отключи промокод SMPT10 и проверь, что он больше не активен.
Что получите: обзор действующих промо или настроенную акцию с проверкой итоговых условий и статуса. Если для запуска не хватает размера скидки, товаров, срока или другого обязательного условия, ассистент уточнит его.
Рекламный специалист или интегратор просит ссылку на товарный фид — файл, из которого сервис получает каталог. Навык a1-yandex-kit-store найдёт ссылку для нужной площадки.
Что можно написать:
Нужна ссылка на каталог для Яндекс Директа. Дай YML-фид магазина.
Подключаю RetailCRM. Покажи ссылку на ICML-фид.
Дай фид для Яндекс Товаров и подпиши, какой это формат.
Что получите: постоянную ссылку на нужный фид: YML для Яндекс Директа, ICML для RetailCRM или YML_GOODS для Яндекс Товаров. Адрес сохраняется при обновлении содержимого. Ссылку нужно добавить в соответствующий сервис; получение фида само по себе не запускает рекламу и не настраивает CRM.
Нужна история заказов конкретного клиента, список для отчёта или правка в карточке. Эти задачи доступны через a1-yandex-kit-orders.
Что можно написать:
Покажи заказы клиента с этим ID, скрыв его персональные данные.
Выгрузи клиентов в CSV: ID, имя и email.
В карточке клиента с этим ID замени заметку на «Предпочитает самовывоз». Остальные поля сохрани.
Что получите: запрошенные данные, выгрузку с указанием охвата или проверенное изменение карточки. Скрытие персональных данных действует только на ответ ассистента — сведения в магазине сохраняются.
Внешняя система получает события магазина через вебхуки. Навык a1-yandex-kit-webhooks поможет посмотреть подписки, проверить принимающий адрес или отключить конкретный вебхук.
Что можно написать:
Покажи вебхуки магазина: куда они отправляют уведомления, на какие события подписаны и какой у них статус.
Запусти проверку вебхука с этим ID и покажи результат. Не активируй его.
Отключи вебхук с этим ID. Сам вебхук сохрани.
Что получите: список настроек, результат проверки или подтверждённое отключение. Проверка отправляет тестовый запрос на адрес вебхука; ассистент выполняет её по вашей команде.
Каталог заполнен, и вы собираетесь принимать первые заказы. Проверка запуска (a1-yandex-kit-launch-check) поможет найти то, что ещё мешает открытию.
Что можно написать:
Проверь, готов ли магазин к открытию. Что мешает начать принимать заказы?
Завтра запускаем магазин. Проверь каталог и промо, а непроверенные этапы покупки вынеси в отдельный список.
Что мне проверить вручную в оплате и доставке перед открытием?
Что получите: статус «не готов», «условно готов» или «готов» с блокерами, рисками и непроверенными участками. Ассистент проверит каталог и промо, учтёт подтверждения проверки оформления заказа, а при наличии web-доступа у приложения — посмотрит публичную витрину. Оформление и оплату тестового заказа проверяет владелец; одних данных API для статуса «готов» недостаточно.
Как ассистент взаимодействует с магазином
Проверка ничего не изменяет. Если вы просите «покажи», «проверь», «разбери» или «найди», ассистент только проверит магазин и покажет результат.
Для изменения нужна точная команда. Укажите, что нужно изменить и какое значение установить. Например: «Подними цены всех товаров на 20%». Ассистент не будет самостоятельно придумывать цену, остаток, срок или другое решение.
Повторное подтверждение не требуется. Точная команда уже считается разрешением на действие.
Это правило относится к ассистенту. Само AI-приложение может отдельно показывать кнопку Allow перед вызовом инструмента. При подключении можно один раз включить «Работу без остановок»: AI-приложение разрешит все текущие и будущие инструменты Yandex KIT, включая удаления, заказы, промо и настройки магазина. Сами навыки по-прежнему меняют магазин только по вашей точной команде.
Результат проверяется. Перед изменением ассистент посмотрит текущее состояние объекта, выполнит команду и затем проверит, что получилось.
Неясная операция не повторяется. Если во время изменения пропадёт связь и результат нельзя будет подтвердить, ассистент сообщит об этом, но не станет повторять команду вслепую.
Автоматической отмены нет. Ассистент не сохраняет копию состояния магазина перед каждым изменением, поэтому вернуть всё одной командой «как было» нельзя.
Обратите внимание
Все изменения происходят в рабочем магазине. Отдельного тестового магазина или пробного режима нет.
Ассистент не следит за магазином постоянно. Он проверяет состояние магазина и выполняет действия только тогда, когда вы ставите ему задачу.
С заказами доступны не все действия. Ассистент может просматривать, подтверждать и отменять заказы. Для самовывоза и собственной доставки при выключенной автоматизации он может завершить доставку; произвольные статусы доставки и статусы оплаты недоступны. Он не может создавать заказы, свободно менять содержимое заказа, оформлять возвраты или писать покупателям.
Готовность к открытию проверяется не полностью автоматически. Ассистент не видит настройки оплаты и доставки и не может самостоятельно оформить и оплатить тестовый заказ. Эту часть проверки выполняет владелец магазина.
После ошибки связи команда не повторяется автоматически. Сначала ассистент попробует проверить, выполнилось ли изменение. Если подтвердить результат не получится, он сообщит об этом и остановится, чтобы случайно не выполнить действие дважды.
Охват списка виден в ответе. Ассистент укажет, сколько объектов проверено, а непроверенные объекты или участки отметит отдельно. Если данных не хватает, он не назовёт результат полным. Для большого списка может понадобиться несколько обращений к магазину.
Списки заказов и клиентов можно выгрузить в CSV. Попросите выгрузить список с выбранными полями, например: «Выгрузи заказы в CSV с датой, суммой и статусом». Если список получен не полностью, ассистент скажет об этом.
Персональные данные можно скрыть в ответе. Попросите показать заказы, клиентов или подарочные карты без имён, телефонов, email, адресов и заметок. Это изменяет только показанный ответ — данные магазина сохраняются как есть.
MCP-сервер (Model Context Protocol)
Этот репозиторий содержит рабочий MCP-сервер для API Яндекс KIT — не только навыки и плагины для AI-клиентов.
Реализация. Сервер написан на TypeScript с официальным пакетом
@modelcontextprotocol/sdk, создаётся черезMcpServerи подключается к AI-клиенту черезStdioServerTransport.Возможности MCP. Сервер предоставляет 88 инструментов (
tools) для работы с товарами, вариантами (включая массовое обновление цен), категориями, характеристиками, видео, новостями, заказами, клиентами, складами, коллекциями, файлами, скидками, промокодами, подарочными картами, алертами и вебхуками. Ресурсы (resources) и промты (prompts) не объявляются: операции API предоставляются как MCP-инструменты.Полное покрытие API. Специализированные инструменты дополняют
search_operations,get_operation_schemaиkit_request, через которые доступны все 166 операций API Яндекс KIT.Транспорт. Локальный MCP-сервер работает через
stdio.Публикация. Сервер доступен как npm-пакет
mcp-yandex-kitи запускается черезnpxна Node.js 20.11 и новее.Навыки. Навыки из этого репозитория добавляют готовые рабочие сценарии и правила безопасного выполнения операций поверх MCP-инструментов, но не заменяют сам MCP-сервер.
Исходный код: packages/mcp/src/index.ts · packages/mcp/src/tools · список инструментов · README MCP-пакета.
Ниже показано прямое подключение самого MCP-сервера. Оно добавляет MCP-инструменты для работы с API Яндекс KIT, но не устанавливает готовые навыки из этого репозитория.
Добавьте сервер командой:
codex mcp add yandex-kit \ --env YANDEX_KIT_TOKEN=ваш_токен \ -- npx -y mcp-yandex-kit@latestНачните новую задачу Codex.
Проверьте подключение простым запросом:
Проверь, подключился ли магазин. Покажи, сколько товаров в каталоге, и скажи, на что стоит обратить внимание в первую очередь.
Откройте
~/.cursor/mcp.jsonи добавьте сервер:{ "mcpServers": { "yandex-kit": { "command": "npx", "args": ["-y", "mcp-yandex-kit"], "env": { "YANDEX_KIT_TOKEN": "ваш_токен" } } } }Перезагрузите окно Cursor.
Проверьте подключение простым запросом:
Проверь, подключился ли магазин. Покажи, сколько товаров в каталоге, и скажи, на что стоит обратить внимание в первую очередь.
Добавьте сервер командой:
claude mcp add yandex-kit \ -e YANDEX_KIT_TOKEN=ваш_токен \ -- npx -y mcp-yandex-kit@latestНачните новую сессию Claude Code.
Проверьте подключение простым запросом:
Проверь, подключился ли магазин. Покажи, сколько товаров в каталоге, и скажи, на что стоит обратить внимание в первую очередь.
Установка через маркетплейсы
Выберите AI-приложение, в котором хотите управлять магазином. Каждый вариант устанавливает полный комплект: подключение Яндекс KIT, API-навыки и четыре готовых сценария.
Если способ установки не важен, используйте быстрый старт — там достаточно одной команды.
Добавьте маркетплейс и установите полный комплект:
codex plugin marketplace add ztemerbekov/a1-yandex-kit-skills codex plugin add a1-yandex-kit-skills@a1-yandex-kit-skillsНачните новую задачу Codex, чтобы загрузились установленные навыки.
Подключите магазин:
$a1-yandex-kit-skills:a1-yandex-kit-setup
Следуйте вопросам установщика — он проверит окружение, подключит магазин и выполнит первый вызов.
Добавьте маркетплейс:
cursor-agent plugin marketplace add https://github.com/ztemerbekov/a1-yandex-kit-skillsЗапустите Cursor Agent, откройте
/pluginи выберите маркетплейс A1 Яндекс KIT.Установите плагин A1 Яндекс KIT, затем выберите навык
a1-yandex-kit-setupи следуйте вопросам подключения.
Добавьте маркетплейс и установите полный комплект:
/plugin marketplace add ztemerbekov/a1-yandex-kit-skills /plugin install a1-yandex-kit-skills@a1-yandex-kit-skillsЗагрузите установленные навыки:
/reload-pluginsПодключите магазин:
/a1-yandex-kit-skills:a1-yandex-kit-setup
Следуйте вопросам установщика — он проверит окружение, подключит магазин и выполнит первый вызов.
Обновление
Обновляйте пакет тем же способом, которым установили его.
Если вы использовали быстрый старт, получите свежую версию навыков одной командой:
npx skills updateЕсли вы устанавливали пакет через маркетплейс, обновите плагин A1 Яндекс KIT в том же AI-приложении. После обновления начните новую задачу, чтобы приложение загрузило свежую версию навыков.
Документация
Как установить и подключить магазин — пошаговая настройка, поддерживаемые приложения и помощь, если подключение не заработало.
Как устроен Yandex KIT Skills — к чему подключается ассистент, какие действия ему доступны и какие есть ограничения.
Документация API Яндекс KIT — официальный справочник Яндекса для разработчиков.
Помощь и обратная связь
Нужна помощь, что-то не работает или есть идея? Напишите нам в Telegram — Yandex KIT Skills β.
Available Tools
88 toolsbulk_update_pricesBulk update pricesA
Update prices of up to 5000 variants in one synchronous, atomic request — the fast path for syncing a whole catalog instead of calling update_variant per item. If a single item is invalid (variant unknown or archived, variant listed twice, price malformed, discount price above the base price) the whole request is rejected with 400 and NOTHING is applied; the response errors list names every offending variant. Both price fields are optional per item: omit a key to keep the current value, or send null to reset it (resetting price works only on unpublished variants). Changing price recomputes the promo price; promo membership is refreshed in the background afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Price updates, 1-5000 items, one entry per variant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and excels: it discloses atomicity ('NOTHING is applied'), failure semantics (400 rejection, errors list), optional field handling (omit vs. null), the unpublished-only restriction on resetting price, and side effects like promo price recomputation and background membership refresh.
Agents need to know what a tool does to the 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 dense, information-rich paragraph with no filler, but it is somewhat long and packs many details. It is well-structured by starting with purpose, then atomicity, then field semantics, each sentence earning 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 no output schema or annotations, the description covers the main usage, failure modes, parameter semantics, and side effects quite thoroughly. It doesn't describe the full response object or mention rate limits/auth, but these are not critical for a bulk update tool with this level of detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already details omit/null behavior, so baseline is 3. The description adds meaningful nuance such as 'Changing price recomputes the promo price' and 'promo membership is refreshed in the background', which go beyond the schema's field-level 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 identifies the tool as 'Update prices of up to 5000 variants in one synchronous, atomic request', which is a specific verb + resource + scope. It also explicitly contrasts it with 'calling update_variant per item', distinguishing it from a sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states this is 'the fast path for syncing a whole catalog instead of calling update_variant per item', directly naming an alternative tool and providing a clear usage context. Although it doesn't list explicit exclusions, the alternative and bulk-sync intent are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderCancel orderA
Cancel an order. Whether cancellation is possible depends on the order's current status. The optional owner reason is retained only in the MCP conversation/tool log; the KIT CancelOrder endpoint has no reason field, so it is not sent to or stored by the KIT API. No request body is required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). | |
| reason | No | Owner-provided cancellation reason for conversation and tool-log context only; it is not sent to or stored by the KIT API. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that cancellation is status-dependent, that the optional reason is only kept in the MCP log and not sent to the KIT API, and that no request body is required. These are meaningful behavioral traits beyond a simple 'cancel' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loaded with the core action. Every sentence provides essential context—status dependency, reason handling, and body requirement—with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple cancellation tool with only two parameters and no output schema, the description covers the critical aspects: what it does, a key constraint (status), behavior of the optional reason, and request format. It could be more explicit about success/failure responses or which statuses allow cancellation, but that level of detail is not necessary for this 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 input schema already has 100% parameter coverage, with the reason field clearly documented as conversation/tool-log only. The description repeats this same information without adding new parameter-level meaning. It adds the non-parameter note about no request body, but that does not enhance parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb+resource phrase 'Cancel an order,' which clearly states the tool's function. It distinguishes itself from sibling tools like confirm_order and complete_order_delivery by naming the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by noting that cancellation depends on the order's current status, setting expectations for when the tool may not work. However, it does not explicitly name alternatives or state when-not-to-use scenarios, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
category_actionArchive or unarchive categoryA
Archive a category (soft delete: hidden from the storefront, restorable) or unarchive it. If the category is the only one of a product with non-archived variants, archiving requires archive_variants=true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Category ID (UUID). | |
| action | Yes | Action to perform. | |
| archive_variants | No | Archive only: also archive the variants left without any active category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full transparency burden. It discloses a key behavior: archive is a soft delete (hidden from storefront, restorable). It also reveals the conditional requirement for archive_variants, which is meaningful side-effect information. Missing are details on permissions or return format, but the disclosed behavior is non-trivial and valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly opens with the verb, and contains no filler. It efficiently packs the soft-delete framing, the restorability, and the conditional archive_variants requirement without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description covers the core context well: what the tool does, when to use it, and an important side-effect rule. It does not explain return values or broader effects on products, but for a simple toggle action, the context is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for all three parameters. The description adds extra meaning beyond the schema by explaining when archive_variants becomes necessary and clarifying the effect of the 'archive' action. This enrichment justifies a score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Archive a category ... or unarchive it.' It also defines the nuance of soft delete and clearly distinguishes from siblings like update_category by naming the two actions. The title and description align, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when an archive/unarchive action is needed. It adds a crucial conditional ('If the category is the only one of a product with non-archived variants, archiving requires archive_variants=true'), which guides usage. However, it does not explicitly contrast with alternatives like update_category, though the title and action enum make this clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_order_deliveryComplete order deliveryA
Mark the delivery of an order as fully completed. Intended for pickup and the store's own delivery when delivery automation is off — with automation on, the platform moves the order itself. No request body is required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the primary effect (marks delivery fully completed) and the absence of a request body, but it does not mention permissions, reversibility, or side effects. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, followed by usage context and a request note. Every sentence contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the action, when to use, and the request body absence. It lacks return/error details, but given the simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter with 'Order ID (UUID)', so the description adds no extra meaning to the id parameter. The note 'No request body is required' is about request structure, not parameter semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action 'Mark the delivery of an order as fully completed' with a clear resource and scope, and it distinguishes itself from sibling order tools like confirm_order and cancel_order by focusing on delivery completion. It also clarifies when this applies (pickup/own delivery with automation off), making the purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states intended use: 'Intended for pickup and the store's own delivery when delivery automation is off' and gives an exclusion: 'with automation on, the platform moves the order itself.' This tells the agent when to use the tool and when not, even though no specific alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_orderConfirm orderA
Confirm an order. The order must be in the WAIT_FOR_CONFIRMATION status. No request body is required.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the status precondition and 'No request body is required,' but it does not disclose the resulting order status changes, potential errors, or idempotency. The 'No request body' statement is ambiguous given the schema requires an id, potentially misleading the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, with the main action in the first sentence and no filler. It is front-loaded and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema, so the description covers the core action. However, the ambiguity between 'No request body is required' and the required 'id' in the schema leaves the agent uncertain about how to pass the parameter, and the description does not clarify the response or side effects of confirming an order.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'id' parameter, so the schema already documents its meaning as 'Order ID (UUID).' The description adds no additional semantic value about the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Confirm an order,' which clearly identifies the verb and resource. It distinguishes from sibling tools like cancel_order and complete_order_delivery by specifying the confirm action and adding the required WAIT_FOR_CONFIRMATION status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit precondition: 'The order must be in the WAIT_FOR_CONFIRMATION status.' This implies when to use the tool. It does not explicitly mention alternatives or when-not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_blogCreate news articleA
Create a store news article. Call get_operation_schema("CreateBlog") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| blog | Yes | News article matching the CreateBlog request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It explicitly says this operation creates (persists) a new store article, which is the primary, and points to the operation-schema requirement, a useful runtime detail. However, it gives no info about permissions, idempotency, irreversibility, or what is returned, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences: the first names the action and target, the second gives the indispensable operation-schema reference. Every word carries the weight—no fluff, no repeated schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells the agent how to get the required schema and what the tool does, but it leaves several practical gaps: there is no output schema, no mention of side effects besides creation, and no clue about what to do if the blog already exists (i.e. alternative update_blog). It is a defensible minimal viable definition but not complete for a description with zero annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes the 'blog' nested object as 'News article matching the CreateBlog request error'. The description enriches this by directly telling the agent to call get_operation_schema("CreateBlog") to obtain the exact shape, which is the critical missing context. It doesn't enumerate all fields, but it points the agent precisely to where they can be resolved.
Input schemas describe structure but not intent. Descriptions should explain 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 'Create a blog' gives a specific verb, resource, and scope—'store news article'—and naturally distinguishes it from sibling blog tools like get_blog, update_blog, and list_blogs, which have clearly different actions. The title 'Create news article' aligns with the description, so an agent can infer exactly what this tool creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context—'Create a newsletter article'—and adds an effective procedural tip: call get_operation_schema("CreateBlog") before invocation, which is the key usage step. It does not explicitly exclude cases where the blog already exists or mention asking to modify an existing article, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryCreate categoryA
Create a new product category. Required: title. Optional: slug, parent_id, display_sequence, is_hidden_in_menu, file_id, seo_title, seo_description. Call get_operation_schema("CreateCategory") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category record matching the CreateCategoryRequest schema (see get_operation_schema("CreateCategory")). Required: title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it creates (mutates) a resource, but doesn't mention permissions, idempotency, side effects, or response format. The reference to get_operation_schema points to request shape, not behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three brief sentences, front-loaded with the purpose, then field requirements. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives clear field requirements and a pointer to get_operation_schema for the exact shape, but it doesn't describe the return value or any error scenarios. For a create operation with no output schema, this leaves some ambiguity about the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes a single 'category' object. The description adds value by enumerating the optional fields (slug, parent_id, display_sequence, etc.) which are not specified in the schema property description beyond a reference to another 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 creates a new product category, using the specific verb 'Create' and resource 'product category', distinguishing it from sibling tools like get_category and update_category. The action and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use—creating a new category—and lists required vs optional fields. It doesn't explicitly name alternatives, but the verb 'Create' implies its use case vs update/get. No exclusions are given, so it's clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_characteristicCreate characteristicA
Create a product characteristic. Call get_operation_schema("CreateCharacteristic") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| characteristic | Yes | Characteristic matching the CreateCharacteristic request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because no annotations are provided, the description carries the full behavioral burden. It states the primary side effect (creating something), but it does not disclose permission requirements, idempotency, duplicate handling, or what happens to related data. It also does not describe the response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences. The purpose is front-loaded, and the follow-up instruction about retrieving the exact request schema is both relevant and necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 reasonably complete for a simple create operation because it tells the agent where to get the precise request shape. However, with no annotations and no output schema, it still leaves important context unspecified, such as error behavior, authorization needs, and what the response contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only presents an opaque nested object, so the description adds meaningful value by instructing the agent to call get_operation_schema("CreateCharacteristic") for the exact request shape. This compensates for the otherwise unhelpful parameter definition.
Input schemas describe structure but not intent. Descriptions should explain 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 says exactly what the tool does: "Create a product characteristic." The verb and noun are specific, and the resource clearly distinguishes it from list/update characteristic tools and from characteristic-group tools elsewhere in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action "Create a product characteristic" makes the basic usage obvious, but the description does not mention preconditions, when not to use this tool, or alternatives such as update_characteristic. The guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_characteristic_groupCreate characteristic groupB
Create a product characteristic group. Call get_operation_schema("CreateCharacteristicGroup") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Group matching the CreateCharacteristicGroup request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, and the description does not disclose side effects, idempotency, authorization needs, validation behavior, or what a successful create returns. The pointer to get_operation_schema only covers request shape, not runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clean sentences: the action is front-loaded, and the second sentence provides an immediately useful pointer to the exact request shape. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The pointer to get_operation_schema addresses the core request-shape problem created by the nested 'group' parameter. However, with no annotations, no output schema, and no behavioral notes, the description still leaves effects, return values, and operation nuances unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single group parameter has 100% schema description coverage: 'Group matching the CreateCharacteristicGroup request schema.' The description adds nothing meaningful beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'Create a product characteristic group.' It is clear, though it mostly restates the tool name and does not explicitly distinguish the create operation from the sibling list/get/update characteristic-group operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction to call get_operation_schema('CreateCharacteristicGroup') gives the agent a concrete preparation step for building the request. It does not, however, state when to choose this tool over competing group-related tools or describe exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionCreate collectionA
Create a new collection. Required: title, status (ACTIVE|INACTIVE) and collection_type (STATIC|DYNAMIC; DYNAMIC also takes a dynamic_filter). Call get_operation_schema("CreateCollection") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection record matching the CreateCollectionRequest schema (see get_operation_schema("CreateCollection")). Required: title, status, collection_type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions required fields and dynamic_filter, but it does not disclose authentication needs, side effects, idempotency, or response format. For a mutating create operation, this is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with essential information and a useful pointer to get_operation_schema. There is no redundancy or filler; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested request shape, lack of annotations/output schema, and single parameter, the description is largely complete: it names all required fields, specifies allowed values, and directs the caller to get_operation_schema for the exact request shape. It omits outcome/error/response details, but the schema pointer mitigates the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides a generic nested 'collection' object with a pointer to CreateCollectionRequest, but the description adds meaning by spelling out required fields and enum values (ACTIVE|INACTIVE, STATIC|DYNAMIC) and noting when dynamic_filter applies. This exceeds the schema's bare 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 action ('Create a new collection') with the specific resource and lists required fields and types. It distinguishes itself from sibling collection tools (update_collection, delete_collection) by explicitly indicating creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisites (required fields) and a pointer to get_operation_schema, but it does not explicitly state when to use this tool versus alternatives like update_collection. The usage is implied by the name and context, not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_discountCreate discountA
Create a new discount. Required: title, discount_value ({value, type: PERCENT|VALUE}), discount_dates ({start_date, optional end_date}), status (ACTIVE|INACTIVE) and binding_mode (ALL_VARIANTS|SELECTED_VARIANTS). Call get_operation_schema("CreateDiscount") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| discount | Yes | Discount record matching the CreateDiscountRequest schema (see get_operation_schema("CreateDiscount")). Required: title, discount_value, discount_dates, status, binding_mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors. It mentions required fields and points to get_operation_schema, but does not explain side effects, permissions, return value, or irreversibility. For a mutation tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two efficient sentences, front-loaded with the purpose and required fields, and ends with a helpful pointer to get_operation_schema. 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 create operation with no annotations or output schema, the description provides the essential input requirements and points to get_operation_schema for exact shape. However, it lacks information about the response, error cases, or behavioral implications, leaving some gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description is minimal, only naming the required fields. The tool description adds meaning by detailing the structure of discount_value, discount_dates, status, and binding_mode with their allowed values, which the schema does not provide. This goes 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 states 'Create a new discount' with a specific verb and resource, clearly distinguishing it from update_discount and other discount-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies when to use it (creating versus updating), but there is no explicit guidance on when not to use or alternative tools. Listing required fields gives context, but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productCreate productA
Create a new product. Requires category_ids (array of category UUIDs, at least one). Call get_operation_schema("CreateProduct") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product record matching the CreateProductRequest schema (see get_operation_schema("CreateProduct")). Required: category_ids. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action and a parameter requirement; it does not disclose side effects, authentication needs, idempotency, error behavior, or the return value. For a mutation tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and includes only essential information (requirement and schema reference). No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with a nested product object and no output schema, the description effectively directs to get_operation_schema for the full request shape, which is a practical pattern. However, it omits details about the response or failure modes, so it is not fully complete but sufficient for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a baseline of 3. The description adds value by specifying that category_ids is an array of category UUIDs and requires at least one, which is not fully detailed in the schema. It also points to get_operation_schema for complete request shape, enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain 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 'Create a new product' with a specific verb and resource, clearly distinguishing it from siblings like list_products, get_product, and update_product. It is not a tautology and directly conveys the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires category_ids with the constraint 'at least one', and instructs the agent to call get_operation_schema("CreateProduct") for the exact request shape. This gives clear usage context, though it does not explicitly mention when not to use the tool or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_promocodeCreate promocodeA
Create a new promocode. Required: code, title, discount_value ({value, type: PERCENT|VALUE}), promocode_dates ({start_date, optional end_date}) and type (ORDER|PRODUCTS). Optional: binding_mode, minimum_order_amount, max_usage, max_discount_amount, one_time_use, first_order_only, show_in_pdp. The live API rejects codes containing lowercase letters even though the spec documents no format constraint — use uppercase Latin letters and digits (e.g. WELCOME5). Call get_operation_schema("CreatePromocode") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| promocode | Yes | Promocode record matching the CreatePromocodeRequest schema (see get_operation_schema("CreatePromocode")). Required: code, title, discount_value, promocode_dates, type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It reveals a critical non-obvious behavior: 'The live API rejects codes containing lowercase letters even though the spec documents no format constraint'. This goes beyond basic expectations and is genuinely useful for avoiding API errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earning its place: purpose, required/optional fields, the lowercase warning, and the schema pointer. It is front-loaded with the verb and resource, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a nested promocode object and the absence of an output schema, the description covers required and optional fields, enum types, a gotcha, and a pointer to the exact request schema. It does not describe return values or error behavior, but for a create tool with an external schema reference, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes the single parameter as matching a schema and points to get_operation_schema. The description adds essential semantics by enumerating required fields (code, title, discount_value, promocode_dates, type) and their sub-structure (e.g., discount_value with type PERCENT|VALUE), plus optional fields. This enriches the sparse 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 opens with 'Create a new promocode', clearly stating the verb and resource. It distinguishes itself from siblings like update_promocode and create_discount by explicitly naming the entity type and listing its specific fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (creating a new promocode) and includes a practical tip ('Call get_operation_schema("CreatePromocode") for the exact request shape'). It does not explicitly exclude alternatives, but the sibling naming makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_variantCreate variantA
Create a new variant (sellable item) under an existing product. Required: name and product_id. media holds images and at most ONE video: a video entry is accepted only when the same media list also carries at least one image, and its video_id must already be READY (upload_video / upload_video_from_url, then poll get_video). Call get_operation_schema("CreateVariant") for the exact request shape (pricing, stocks, media, ...).
| Name | Required | Description | Default |
|---|---|---|---|
| variant | Yes | Variant record matching the CreateVariantRequest schema (see get_operation_schema("CreateVariant")). Required: name, product_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavior-transparency burden. It goes beyond the obvious by disclosing the media rule: at most one video, a video requires an image in the same list, and the video_id must be READY after an upload/polling workflow. It does not disclose potential failure modes, permissions, or the response shape, but the validation detail is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The purpose is up front, required fields immediately follow, and the media edge case is given practical, actionable detail. The final pointer to get_operation_schema avoids bulk while preserving completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with a nested request object and no output schema, the description covers the main legal hazards and gives an explicit pointer to the authoritative schema. However, it leaves some context implicit, such as what the response contains and whether the operation can fail due to product state, relying instead on get_operation_schema discovery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage for the single variant parameter is 100%, the description adds crucial semantic depth beyond the schema's generic 'matching the CreateVariantRequest' text. It names required fields and explains non-obvious media/video constraints, significantly helping an agent construct a valid parameter object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action ('Create a new variant') and the resource ('under an existing product'), tying it directly to create_variant while differentiating it from create_product and update_variant. The added phrase '(sellable item)' clarifies the domain without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: the variant belongs under an existing product, and the required name and product_id are stated. It also explains the prerequisite for media/videos and directs to get_operation_schema for exact shape. It does not explicitly name alternatives or state when not to use the tool, so it misses a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_warehouseCreate warehouseA
Create a new warehouse. Required: title. The URL slug is generated automatically from the title and cannot be changed later. Call get_operation_schema("CreateWarehouse") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| warehouse | Yes | Warehouse record matching the CreateWarehouseRequest schema (see get_operation_schema("CreateWarehouse")). Required: title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the burden of disclosure. It adds a key behavioral trait: the URL slug is auto-generated from the title and immutable. It also points to the operation schema for shape, but doesn't disclose return values or permission requirements, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and every sentence adds critical information: the action, the required field, the immutable slug behavior, and a pointer to the operation schema. No redundant 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 tool has a nested object parameter, no output schema, and no annotations, the description covers the essential requirements and provides a critical behavioral warning. It also directs to get_operation_schema for exact shape, which compensates for the vague input schema. It could mention the return value, but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already describes the warehouse parameter and the required title, the description adds the crucial detail that the slug is generated from the title and cannot be changed later. This goes beyond the schema and enriches the meaning of the title parameter, justifying a 4 over the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a new warehouse, with a specific verb and resource. This distinguishes it from sibling tools like update_warehouse, get_warehouse, and list_warehouses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use (creating a warehouse), states the required title, and directs users to get_operation_schema for exact request shape. However, it does not explicitly mention alternatives or when not to use it, so it lacks the strict 'when-not' guidance for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookCreate webhookA
Create a new webhook. The url must use HTTPS (HTTP is rejected). Allowed events: ORDER_STATUS_CHANGED, ORDER_PAYMENT_STATUS_CHANGED, ORDER_DELIVERY_STATUS_CHANGED. NOTE: ORDER_STATUS_CHANGED will stop firing for the receipt-technical statuses CREATING_INITIAL_RECEIPT and CREATING_FINAL_RECEIPTS — key new integrations on ORDER_PLACED and COMPLETED instead (the statuses themselves stay readable via get_order). IMPORTANT: the response contains the signing secret — it is shown ONLY ONCE, store it securely. Call get_operation_schema("CreateWebhook") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook | Yes | Webhook record matching the CreateWebhookRequest schema (see get_operation_schema("CreateWebhook")). Required: url (HTTPS only), events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it is exceptionally transparent. It discloses HTTPS enforcement, allowed events, the endpoint's behavior change for ORDER_STATUS_CHANGED, and the security critical fact that the signing secret is shown only once.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and immediately covers constraints. It is longer than minimal, but every section conveys a distinct behavioral requirement, and the use of NOTE and IMPORTANT highlights critical caveats in a scannable way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 having no output schema, the description covers the essential context: request validation, event choices, event behavior caveats, and one-time secret handling. It could more explicitly describe the returned webhook resource, but the pointer to get_operation_schema fills most 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?
The single webhook parameter is documented at 100% coverage in the schema, but the description adds meaningful detail: the HTTPS requirement, allowed events, the events to prioritize, and a pointer to get_operation_schema for the exact request shape. This goes beyond the schema's generic reference to CreateWebhookRequest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'Create a new webhook', which clearly names both the action and the resource. It distinguishes itself from sibling tools such as get_webhook, update_webhook, delete_webhook, and validate_webhook, so an agent can immediately tell this is the creation operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for usage: creating a webhook, requiring HTTPS, and restricting to specific events. It does not explicitly contrast with alternatives like update_webhook, but the 'new' in the first sentence makes the intended operation unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionDelete collectionADestructive
Permanently delete a collection by its ID. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'Permanently' and 'This cannot be undone,' which goes beyond the destructiveHint annotation by emphasizing irreversibility. It does not contradict the annotation and provides useful behavioral context about the operation's consequences. However, it could mention other side effects (e.g., impact on associated objects), but for a simple deletion, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource. Every word contributes to understanding the tool's purpose and irreversibility. There is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and a destructive operation, the description is reasonably complete: it states what, how (by ID), and the irreversible nature. It does not explain post-deletion effects or error conditions, but these are not essential for basic use. It is slightly below a perfect score because it omits any mention of what happens to associated data (e.g., collection cards).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the 'id' parameter as 'Collection ID (UUID).' The description only repeats this with 'by its ID,' adding no new meaning beyond the schema. Since schema coverage is 100%, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Permanently delete a collection by its ID.' The verb 'delete' and resource 'collection' are specific, and the permanence caveat adds clarity. It is easily distinguished from sibling tools like update_collection or get_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to delete a collection) but does not explicitly state alternatives or exclusions. It does not mention, for example, that this should be used instead of update_collection when permanent removal is intended. Usage guidance is implied by the tool name and description, but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete webhookADestructive
Permanently delete a webhook by its ID. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the destructiveHint annotation by stating 'This cannot be undone,' emphasizing irreversibility. This is useful for an agent deciding whether to invoke the tool, though the annotation already indicates destructive potential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The key information (delete operation, permanence, target by ID) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one documented parameter and a destructiveHint annotation, the description provides sufficient context. The irreversibility warning and ID requirement cover the essential operational details, though no output schema exists to clarify return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'id' parameter as a webhook ID (UUID). The description's reference to 'by its ID' aligns with the schema but does not add additional semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Permanently delete a webhook by its ID.' The verb 'delete' and resource 'webhook' are specific, and the description distinguishes it from sibling webhook operations (get, create, update, validate, list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for removing webhooks, but it does not explicitly state when to use it versus alternatives like update_webhook or other means of disabling. No exclusions or alternative references are provided, so usage guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discount_actionArchive or unarchive discountA
Archive a discount (soft delete: status becomes ARCHIVED, the discount stops applying but stays restorable) or unarchive it (returns it to a non-archived status).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Discount ID (UUID). | |
| action | Yes | Action to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by explaining the soft delete nature, status change to ARCHIVED, and that the discount stops applying but remains restorable. This is important behavioral context beyond just the action.
Agents need to know what a tool does to the 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 packs essential information: the action, the soft delete semantics, and the restorability. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description adequately explains both action outcomes. It does not cover error scenarios or prerequisites, but the core functionality is sufficiently described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with 100% coverage. The description adds context about the meaning of archive/unarchive actions but does not significantly extend parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: archiving or unarchiving a discount, with specific effects. It distinguishes itself from sibling tools like update_discount or manage_discount_objects by focusing on the archive/unarchive action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to archive or unarchive a discount) and implies it over other tools, but does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_order_waybillsGenerate order waybillsA
Generate waybills (акты приёма-передачи отправлений) for order delivery chunks and return links to PDF documents. Chunks are grouped by warehouse + delivery service — one document per group. Every call asks the delivery service for a fresh document (nothing is cached), and the PDF links are signed and expire at expires_at — do not store them, re-request instead. Chunks a waybill cannot be produced for (self-pickup, delivery not created yet, no warehouse, unsupported service) come back in skipped with a reason. Chunk IDs come from get_order under delivery_chunks[].id.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Order delivery chunks to produce waybills for, 1-100 entries; an order+chunk pair must not repeat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does this admirably: fresh documents are always requested, nothing is cached, PDF links are signed and expire at expires_at, links should not be stored, and skipped chunks come back with a reason. This is critical operational context that would otherwise be invisible to the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose and grouping, behavior around caching/expiry, skip conditions, and the source of chunk IDs. It is front-loaded with the primary action and contains no filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one fully documented parameter and no output schema, this description is complete. It explains what the tool returns (PDF links and skipped items), the grouping semantics, the expiration behavior, and the conditions under which chunks cannot be processed. An agent has enough context to invoke it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage of the single parameter, including required fields, types, array bounds, and the non-repetition rule. The description usefully reinforces that delivery_chunk_id comes from get_order delivery_chunks[].id, but it doesn't need to add more detail; the baseline of 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate waybills') with a clear resource ('order delivery chunks') and outcome ('return links to PDF documents'). It goes beyond the tool name by explaining grouping by warehouse + delivery service, which distinguishes it from delivery-related siblings like complete_order_delivery or get_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 clearly implies when to use the tool: for delivery chunks that need waybills, and explicitly notes when chunks will be skipped (self-pickup, delivery not created, no warehouse, unsupported service). It also points to get_order as the source of chunk IDs, which guides the agent to a prerequisite call, though it doesn't name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blogGet news articleBRead-only
Get one store news article by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | News article ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation covers the safe-read trait, and the description merely repeats 'get.' It adds no behavioral detail beyond the annotation, such as what happens when no article is found, whether a partial read is returned, or how the article content is represented. No contradiction, but also no added transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, the main action and object are front-loaded, and every word earns its place. For a simple single-parameter getter, this is appropriately 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?
For a tool this simple, the description is mostly complete: it states the get action, the resource, and the filter by ID, with strong schema coverage and a readOnly annotation. However, there is no output schema, so the description could have noted whether the return is null/missing on not-found or how the article body is a returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the required 'id' parameter as a 'News article ID (UUID)', giving 100% schema_description_coverage. The description's 'by ID' reinforces the parameter but does not add session relativity beyond the schema, so it lands at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get one store news article by ID.' It maps well to the tool's get-by-ID nature and implies a single-resource retrieval, distinguishing it from list_blogs and mutation tools like create_blog/update_blog. The slight name/title mismatch ('blog' vs 'news article') keeps it from a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not state when to prefer this tool over alternatives, e.g. 'use list_blogs to find articles without an ID' or 'use list_blogs to browse.' An agent must infer the usage solely from the ID parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryGet categoryARead-only
Get a single product category by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Category ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation (a read operation). It does not add extra behavioral context such as error handling or response format, but for a simple getter, the annotation already covers the key safety trait. No contradiction, but no additional disclosure beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. It conveys all necessary purpose without extra 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 getter with one parameter and no output schema, the description is adequately complete. It implicitly indicates the return is the category object. It could mention not-found behavior, but this is a minor gap given the tool's simplicity and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the only parameter 'id' with a description ('Category ID (UUID)') at 100% coverage. The description's 'by its ID' adds no new semantics. Baseline 3 is appropriate since the schema fully handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a single product category by its ID' uses a specific verb and resource, clearly distinguishing it from list_categories (which retrieves multiple) and create/update actions. It precisely states what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: retrieve a category when you have its ID. However, there is no explicit mention of when to use this over list_categories or any alternative. The context is clear but not explicitly differentiated from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_characteristicGet characteristicARead-only
Get one product characteristic by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Characteristic ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description correctly indicates a read operation and the readOnlyHint annotation confirms it, so there is no contradiction. However, it adds no extra behavioral context such as response shape, errors, or auth expectations. This is acceptable for a simple getter with strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler. It front-loads the intent and contains all necessary concept-level information for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter getter with full schema coverage and no output schema, the description is completely adequate. An agent can correctly invoke the tool knowing it should pass one characteristic ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the only parameter as a Characteristic ID (UUID) with 100% coverage. The description's 'by ID' only restates the schema, adding no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get), the resource (one product characteristic), and the access pattern (by ID). This distinguishes it from list_characteristics and get_characteristic_group without requiring the agent to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By ID' makes it clear the tool is the single-record lookup for a characteristic when a specific characteristic UUID is already known. It does not explicitly name alternatives, but the query context is unambiguous enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_characteristic_groupGet characteristic groupARead-only
Get one product characteristic group by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Characteristic group ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe read operation. The description adds minimal behavioral context beyond confirming single-resource retrieval, but provides no information about not-found behavior, authentication, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant words. It includes the verb, resource, cardinality, and lookup method in a clear, front-loaded 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 single-parameter read operation, the description is sufficiently complete: the agent knows what to request, what to pass, and that one entity will be returned. It does not describe the response shape, but the absence of an output schema makes that less critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the only parameter fully: id is required, is a string, and is described as a UUID. The description only restates 'by ID', adding no meaningful information beyond the schema, so the high-coverage baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states both the action ('Get') and the resource ('product characteristic group'), plus the cardinality ('one') and lookup mechanism ('by ID'). This clearly distinguishes it from sibling tools like list_characteristic_groups and get_characteristic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies use when a known characteristic group ID is available, but there is no explicit guidance about when not to use it or that list_characteristic_groups should be used for fetching all groups. Usage is only implied, not explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionGet collectionARead-only
Get a single collection by its ID (title, slug, status, type, SEO fields).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds value by specifying the exact fields returned (title, slug, status, type, SEO fields), giving the agent insight into the output without needing a separate schema. It does not cover error cases or authentication, but for a simple read-only get, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core action and resource. It includes relevant field information without any filler or repetition, making it concise and easily parseable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 1-parameter read-only tool with a clear schema and a readOnlyHint, the description provides all necessary context: what it does and what it returns. No output schema is needed because the description already enumerates the returned fields, and no additional prerequisites or side effects are relevant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single 'id' parameter with a description ('Collection ID (UUID)'), achieving 100% coverage. The description adds no further parameter syntax or format details, only restating that the tool gets by ID, which matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('a single collection by its ID'), making it unambiguous. It also lists the fields returned (title, slug, status, type, SEO fields), which distinguishes it from sibling tools like list_collections or create_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you need a specific collection by ID. However, it does not explicitly mention when to use an alternative like list_collections for multiple collections or get_category for categories, leaving the guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_userGet current userARead-only
Get the user that owns the API token. Operation: GetCurrentUser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates a safe read operation. The description adds context by specifying that the user is the one who owns the API token, clarifying the relationship between the token and the returned user. No contradiction with 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 first sentence is concise and informative. The second sentence, 'Operation: GetCurrentUser,' is redundant since it repeats the tool name/operation. While not harmful, it adds little value. Overall the description is short and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with no output schema, the description sufficiently covers the tool's function. It could mention the fields returned, but for a simple user object this is often implied. The description is adequate given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty with 100% coverage. There is nothing for the description to explain about parameters. The baseline of 4 for 0 params applies, and the description appropriately says nothing.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Get the user that owns the API token.' This is a specific verb (get) and resource (user determined by token ownership), which distinguishes it from other get_* tools like get_customer or get_product. The tool's name and title reinforce its meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this tool to retrieve the authenticated user's information. It does not explicitly mention alternatives or situations to avoid, but because it targets the current user only, there is little ambiguity. The unique scope makes it clear that this is the tool for the current user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerGet customerARead-only
Get a single customer by their ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID (UUID). | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds only the 'single' and 'by ID' scoping. It does not disclose not-found behavior, response shape, or redaction effects beyond what the parameter schema already says. No contradiction with 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 a single, front-loaded sentence with zero filler. It conveys the essential purpose immediately and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents parameters and the readOnlyHint covers safety, but there is no output schema and the description does not describe return fields or error behavior. It also does not point to sibling tools for related lookups. Adequate for a simple getter, but with noticeable 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%, and both parameters have clear descriptions in the schema, especially the redact parameter. The tool description itself adds no parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a clear resource ('customer'), and the qualifier 'single customer by their ID', which distinguishes it from list_customers (plural) and get_current_user (current user). This is unambiguous and easy for an agent to act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 should be used when a single customer's ID is known, but it does not explicitly name alternatives such as list_customers or get_current_user, nor does it state when not to use this tool. Usage is inferable rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_ordersGet customer ordersARead-only
List order IDs of a customer by their customer ID (paginated). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID (UUID). | |
| page | No | Page number, starting at 1 (default 1). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses pagination behavior and the critical coverage-envelope semantics, explicitly forbidding the agent to claim completeness when coverage is partial. This is exactly the kind of non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, well-structured sentence with the main action first and the critical coverage caveat second. No filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description names the return envelope fields and gives the behavioral rule for partial coverage. For a read-only paginated listing with fully documented parameters, nothing essential to calling or interpreting the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents id, page, and per_page fully. The description adds only the generic 'paginated' context, which meets but does not exceed the baseline for fully documented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (list) and resource (order IDs for a customer by customer ID), with pagination noted. This clearly separates it from siblings such as get_order (one order) and list_orders (all 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?
Clear intended context: retrieve a customer's order IDs, paginated. It does not explicitly name alternatives or say when not to use it, so it misses the top bar for explicit routing, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_discountGet discountARead-only
Get a single discount by its ID (title, value, dates, status, binding mode).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Discount ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds useful context about the returned fields (title, value, dates, status, binding mode), going beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the tool's purpose and scope without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one required parameter, read-only annotation, and no output schema, the description is complete. It states what the tool retrieves and what fields are returned, which 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?
The schema provides 100% coverage for the single parameter 'id' with a clear description (Discount ID UUID). The tool description adds no additional semantic meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Get a single discount by its ID.' It also lists the returned fields (title, value, dates, status, binding mode), distinguishing it from list_discounts which retrieves multiple discounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need a single discount by ID, not a list. It does not explicitly name alternatives or exclusions, but the context is sufficiently clear given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileGet fileARead-only
Get metadata of a previously uploaded file by its ID (name, size, URL).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | File ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description's 'Get metadata' is consistent with a read operation. The description adds value by specifying the return fields (name, size, URL), which is useful since there is no output schema. No extra behavioral details like auth or errors are disclosed, but the read-only nature is already covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action, target, and output. It is front-loaded, contains no redundant wording, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read operation with annotations covering safety, the description is complete. It states the input (ID), the target (previously uploaded file), and the output fields (name, size, URL). No output schema exists, but the description provides the necessary return information. Complexities like error handling are not essential for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage for the single parameter 'id' with description 'File ID (UUID)'. The description adds only the context that the file was 'previously uploaded', which is mildly helpful but not essential. Baseline 3 applies because schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with the resource 'file' and clearly states the output is metadata (name, size, URL) identified by ID. This is distinct from sibling tools like get_video or get_order, so there is no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states it is for 'previously uploaded file', implying use after upload_file. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select this tool when needing file metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gift_cardGet gift cardARead-only
Get a single gift card by its ID, including status, balance and purchase info.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gift card ID (UUID). | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns with a safe read operation. It adds useful context about the response contents (status, balance, purchase info) but does not disclose potential error behavior or note that redact only affects the response—though the latter is documented in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the action, target, and key response fields with zero wasted words. It is immediately scannable 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 read-only single-resource retrieval tool with fully documented parameters and a readOnlyHint annotation, the description covers the essential behavior. It communicates the return payload shape well enough; only explicit guidance about when to prefer list_gift_cards is missing, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already well documented. The description adds no extra meaning beyond restating that the card is fetched 'by its ID' and mentioning redaction indirectly via personal data, so it does not elevate beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('a single gift card by its ID'), and enumerates what is returned (status, balance, purchase info). This clearly differentiates it from sibling list_gift_cards and other get_* tools without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: call this when you have a gift card ID and need one specific card's details, versus listing all gift cards. However, it does not explicitly mention list_gift_cards or state when not to use this tool, leaving the comparison to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_operation_schemaGet KIT operation schemaARead-only
Get full metadata for one KIT API operation by operationId: HTTP method, path, path/query parameters, request content type, pagination info, and the fully dereferenced JSON schemas of the request body and response. Call this before kit_request or any create/update tool to learn the exact body shape.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | Operation id in PascalCase, e.g. "CreateProduct" (find it via search_operations) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite the readOnlyHint annotation already indicating a safe read, the description goes further by detailing the complete return payload: HTTP method, path, parameters, content type, pagination info, and dereferenced schemas. It also clarifies the operational purpose ('to learn the exact body shape'), which adds value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. The first sentence enumerates the return contents, the second gives usage instruction. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is fully self-sufficient: it explains what the tool returns and when to call it. The absence of an output schema is compensated by explicitly listing the metadata components returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the single parameter operation_id is thorough, including format (PascalCase), an example, and a pointer to search_operations. The description itself does not add parameter-specific detail beyond this; it only contextualizes the parameter's use. Since schema coverage is 100%, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get full metadata for one KIT API operation by operationId.' It lists exactly what is returned (HTTP method, path, parameters, schemas) and explicitly distinguishes itself from siblings by instructing to call it before kit_request or create/update 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 second sentence provides explicit usage guidance: 'Call this before kit_request or any create/update tool to learn the exact body shape.' This names the exact context and tools it pairs with, making it clear when to use this tool instead of guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderGet orderARead-only
Get a single order by its ID, including line items, delivery chunks, payment and status.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the read-only nature. The description adds useful context about what the response contains (line items, delivery chunks, payment, status), but it does not describe error behavior, redaction effects, or other response details. This matches the baseline for a description that adds some value beyond annotations but leaves behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One focused sentence that leads with the action and resource, then lists the key response contents. Every part is informative and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get-by-ID tool with two well-documented parameters and no output schema, the description adequately covers what the agent needs: what it retrieves and what the response includes. The parameter schema covers the redaction option, and annotations cover safety. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already provides detailed descriptions for both parameters, including the redact behavior. The description merely reinforces 'by its ID' without adding new parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a single resource ('a single order'), and the identifier needed ('by its ID'). It distinguishes itself from plural list tools like list_orders and from related order tools like get_order_payment_link or get_order_addons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this when you need one specific order by ID. It does not explicitly name alternatives or exclusion criteria, but the singular framing and the resource scope are enough for an agent to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_addonsGet order addonsARead-only
List additional services (addons) attached to an order by the order ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the operation is read-only; the description adds the scoping detail of filtering by order ID, but does not describe return format, error behavior, or any side effects. Consistent with annotations, but not adding extensive 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?
A single, front-loaded sentence that conveys the tool's purpose without extra words. Every element is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one parameter, the description covers the input and the general output (addons). However, it lacks detail on the shape of the returned addons or edge cases like missing orders, but given the tool's simplicity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage for the single 'id' parameter with a clear description. The description's mention of 'by the order ID' reinforces but does not add new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly identifies the resource as additional services (addons) attached to an order, scoped by order ID. This distinguishes it from sibling tools like get_order and 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 the use case (retrieve addons for a specific order) but does not explicitly mention alternatives or exclusions. However, the context is clear enough to infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_payment_linkGet order payment linkARead-only
Get the signed payment-page link for an order, to be sent to the buyer — they can pay without logging in. The link is permanent (the same value for the order every time), works in any order status, never expires and cannot be revoked (revoking the API token does not invalidate it) — hand it out deliberately. Operation: GetOrderPaymentLink.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). | |
| source | No | Traffic-source label: lands in the final link's `from` parameter so the store can tell integrations apart in analytics. Defaults to `api`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral detail beyond the readOnlyHint annotation: the link is permanent, identical across calls, valid in any order status, never expires, and cannot be revoked even if the API token is revoked. This is exactly the kind of non-obvious behavior an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the primary purpose and includes high-value warnings about permanence and non-revocability. The trailing 'Operation: GetOrderPaymentLink.' line is redundant with the tool name, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has only two parameters, and the description provides enough context to invoke it correctly. Since there is no output schema, the description makes clear the result is a signed payment link, though it does not spell out the exact response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both id and source parameters. The description itself adds little parameter-level meaning beyond identifying the order context, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get the signed payment-page link for an order'. It clearly conveys what the tool does and distinguishes it from sibling tools like get_order because it returns a buyer-facing payment link, not order data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 intended use case: 'to be sent to the buyer — they can pay without logging in'. It gives clear contextual guidance even though it does not explicitly name alternative tools or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet productARead-only
Get a single product by its ID, including its category bindings.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Product ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the useful detail about category bindings but does not disclose other behavioral aspects such as not-found handling or the exact response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary purpose and includes one meaningful extra detail. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-get tool with one required parameter, a readOnlyHint annotation, and no output schema, the description is largely sufficient. It conveys the core action and a key return enrichment, though it could mention error behavior or return format for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'id' parameter as a Product ID (UUID), leaving no ambiguity. The description adds no additional parameter context, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' with a specific resource ('a single product by its ID') and adds a distinguishing detail ('including its category bindings') that sets it apart from sibling tools like list_products or get_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context is clear: this tool is for fetching one product by ID. It does not explicitly mention when to use an alternative (e.g., list_products for multiple products), but the 'single product by ID' phrasing provides sufficient situational clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promocodeGet promocodeARead-only
Get a single promocode by its ID (code, title, discount value, dates, type, usage limits).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Promocode ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds value by listing the fields included in the response, but it does not disclose other behavioral aspects such as error handling or pagination. Since the annotation covers the safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no superfluous content. Every word contributes to conveying the tool's action, scope, and included 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?
For a simple single-item fetch tool with one well-documented parameter and a read-only annotation, the description is complete. It lists the returned fields, compensating for the absence of an output schema, and no additional context 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?
The input schema fully documents the single 'id' parameter (UUID) with 100% coverage. The description does not add additional parameter-specific details, so it meets the baseline for schema-covered parameters without enhancing them 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 uses a specific verb ('Get') and resource ('single promocode') with a clear scope ('by its ID'), which distinguishes it from list-oriented sibling tools like list_promocodes. It also enumerates the fields returned, providing exact purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool fetches one promocode by ID, which is the appropriate use case when a specific promocode is needed. It does not explicitly mention alternatives (e.g., list_promocodes for all promocodes), so it lacks explicit exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regionsGet regionsARead-only
Get the list of geographic regions (countries, regions, cities). Each region has an id, a name and a parent region id, forming a hierarchy. Operation: GetRegions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds meaningful context beyond that by explaining the hierarchy (id, name, parent region id), which helps the agent understand the data structure. It does not contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the primary purpose stated in the first sentence. The hierarchy details are useful. The trailing 'Operation: GetRegions' is redundant and adds little value, slightly detracting from conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially explains the return shape (hierarchical regions with id, name, parent id). It could be more explicit about whether the list includes all levels or how parent relationships are represented, but for a simple read-only list tool it provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description does not need to explain parameter semantics, and the schema fully covers the empty parameter list. No additional parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain 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 list of geographic regions, specifying the resource type (countries, regions, cities) and the hierarchical structure. This is a specific verb+resource definition that distinguishes it from other get/list tools like get_product or list_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, but the name and description imply it is the tool for fetching geographic regions. There is no competing regions tool among siblings, so the intended usage is easily inferred, but explicit guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storeGet storeARead-only
Get information about the current store (id, slug, b2c_url). Operation: GetStore.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a safe read operation. The description adds the specific data returned (id, slug, b2c_url) and an internal operation name 'GetStore', but does not disclose additional behavioral traits such as authentication requirements, potential errors, or data freshness. The added information is modest and not a contradiction.
Agents need to know what a tool does to the 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 at two short sentences. The first sentence conveys the purpose and scope, while the second provides a useful API operation identifier. There is no redundant or filler content, making it an efficient and well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description is complete. It clearly states what information is returned and the scope ('current store'). The sibling context shows this is the only store-related tool, so there is no ambiguity or need for additional caveats. All necessary context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the rubric establishes a baseline of 4 for such cases. The description does not need to explain parameters, and it does not attempt to add irrelevant parameter info. The mention of return fields helps somewhat, though it is not parameter-related.
Input schemas describe structure but not intent. Descriptions should explain 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 function: 'Get information about the current store (id, slug, b2c_url).' The verb 'Get' plus the resource 'store' and the specific fields returned make the purpose unambiguous. Although there are no directly competing store tools in the sibling list, it effectively distinguishes itself from other getters by its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'current store', which is clear context for when to call it. There are no alternative store-related tools in the sibling list, so no explicit exclusions are needed. It does not explicitly say 'use this when you need store identity', but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_feedsGet store feedsARead-only
Get permanent links to the store's catalog feeds: ICML (RetailCRM), YML (Yandex Direct) and YML_GOODS (Yandex Tovary). A feed URL never changes when the feed content updates — fetch it once and download the feed by that URL on a schedule. Operation: GetStoreFeeds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses a non-obvious behavioral property: feed URLs remain stable across content updates, enabling one-time fetching and scheduled downloads. It does not describe the exact response structure, but for a read-only zero-parameter tool this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core purpose in the first sentence and the useful stability behavior in the second. The trailing 'Operation: GetStoreFeeds' line is mildly redundant with the tool name, but it does not detract much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool, the description is complete: it names the resource, lists the feed formats, and explains the key behavior an agent needs to schedule downloads. No output schema exists, but the return value is sufficiently implied by 'permanent links'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. There is no parameter ambiguity and the description correctly focuses on the output rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a precise resource ('permanent links to the store's catalog feeds'), and enumerates the three feed types (ICML, YML, YML_GOODS). This clearly differentiates it from other get_* sibling tools such as get_store or get_warehouse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: fetch the feed URL once and reuse it on a schedule because the URL never changes. It does not explicitly name alternatives or exclusions, but no sibling feed tool exists, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variantGet variantARead-only
Get a single variant by its ID (name, SKU, pricing, stocks, media, status).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Variant ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds value by specifying the exact data returned (name, SKU, pricing, stocks, media, status), giving the agent a concrete expectation of the response content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, target, and scope without extraneous words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity read tool with one fully described parameter and a readOnlyHint, the description is complete. It states exactly what is fetched and includes the key data fields, making it sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the id parameter as 'Variant ID (UUID)' with 100% coverage. The description only restates 'by its ID' without adding new semantic detail, so it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a single variant by ID, listing the included fields (name, SKU, pricing, stocks, media, status). This distinguishes it from list_variants (list) and create_variant/update_variant (mutations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 fetching one specific variant when its ID is known. It provides clear context but does not explicitly name alternatives or exclusions, such as 'use list_variants to search without an ID.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videoGet videoARead-only
Get a single video by its ID with the current processing status. Use it to poll after upload_video: the status walks UPLOADED -> PROCESSING -> READY (the content field with the player links is filled only in READY) or ends in ERROR (details in error). Poll at most once every 5 seconds — processing time scales with the video length.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | Video ID from the upload_video or list_videos response — an opaque string, not a UUID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals the status lifecycle (UPLOADED -> PROCESSING -> READY/ERROR), explains when the content field is populated, mentions error details, and notes that processing time scales with video length. This is rich behavioral context that helps set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, with the primary purpose front-loaded. Each sentence adds distinct value: the core action, the polling use case, and a rate-limit warning. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description covers the essential response behavior: status transitions, the content field condition, error details, and polling cadence. For a simple get-by-id tool with one parameter and rich annotations, this is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents video_id thoroughly, including its source and opaque nature, with 100% parameter coverage. The description text adds no additional parameter-specific meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a single video by ID and reports its current processing status. It distinguishes itself from list_videos by focusing on a single resource and explicitly links to upload_video for polling, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool after upload_video to poll, describes the status flow, and provides a concrete polling constraint ('at most once every 5 seconds'). This gives clear when-to-use guidance and implies when not to use it (for listing multiple videos, covered by list_videos).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warehouseGet warehouseARead-only
Get a single warehouse by its ID (title, slug, status).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Warehouse ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates this is a safe read operation. The description adds the return fields (title, slug, status), which is useful context. It does not disclose error behaviors (e.g., 404 if not found) or any filters, but the annotation lowers the bar; this meets the minimum viable level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with front-loaded verb and resource. It includes essential context (return fields) without any 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 single-parameter read operation with a readOnly annotation and no output schema, the description is sufficient. It mentions the return fields, which is enough for typical use. It doesn't explain error handling, but that's not critical for a basic getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete coverage of the only parameter ('Warehouse ID (UUID)'), so the description adds no extra semantic value. Baseline of 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a single warehouse by its ID' and lists the specific fields returned (title, slug, status). This distinguishes it from sibling tools like list_warehouses (which retrieves all warehouses) and update_warehouse/create_warehouse (which mutate).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you have a warehouse ID and need a single warehouse's details. It contrasts with list_warehouses by specifying 'a single warehouse'. However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhookGet webhookARead-only
Get a single webhook by its ID (URL, subscribed events, status).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark readOnlyHint=true, and the description adds the specific returned fields (URL, subscribed events, status), which helps the agent understand the response. No contradictory information is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence, front-loaded with the verb and object, no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID operation with one parameter and a read-only annotation, the description sufficiently covers purpose, input, and the key output fields. Since there is no output schema, mentioning the return fields is especially valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'id' parameter as a UUID string, and the description only repeats 'by its ID' without adding format or usage details beyond the schema. Baseline 3 is appropriate given 100% 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 action ('Get'), the resource ('a single webhook'), and the identifying parameter ('by its ID'). It also distinguishes itself from sibling tools like list_webhooks or create_webhook by specifying a single webhook lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you have a webhook ID and need its details. However, it does not explicitly mention alternatives like list_webhooks for multiple webhooks or validate/update/delete for other operations, so guidance is only implicit, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kit_requestExecute any KIT API operationA
Escape hatch that executes ANY of the 166 Yandex KIT API operations by operationId, including operations without a dedicated tool. WARNING: this performs REAL calls against the live store — write operations (create/update/delete/archive) take effect immediately and there is no sandbox. Workflow: search_operations -> get_operation_schema -> kit_request. The request body is validated against the OpenAPI schema before sending (set validate=false to skip).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body; get the exact shape from get_operation_schema("<OperationId>") | |
| query | No | Query-string parameters (e.g. page, per_page for paginated lists) | |
| validate | No | Validate body against the OpenAPI schema before sending (default true) | |
| path_params | No | Values for {placeholders} in the path, e.g. {"id": "123"} | |
| operation_id | Yes | Operation id in PascalCase, e.g. "GetProducts" (find it via search_operations) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does substantial work: it warns that calls are 'REAL calls against the live store,' that write operations 'take effect immediately,' and that 'there is no sandbox.' It also discloses the validation behavior and the ability to skip it with validate=false, which is important risk-relevant 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 compact and front-loaded: purpose first, then the critical warning, then the workflow, then validation details. Every sentence adds essential information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic escape-hatch tool with no output schema and no annotations, the description covers the essential ground: what it does, how to use it safely, how to discover operation details, and how validation works. It could briefly mention that the response shape varies by operation and is documented via get_operation_schema, but the existing guidance is already strong for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of the parameters with descriptions, so the baseline is 3. The description adds some workflow context, telling the agent to get body shape from get_operation_schema and that validation can be disabled, but it mostly reinforces rather than extends the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('executes') and a clear resource ('ANY of the 166 Yandex KIT API operations by operationId'), immediately positioning it as a generic escape hatch. It also distinguishes itself from the many dedicated sibling tools by noting it covers 'operations without a dedicated tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit workflow ('search_operations -> get_operation_schema -> kit_request'), which tells the agent how to discover and construct a call. It identifies when this tool is the right choice ('including operations without a dedicated tool'), though it does not explicitly say to prefer dedicated sibling tools when one exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsList alertsARead-only
List system alerts of the store (paginated), CRITICAL ones first and newest first within the same severity. The API requires a status filter; defaults to ACTIVE when not provided. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by alert status (default: [ACTIVE]). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals safety, and the description adds substantial behavioral context beyond it: CRITICAL-first ordering, newest-first within severity, pagination semantics, and the machine-readable coverage envelope. The explicit instruction that partial coverage must be reflected in the user-facing answer is especially valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each adding necessary information: listing behavior and ordering, API filter default, and response coverage semantics. There is no filler, and the most identifying information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with no output schema, the description covers the essential invocation and interpretation details: pagination, ordering, default filtering, and the coverage envelope with a normative rule for partial results. The parameter schema fills in the remaining input details, so no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters themselves are already fully documented. The description mostly restates or reinforces what the schema already says, such as the ACTIVE default, without adding new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — "List system alerts of the store" — and adds precise behavioral detail: pagination, severity ordering, and newest-first ordering within severity. This makes the tool clearly distinguishable from mutation siblings like resolve_alert and from other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on how the listing behaves: it is paginated, sorted, defaults its status filter to ACTIVE, and can return partial coverage. It does not explicitly name an alternative for changing or resolving alerts, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blogsList news articlesARead-only
List store news articles (paginated). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses two important behaviors: results are paginated, and the response includes a machine-readable coverage envelope with specific fields. It also imposes a clear output obligation when coverage is 'partial', which is high-value context an agent needs to avoid misleading users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a one-sentence purpose statement followed by one sentence on the critical coverage contract. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by specifying the coverage envelope fields and the required handling of partial coverage. It stops short of describing the item shape or defaults like JSON output, but those are either schema-covered or not required to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all five optional parameters. The description adds the pagination context but no extra parameter-level details, which aligns with the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List store news articles,' clarifying that the tool enumerates blog/news items rather than acting on a single one. This separates it from siblings like get_blog, create_blog, and update_blog, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used whenever store news articles need to be listed, but it does not explicitly state when to prefer it over alternatives or mention any exclusions. There is no explicit guidance such as 'for a single article, use get_blog', so usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesARead-only
List product categories of the store (paginated). The API requires a status filter; defaults to ACTIVE when not provided. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by category status (default: [ACTIVE]). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses a critical behavioral trait: the coverage envelope and the mandatory rule that partial coverage must be reflected in user-facing answers. This is exactly the kind of non-obvious behavior an agent needs to avoid misleading users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose is front-loaded, then the status requirement, then the critical coverage caveat. Every sentence adds distinct value and the most important warning is placed at the end where it can be emphasized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with 100% schema coverage and a readOnly annotation, the description is nearly complete: it covers pagination, status default, and the partial-coverage rule. It does not describe the category item fields in the response, but that is not necessary for a simple listing operation and no output schema is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all 6 parameters, so the description does not need to re-explain them. It does add the status-filter requirement and the coverage envelope context, but these are more response/usage details than parameter semantics. The schema carries the parameter burden, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as listing product categories, with pagination explicitly stated. This distinguishes it from sibling tools like get_category (single category) and category_action (mutation), even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it lists categories, is paginated, and requires a status filter with a sensible default. It does not explicitly state when to use this tool over get_category or category_action, but the listing vs singular/mutation distinction is strongly implied by the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_characteristic_colorsList characteristic colorsARead-only
List the color values of the store's characteristics with their hex codes (paginated). Colors are keyed by the characteristic value itself (e.g. «Красный»), not by an ID. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. | |
| search_text | No | Partial search by color value (e.g. «крас»). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool readOnlyHint=true, and the description adds valuable behavioral detail beyond that: pagination, keying by characteristic value rather than ID, the coverage envelope fields, and a mandatory user-facing handling rule for partial coverage. This is strong, non-obvious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The core purpose is front-loaded, followed by keying semantics and the critical coverage-handling rule. Every sentence contributes essential operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only paginated listing tool with no output schema, the description covers the important response semantics: item identity, color values, hex codes, pagination, and the coverage envelope. Combined with the fully documented input schema, an agent has enough to call the tool and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all six parameters. The description adds context about pagination and the coverage envelope but does not need to restate parameter semantics; the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List'), the resource ('color values of the store's characteristics'), and key output detail ('hex codes'). It does not explicitly differentiate from the sibling list_characteristics, though the color-specific focus and keying note make the scope reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of alternatives such as list_characteristics. The usage context is implied by the tool's name and resource, but there are no explicit conditions, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_characteristic_groupsList characteristic groupsARead-only
List product characteristic groups (paginated). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses a critical non-obvious behavior: the response's coverage envelope can be 'partial', and the agent MUST reflect this in user-facing answers and cannot claim the listing is complete. This is valuable transparency that prevents a misleading response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose first, then the critical coverage caveat. Every sentence earns its place, and the most important operational constraint is stated explicitly without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only paginated list tool with no output schema and readOnlyHint annotation, the description covers the only non-obvious contract an agent must honor: handling partial coverage. Parameter details are fully in the schema, and sibling differentiation is clear enough from the resource name. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds high-level pagination context but does not explain individual parameters like all, page, per_page, fields, or format. Baseline 3 is appropriate since the schema carries the parameter semantics burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('product characteristic groups'), and adds the key scope qualifier 'paginated'. This clearly differentiates it from sibling tools like list_characteristics (different resource) and get_characteristic_group (single item).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for retrieving a paginated list of characteristic groups, but it never explicitly names alternatives or states when not to use it. There are no exclusions or prerequisites, only implied usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_characteristicsList characteristicsARead-only
List product characteristics (paginated). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint, it discloses pagination, the machine-readable coverage envelope fields, and the mandatory user-facing handling of partial coverage; this is non-obvious behavior an agent would otherwise miss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first names the operation, the second gives the most important response constraint; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the prose covers the coverage envelope well, but it never names the field that actually holds the characteristic items, leaving response extraction slightly under-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?
The input schema already documents all five parameters at 100% coverage; the prose adds no parameter-level semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource ('List product characteristics') and immediately flags pagination; it is clearly distinct from get_characteristic and the characteristic group/color listers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 list-vs-get naming and 'paginated' qualifier imply bulk listing, but the prose does not explicitly direct the agent away from get_characteristic or state when the list variant is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList collectionsARead-only
List collections of the store (paginated). A collection is a curated set of product cards: STATIC (filled manually via manage_collection_cards) or DYNAMIC (filled by filters). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| type | No | Filter by collection type. | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by collection status (default: both ACTIVE and INACTIVE). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses important behavior: the response includes a coverage envelope, and coverage:"partial" MUST be reflected in user-facing answers, forbidding claims of completeness. This is a critical behavioral constraint an agent would not know from annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core purpose, adds a concise definition of collections, and ends with an essential operational warning about partial coverage. 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?
With no output schema, the description helpfully explains the coverage envelope and the partial-coverage rule. It could go slightly further by indicating what fields collection items contain or explicitly directing to get_collection for a single collection, but the current level is sufficient for a filtered-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 baseline is 3. The description does not add parameter-level meaning beyond the schema, though it does set the general pagination context that relates to page, per_page, and all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List collections of the store (paginated).' It goes beyond the name by explaining what a collection is and distinguishing STATIC vs DYNAMIC collections, making it clearly distinct from sibling tools like get_collection, create_collection, and manage_collection_cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the listing scope clear and provides context about pagination and coverage, but it does not explicitly name alternatives such as get_collection for retrieving a single collection. The usage is implied rather than explicitly contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersList customersARead-only
List customers of the store (paginated). The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses important response behavior: the coverage envelope fields and the strict requirement that coverage:'partial' must be reflected in user-facing answers and forbids claiming completeness. This is exactly the kind of non-obvious behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core function is stated first, then the critical coverage semantic is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with fully documented parameters and a readOnlyHint annotation, the description covers the essential behavioral contract. The coverage envelope warning is the key missing piece from schema/annotations and it is included. No output schema exists, but the description provides enough return-shape context to guide correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already well documented in the schema. The tool description adds no new parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb and resource ('List customers of the store') and adds the pagination qualifier, clearly distinguishing this from single-customer tools like get_customer and from other list_* siblings. It directly states what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this is a paginated listing operation and the coverage-envelope note tells the agent how to handle partial results. It does not explicitly name alternatives or exclusion conditions, but the context is clear enough for selecting this tool over get_customer or other list_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discountsList discountsARead-only
List discounts of the store filtered by status (paginated). The status filter is required by the API. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | Yes | Discount statuses to include (required). At least one of ACTIVE, INACTIVE, ARCHIVED. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring the safety profile, the description adds a meaningful non-obvious behavior: the response includes a machine-readable coverage envelope, and coverage:'partial' must be reflected in the user-facing answer and forbids claiming completeness. This is valuable caveat-based transparency beyond the annotation and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: first sentence states purpose, second states the critical requirement, third explains the coverage caveat. The most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description compensates by documenting the key return-value nuance: the coverage envelope and the obligation to expose partial coverage. Parameter semantics are fully covered by the schema. A minor gap is that no item-level return shape is described, but the coverage behavior is the more important missing piece and is handled well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters already carry definitions. The description only reinforces that status is required without adding syntax, defaults, or enum semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('discounts'), and scope ('of the store'), with two key modifiers: filtered by status and paginated. This clearly marks it as the plural listing endpoint and distinguishes it from get_discount, create_discount, and other discount actions without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful invocation context: it is a status-filtered listing, the status parameter is required, and pagination is available. However, it does not explicitly name alternatives such as get_discount for retrieving a single discount, nor does it state when this tool should not be used in favor of a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList filesARead-only
List the store's uploaded files with their URLs (paginated). Covers images (IMAGE) and other files (OTHER) only — videos live in a separate scenario, use get_video/list_videos. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint annotation, especially the coverage envelope semantics and the mandatory requirement to reflect coverage:'partial' in user-facing answers. It also warns against claiming a complete listing when coverage is partial. This is valuable operational guidance that annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured. The first sentence establishes core purpose, the second defines scope and alternative tools, and the third conveys critical response semantics. Every sentence earns its place with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description compensates by explaining the coverage envelope and URL output. It clearly handles scope exclusions and pagination context. Minor gaps remain, such as default sorting or exact response item fields, but the essential operational details are covered.
Complex tools with many parameters or behaviors need more documentation. Simple 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 already fully documents all parameters. The description adds context about pagination and the coverage envelope but does not describe individual parameter semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), a clear resource ('the store's uploaded files'), and an explicit output aspect ('with their URLs'). It differentiates itself from video-related tools by naming get_video/list_videos as the alternative, making the tool's scope immediately distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool covers only IMAGE and OTHER files and that videos live in a separate scenario, directing the agent to use get_video/list_videos instead. The pagination options are also clarified by mentioning pagination and auto-pagination context, leaving little ambiguity about when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gift_cardsList gift cardsARead-only
List gift cards of the store (paginated), with optional status and purchase-date filters. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. | |
| status | No | Filter by gift card status. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. | |
| purchased_date_to | No | Filter by purchase date: end of the range, inclusive (ISO 8601). | |
| purchased_date_from | No | Filter by purchase date: start of the range, inclusive (ISO 8601). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses a critical operational behavior: the response carries a coverage envelope and 'coverage:"partial"' MUST be reflected in the user-facing answer, forbidding claims of completeness. This is substantive behavioral context not available from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads the core purpose, the second adds the essential coverage-envelope caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0 required parameters, full schema coverage, and a readOnlyHint annotation, the description covers the tool's distinctive behavior (coverage envelope) and core usage. The lack of an output schema is partially mitigated by describing the envelope, though item-level fields are left to the fields parameter/schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (all, page, per_page, status, dates, format, redact, fields) is already documented in the input schema. The description only summarizes pagination and filters without adding parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List'), a specific resource ('gift cards of the store'), and key scoping details ('paginated', optional status and purchase-date filters). This clearly distinguishes it from singular tools like get_gift_card and from other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: listing gift cards with pagination and optional filters. It does not explicitly name alternatives or state when not to use it, but the purpose is specific enough to guide selection among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersList ordersARead-only
List orders of the store (paginated), newest first. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| redact | No | Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with "[redacted]". Applies to the response only; request bodies are never redacted. Default false. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, and the description adds valuable behavioral context: the coverage envelope (coverage, received, total_count, pages_read) and the mandatory rule that partial coverage must be reflected in user-facing answers. It also discloses the newest-first ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no filler. It front-loads the core purpose and then adds the critical partial-coverage constraint, which is exactly the behavioral detail an agent must not miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description appropriately explains the response coverage envelope and warns about partial results. Combined with the detailed parameter schema, the agent has enough information to call the tool correctly; only minor details like default pagination size are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a detailed description in the schema. The tool description does not add extra parameter-level meaning, but it does not need to because the schema is thorough.
Input schemas describe structure but not intent. Descriptions should explain 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 uses a specific verb and resource: 'List orders of the store' with clear scope ('of the store'), plus ordering ('newest first') and pagination. This distinguishes it from single-order tools like get_order and customer-scoped tools like get_customer_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 clearly implies this is the paginated listing endpoint for store orders, but it does not explicitly state when to prefer it over alternatives such as get_order or get_customer_orders. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList productsARead-only
List product records (paginated); for export requests, use this for explicit raw product-group or catalog-structure dumps. Ordinary catalog exports use list_variants: a product carries grouping and category data, not a sellable name, SKU, price or stock. format:"csv" defaults to top-level scalar fields (currently id and group_id) and does not flatten variant data. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch pages via auto-pagination, up to 500 items; inspect coverage and continue with explicit page reads if coverage is partial; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint annotation by disclosing the coverage envelope (coverage, received, total_count, pages_read), the mandatory rule that coverage:'partial' must be reflected in the user-facing answer and forbids claiming completeness, and the CSV behavior of defaulting to top-level scalar fields only (id and group_id) without flattening variant data. These are non-obvious behavioral constraints that materially affect agent output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with zero filler; the core purpose and routing guidance are front-loaded in the first two sentences, and the remaining two add only high-value behavioral details. Each sentence earns its place and the key disambiguation from list_variants is placed early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 present, the description compensates by documenting the response envelope fields and the partial-coverage contract, and it names the concrete CSV default fields (id and group_id). It stops short of fully describing the JSON item shape or pagination semantics, but for a straightforward list tool whose parameters are fully documented in the schema, the coverage is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description adds genuine value on top by specifying that format:'csv' defaults to id and group_id specifically, does not flatten variant data, and by tying the coverage envelope to pagination behavior. The schema already covers the mechanics of each parameter, so the description's contribution is additive but modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb plus resource ('List product records (paginated)') and then differentiates from the sibling list_variants by articulating the data-model difference: a product carries grouping and category data, not a sellable name, SKU, price or stock. This makes the tool's scope unambiguous and separates it from its closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('explicit raw product-group or catalog-structure dumps') and names the alternative for the other case ('Ordinary catalog exports use list_variants'). No inference is required — the selection condition and the rejected alternative are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_promocodesList promocodesARead-only
List promocodes of the store filtered by status (paginated). The status filter is required by the API. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | Yes | Promocode status to include (required). | |
| per_page | No | Items per page, 1-25 (default 25). The live API rejects values above 25 for this endpoint even though the published spec allows 100; values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read, and the description adds meaningful behavior beyond that: the status filter is required by the API, the response includes a coverage envelope, and 'coverage:"partial"' must be surfaced to the user and forbids claiming completeness. This is valuable operational disclosure not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary operation is front-loaded, and the critical coverage-envelope constraint is stated concisely in the second sentence. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, read-only list operation with no output schema, the description covers the essential selection criteria, the required filter, pagination behavior, and the important response-coverage semantics. Parameters like per_page clamping and CSV specifics are already fully documented in the schema, so the description is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents every parameter including status, pagination, CSV format, and field selection. The description adds context about the required status and pagination/coverage behavior, but it does not materially extend parameter-level semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List promocodes of the store', and adds the specific scoping dimension 'filtered by status (paginated)'. This distinguishes it from related siblings like get_promocode and other list_* tools without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the main use case clear: list promocodes by required status with pagination. However, it does not explicitly mention alternatives or when not to use this tool, such as using get_promocode for a single promocode. Usage is implied rather than explicitly contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variantsList variantsARead-only
Primary sellable catalog/export listing: list variants (SKUs), one item per sellable SKU. Use this for ordinary catalog or «выгрузи товары в CSV» requests; use list_products only for an explicit raw product-group export. Variants support optional filters and pagination. By default the API returns variants of all statuses except ARCHIVED. format:"csv" defaults to top-level scalar fields and serializes nested pricing/stocks as JSON cells; it does not create flat price or per-warehouse stock columns. Known KIT API defect: ARCHIVED is silently stripped from the status filter, so archived variants cannot be listed (only read by ID via get_variant); the tool detects this and fails with STATUS_FILTER_IGNORED, ARCHIVE_READ_UNSUPPORTED or MIXED_ARCHIVED_FILTER_UNSUPPORTED (for filters mixing ARCHIVED with other statuses) instead of returning the wrong catalog slice. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch pages via auto-pagination, up to 500 items; inspect coverage and continue with explicit page reads if coverage is partial; ignores page/per_page. | |
| name | No | Case-insensitive partial search by name, SKU, barcode or KIT ID. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by variant status. | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. | |
| product_id | No | Filter by parent product ID (UUID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses critical behaviors: default status filtering, CSV serialization details, the known KIT API defect around ARCHIVED, the specific error codes the tool raises, and the coverage envelope semantics. This is far more than annotations provide and prevents the agent from misinterpreting partial or failed results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries operational value: scope, sibling differentiation, CSV behavior, defect handling, and coverage requirements. It is front-loaded with the core purpose and then proceeds logically through caveats, so the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex list/export operation with 8 optional parameters, no output schema, and a known API defect, the description covers all essential context: selection criteria, defaults, failure modes, and how to treat partial coverage. An agent has enough information to invoke the tool correctly and interpret its results without additional lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 8 parameters at 100% coverage, giving a baseline of 3. The description adds meaningful semantics beyond the schema: the 'all' parameter's auto-pagination cap and coverage continuation behavior, CSV format specifics (RFC 4180, leading '# coverage:' comment line), and the default exclusion of ARCHIVED variants. It doesn't quite reach a 5 because some parameter details (like clamping of per_page) are only in the schema and not elaborated in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'list variants (SKUs), one item per sellable SKU,' and explicitly contrasts itself with list_products, which is for 'explicit raw product-group export.' This makes the tool's purpose unambiguous and clearly distinguishes it from the closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('ordinary catalog or CSV export requests') and when to use list_products instead ('only for an explicit raw product-group export'). It also hints at the archived-variant limitation and points to get_variant for reading archived variants by ID, giving the agent actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_videosList videosARead-only
List product videos of the store (paginated), oldest upload first. The API requires a status filter; defaults to all four statuses when not provided. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by processing status (default: all of UPLOADED, PROCESSING, READY, ERROR). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint=true, the description adds meaningful behavioral detail: pagination order, the status-filter requirement/defaults, and the critical coverage-envelope semantics. The explicit warning that coverage:'partial' must be reflected and forbids claiming completeness is valuable beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose and ordering first, then status-filter behavior, then the coverage-envelope requirement. The most important operational nuance is front-loaded and clearly stated without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated read-only list tool, the description is complete: it specifies scope, ordering, pagination, status defaults, and the critical coverage-handling rule. The input schema fully covers parameters, and no output schema exists, but the description provides the key response-related behavior an agent needs for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter schema already documents all six parameters in detail. The description adds some useful context around the status filter and coverage semantics, but it does not substantially extend parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List product videos of the store (paginated), oldest upload first.' It clearly distinguishes itself from sibling tools like get_video (single video) and upload_video (write operation) by communicating that this is a paginated listing read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on how the listing behaves: pagination order, status filtering, and auto-pagination behavior via 'all' are implied through the schema. It does not explicitly name alternatives like get_video for single-video retrieval, so it stops short of full when-to-use vs 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_warehousesList warehousesARead-only
List warehouses of the store (paginated). The API requires a status filter; defaults to ACTIVE when not provided. The response carries a machine-readable coverage envelope (coverage, received, total_count, pages_read); coverage:"partial" MUST be reflected in the user-facing answer and forbids claiming the listing is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page. | |
| page | No | Page number, starting at 1 (default 1). | |
| fields | No | CSV columns; only valid together with format:"csv". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item. | |
| format | No | Output format: "csv" renders the items as RFC 4180 CSV (a leading "# coverage:" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON. | |
| status | No | Filter by warehouse status (default: [ACTIVE]). | |
| per_page | No | Items per page, 1-100 (default 25). Values outside the range are clamped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds important behavior beyond the readOnlyHint annotation: pagination behavior, default status filtering, and the critical requirement that a 'partial' coverage response must be reflected to the user and forbids claiming completeness. This is exactly the kind of non-obvious behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler. The core purpose is front-loaded, and the high-value caveat about the coverage envelope is included without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description usefully explains the response envelope and the partial-coverage obligation. It does not detail every return field, but for a paginated read-only listing operation with well-documented parameters and a readOnlyHint annotation, it is substantially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mostly repeats what the schema already says about the status default and does not add new parameter-level semantics beyond clarifying that a status filter is expected behaviorally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List warehouses of the store (paginated)'. It clearly indicates a collection-returning operation and distinguishes implicitly from siblings like get_warehouse, but does not explicitly name any sibling or contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use clear: listing store warehouses with pagination. It also gives usage-relevant behavior such as the status filter defaulting to ACTIVE. However, it does not explicitly state when to prefer this tool over 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_webhooksList webhooksARead-only
List all webhooks of the store (not paginated). Each webhook has a URL, a list of subscribed event types and a status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this a safe read operation. The description adds valuable behavioral context by stating that results are not paginated (implying potentially large responses) and by describing the shape of each webhook (URL, event types, status). No contradictions with annotations, though it does not address auth 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?
The description is concise: one sentence stating the action and scope, plus one sentence detailing the returned fields. Every word earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with no parameters and no output schema, the description is sufficient: it explains what is listed, the lack of pagination, and the data included in each entry. This gives an agent everything needed to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is trivially complete. Per the rubric, the baseline is 4; the description further clarifies what the returned records contain, but this is output semantics rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource ('all webhooks of the store') and adds scope ('not paginated'), effectively distinguishing it from siblings like get_webhook (single webhook) or create/update/delete/validate. It also summarizes the content of each webhook, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates that this tool returns the full set of webhooks with no pagination, making it evident when to use it for a complete listing. However, it does not explicitly mention alternatives (e.g., get_webhook for a single webhook) or state when not to use it, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_collection_cardsAdd or remove collection cardsA
Add product cards to a STATIC collection or remove them from it. Requires product_card_ids (array of product card UUIDs).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID (UUID). | |
| cards | Yes | Request body with product_card_ids, e.g. {"product_card_ids": ["<uuid>", ...]}. See get_operation_schema("AddCardsToCollection"). | |
| action | Yes | Whether to add or remove the cards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It notes the static-collection constraint and the need for product_card_ids, but omits critical details: error handling (e.g., duplicates), idempotency, partial failures, permissions, or return behavior. This is insufficient for a mutation tool without 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 a single, front-loaded sentence that states the core purpose and a key requirement. No filler or redundant information. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters including a nested object, no output schema, and no annotations. The description covers the basic purpose and a key requirement, but misses operational context: return format, error conditions, and idempotency. It is adequate for triggering an invocation but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a slight clarification by expressing 'product_card_ids' as 'array of product card UUIDs', but largely repeats what the schema's example already conveys. It doesn't explain nested structure or enums 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 states the exact action: 'Add product cards to a STATIC collection or remove them from it.' It specifies the resource (collection cards) and clearly differentiates from siblings like update_collection, which handle collection metadata. The mention of 'STATIC' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it obvious when to use: whenever you need to add or remove cards from a static collection. It also implies a prerequisite by stating 'Requires product_card_ids'. It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_discount_objectsAdd or remove discount objectsA
Attach objects to a discount or detach them. Supported object types: product_variant_ids (variant UUIDs), category_ids (category UUIDs), collection_ids (collection UUIDs). Per request pass EITHER product_variant_ids OR categories/collections — the API does not mix variants with categories/collections.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Discount ID (UUID). | |
| action | Yes | Whether to attach or detach the objects. | |
| objects | Yes | DiscountObjects record: arrays product_variant_ids, category_ids and/or collection_ids (see get_operation_schema("AddDiscountObjects")). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full behavioral disclosure burden. It adds a useful non-obvious constraint (the either/or mixing rule) but does not disclose permissions, error behavior, or side effects like replacement vs. incremental addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then the supported types, then the constraint. Every sentence earns its place with no redundant or vague language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core usage but lacks any indication of permissions, response format, or error conditions. It is adequate but not 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?
Schema coverage is 100%, but the description adds meaningful detail by specifying the three array keys (product_variant_ids, category_ids, collection_ids) and their UUID types, and clarifies the exclusive constraint. This goes beyond the schema's generic reference to get_operation_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 attaches or detaches objects to/from a discount, listing supported object types. It is specific and distinct from the promocode equivalent, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for the operation and explicitly states that product_variant_ids must not be mixed with categories/collections in the same request. However, it does not mention when to choose this tool over sibling tools like manage_promocode_objects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_promocode_objectsAdd or remove promocode objectsA
Attach objects to a promocode or detach them. Supported object types: product_variant_ids (variant UUIDs), category_ids (category UUIDs), collection_ids (collection UUIDs). Per request pass EITHER product_variant_ids OR categories/collections — the API does not mix variants with categories/collections.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Promocode ID (UUID). | |
| action | Yes | Whether to attach or detach the objects. | |
| objects | Yes | PromocodeObjects record: arrays product_variant_ids, category_ids and/or collection_ids (see get_operation_schema("AddPromocodeObjects")). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the attach/detach action and the exclusivity rule, but does not disclose potential side effects, whether the operation is additive or replaces existing objects, permission requirements, or error behavior. This is adequate but leaves notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient: two sentences that front-load the action, then enumerate supported object types and the key constraint. Every sentence contributes useful information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with nested objects and no output schema, the description covers the essential usage context: what action to perform, which object types are supported, and a critical API constraint. It does not explain the response format or provide an example, but the description is sufficient for an agent to invoke the tool correctly in most 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?
The input schema already describes each parameter with 100% coverage, giving a baseline of 3. The description adds meaningful context beyond the schema by clarifying that variant/category/collection IDs are UUIDs and emphasizing the non-mixing rule, which is not evident from the schema alone. This adds real 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's purpose with a specific verb ('Attach...or detach') and resource ('objects to a promocode'). It distinguishes itself from sibling tools by naming the specific object types (product_variant_ids, category_ids, collection_ids) and highlighting that it applies to promocodes, not discounts or collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, including the critical rule about passing either product_variant_ids or categories/collections, and the exclusivity constraint. However, it does not explicitly mention alternatives (e.g., manage_discount_objects) or state when not to use it, so it lacks explicit when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_alertResolve alertA
Mark an alert as resolved. Only WARNING alerts can be closed by hand: an active CRITICAL alert is rejected with 400 and clears itself once the underlying problem is fixed. No request body is required.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | Alert ID from the list_alerts response — a semantic string such as "certificateExpiry", not a UUID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the mutating action, the 400 rejection for CRITICAL alerts, and the self-clearing behavior once the underlying problem is fixed. This is significant contextual information beyond what the schema provides, though it doesn't describe success responses or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the core purpose, the second adds crucial constraints and error behavior. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter action tool with no output schema, the description covers the essential aspects: purpose, usage constraints, error condition, and body requirements. It doesn't specify the success return value, but this is a minor omission given the tool's simplicity and the detailed schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already thoroughly describes alert_id, including its source (list_alerts response) and semantic string nature. Schema coverage is 100%, so baseline 3 applies. The description adds no parameter-specific details beyond noting the absence of a request body, which is request-level rather than parameter-level info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Mark an alert as resolved,' a specific verb+resource that clearly defines the tool's function. It distinguishes from siblings like list_alerts by focusing on the resolution action, making the purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: only WARNING alerts can be closed by hand, and active CRITICAL alerts are rejected with 400. This provides clear usage context and a when-not condition, plus the note that no request body is required simplifies invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_operationsSearch KIT API operationsARead-only
Search the full catalog of all 166 Yandex KIT API operations by keyword. Matches operationId, URL path, tag and Russian summary/description (the API docs are in Russian, so Russian keywords like "категории" work too). Any operation found here can be executed with kit_request; use get_operation_schema to inspect its parameters and body shape first.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional tag filter, e.g. "Товары" or "Вебхуки" (case-insensitive substring) | |
| limit | No | Maximum number of results to return (1-50, default 10) | |
| query | Yes | Search keywords (whitespace-separated, case-insensitive; every token must match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, and the description adds meaningful behavioral details: it searches the full catalog, matches operationId/path/tag/Russian descriptions, and notes that Russian keywords work. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with no filler. The main purpose is front-loaded, and each sentence adds either search behavior or workflow context that 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 schema and readOnly annotation cover the invocation details, and the description gives enough context about matching behavior and follow-up tools. The only minor gap is that the return shape is not described, but the absence of an output schema is partially mitigated by the clear search semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents query, tag, and limit with 100% coverage. The description adds extra value by explaining that Russian-language keywords are effective because the API docs are in Russian, which informs query construction beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: search the full catalog of all 166 Yandex KIT API operations. It clearly distinguishes itself from sibling tools like kit_request and get_operation_schema by focusing on discovery rather than execution or schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the intended workflow: search operations here, inspect parameters with get_operation_schema, then execute with kit_request. This provides clear when-to-use guidance and names the relevant alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_order_marking_codesSet order marking codesA
Write «Честный знак» (Chestny ZNAK) marking codes onto order items, or remove them. Each order item is a single unit and takes exactly one code; item IDs come from get_order under delivery_chunks[].items[].id. Pass the code in full, including the crypto tail; pass marking_code null to remove a previously written code. Atomic: if any code fails the server-side check the whole request is rejected and nothing is written.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Order ID (UUID). | |
| items | Yes | Order items with their marking codes, 1-100 items, one entry per item. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It explicitly discloses atomicity, the rejection of the whole request if any code fails, the null-to-remove behavior, and the requirement to include the crypto tail. This is unusually transparent for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler. The core action is front-loaded, and each subsequent sentence adds a critical constraint: item sourcing, null-for-removal, and atomicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives what an agent needs to call the tool correctly: resource, ID source, parameter semantics, null behavior, and atomicity. It omits only coarse details like authorization expectations and response format, but no output schema exists, and those gaps are minor for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the parameters at 100% coverage, including null semantics and the source of item IDs. The description adds useful reinforcement: each item must take exactly one code and failures invalidate everything. This exceeds the baseline without duplicating everything verbatim.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: writing or removing Chestny ZNAK marking codes on order items. It clearly distinguishes itself from the many order status and product-management siblings because it is the only tool about marking codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operational guidance: item IDs come from get_order under delivery_chunks[].items[].id, null removes an existing code, and one code per order item. It does not explicitly name a when-not-to-use sibling, but no sibling serves this exact function, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_blogUpdate news articleB
Update a store news article. Call get_operation_schema("UpdateBlog") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | News article ID (UUID). | |
| blog | Yes | Fields matching the UpdateBlog request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only says 'Update,' which implies mutation, but does not state whether this is a partial update or full replacement, whether it requires special permissions, what side effects occur, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: one sentence states the operation and one sentence provides the critical next step for constructing the operation. There is no filler, repetition of schema content, or unnecessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides just enough for an agent to begin: it identifies the candidate tool and tells it where to find the exact request shape. However, there are no annotations, no output schema, no return-value semantics, and no behavioral caveats, so several aspects of a correct call are left undisclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents id and blog, and the blog object is deliberately opaque. The description meaningfully adds that the agent must call get_operation_schema("UpdateBlog") to resolve the exact request shape; this is an actionable pointer not present in the input schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb+resource pattern: 'Update a store news article.' This clearly marks it as the mutation counterpart to get_blog and create_blog, though it does not add any scope details beyond what the title already suggests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance or comparisons to siblings such as create_blog or get_blog. The directive to 'Call get_operation_schema("UpdateBlog")' is useful for obtaining the request shape but does not explain when this tool should be chosen over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryUpdate categoryA
Update an existing category via JSON Merge Patch: send only the fields to change. Only parent_id and file_id accept null (parent_id: null makes the category top-level, file_id: null removes the image); null on any other field is rejected by validation. Call get_operation_schema("UpdateCategory") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Category ID (UUID). | |
| category | Yes | Merge-patch record matching the UpdateCategoryRequest schema (see get_operation_schema("UpdateCategory")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It explains the merge-patch semantics, details null handling for parent_id and file_id, and warns that null on other fields is rejected. This goes well beyond typical descriptions and prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core action, then gives necessary constraints, and ends with a useful pointer to formal schema. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (JSON Merge Patch, specific null constraints), the description covers the key behavioral aspects and provides a clear reference for exact shape. It doesn't mention return values or side effects, but for an update operation this is a minor gap, and the lack of an output schema makes the omission less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters, so baseline is 3. The description adds value by clarifying the nested 'category' object's acceptable null behavior and pointing to get_operation_schema for the exact request shape, which compensates for the schema's abstract mention of UpdateCategoryRequest.
Input schemas describe structure but not intent. Descriptions should explain 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 exactly what the tool does: 'Update an existing category via JSON Merge Patch'. The verb 'Update' and resource 'category' are explicit, and the merge-patch detail distinguishes it from create or get operations, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool (updating an existing category, partial updates via merge patch) and provides concrete operational guidance such as which fields accept null. However, it does not explicitly name alternatives like 'create_category' for new categories, so it lacks an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_characteristicUpdate characteristicB
Update a product characteristic. Call get_operation_schema("UpdateCharacteristic") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Characteristic ID (UUID). | |
| characteristic | Yes | Fields matching the UpdateCharacteristic request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Update' and defers to get_operation_schema; it does not disclose permissions, side effects, idempotency, partial-update behavior, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the operation is stated first, and the schema-fetching advice is placed second. Every sentence earns its place, and the pointer to an external operation schema keeps the description compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter update tool with an opaque nested object, the description supplies the core purpose and a precise path to the exact request shape. Still, it omits when to choose this tool over related characteristic tools, expected output, and any behavioral or permission context, making it minimally viable but not richly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents id and characteristic with 100% coverage, so the baseline is 3. The description adds value by directing the agent to get_operation_schema('UpdateCharacteristic') for the exact nested characteristic shape, which is useful because the characteristic object uses additionalProperties: {} and lacks concrete property definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'Update a product characteristic.' This is specific enough to distinguish it from characteristic-group and characteristic-color tools, though it does not explicitly name alternatives. Overall the purpose is clear and not tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit directive: 'Call get_operation_schema("UpdateCharacteristic") for the exact request shape,' which guides the agent on a necessary step before invocation. However, it does not explain when to use this tool versus create_characteristic, list_characteristics, or other update variants, so usage context is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_characteristic_colorUpdate characteristic colorA
Set the hex code of a color characteristic value. The value must already exist among the store's characteristic values (see list_characteristic_colors) — this endpoint recolors an existing value, it does not create one. Both fields are required.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Characteristic value to recolor, exactly as it is stored (e.g. «Красный»). | |
| color_hex | Yes | Color as a hex code (e.g. "#FF0000") or one of the special values "multicoloured" / "transparent". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses that the operation recolors an existing value rather than creating a new one, which is a key behavioral trait. This provides meaningful context beyond the basic action and addresses the primary behavioral nuance for this operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the action and clarifies the non-creational nature; the second states required fields. No fluff, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter update operation, the description covers the purpose, prerequisite, and parameter requirements. Since no output schema is present, the lack of return-value information is acceptable, but it could mention response behavior for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds the constraint that the value must already exist, which is not in the schema, and confirms both fields are required. The schema already provides detailed descriptions with examples and special color values, so the description complements rather than repeats, earning a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the hex code of a color characteristic value, using the specific verb 'Set' and resource 'color characteristic value'. It explicitly distinguishes from creation by noting it recolors an existing value, which differentiates it from potentially related tools like list_characteristic_colors or create 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 instructs that the value must already exist and references list_characteristic_colors as a way to find such values. It also states this endpoint does not create a value, providing an explicit exclusion for when not to use it. It further notes both fields are required, covering prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_characteristic_groupUpdate characteristic groupB
Update a product characteristic group. Call get_operation_schema("UpdateCharacteristicGroup") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Characteristic group ID (UUID). | |
| group | Yes | Fields matching the UpdateCharacteristicGroup request schema. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility for behavioral disclosure. It states that the tool updates a group, but it does not mention mutation effects, partial vs. full updates, permission requirements, idempotency, or what the response will contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the operation in the first sentence and directs the agent to the authoritative request shape in the second. There is no filler or repeated schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for starting invocation because it names the operation and defers to get_operation_schema for exact request shape. However, it omits broader context: when to use this instead of other group operations, what happens after an update, and any behavioral caveats. It is a workable but not fully complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters with descriptions. The description adds meaningful guidance by telling the agent to call get_operation_schema('UpdateCharacteristicGroup') for the exact request shape, which is essential for the loosely specified 'group' object. It stops short of fully defining the nested fields itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Update a product characteristic group.' The qualifier 'product' helps distinguish it from the similarly named update_characteristic and create_characteristic_group siblings. It does not explicitly name sibling alternatives, but the operation is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus creating, retrieving, or listing characteristic groups. The only guidance is to call get_operation_schema for the exact request shape, which helps with request construction but not with tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collectionUpdate collectionA
Update an existing collection (plain JSON PATCH; only the provided fields are changed). The collection type itself cannot be changed. Call get_operation_schema("UpdateCollection") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID (UUID). | |
| collection | Yes | Fields to update, matching the UpdateCollectionRequest schema (see get_operation_schema("UpdateCollection")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the PATCH behavior (only provided fields changed) and the immutability of collection type, but omits details about permissions, error cases, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three short sentences), front-loads the primary purpose, and each sentence adds distinct value (operation, constraint, and schema reference). No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter update tool with no annotations and no output schema, the description covers the core operation, constraints, and points to get_operation_schema for the exact shape. It doesn't discuss error handling or permissions, but given the simplicity, it's largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, providing a baseline of 3. The description adds meaningful semantics by clarifying that the `collection` parameter is a partial update (only provided fields change) and that the type cannot be changed, which goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing collection, specifies the PATCH semantics, and notes that only provided fields are changed and the collection type is immutable. This distinguishes it from create/delete/get collection 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 provides clear context for when to use the tool (updating existing collections) and notes an exclusion (cannot change collection type). It also directs users to get_operation_schema for the exact request shape, though it does not explicitly name alternative tools for create/delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerUpdate customerA
Update a customer (plain JSON PATCH). Updatable fields: note, first_name, last_name, email. Call get_operation_schema("UpdateCustomer") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID (UUID). | |
| customer | Yes | Fields to update, matching the UpdateCustomerRequest schema (see get_operation_schema("UpdateCustomer")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the partial-update behavior via 'plain JSON PATCH' and lists updatable fields, which is useful. However, it does not mention response format, error cases, authorization requirements, or whether omitted fields are retained or reset—common expectations for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the action and scope, the second lists fields and provides a pointer for exact shape. No filler, no repetition of schema or annotations, and information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 params, nested object, no output schema), the description covers purpose, updatable fields, and a route to the exact schema. It does not describe the return value or side effects, but the explicit pointer to get_operation_schema fills a key gap, making it nearly complete for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers both parameters (100% coverage), the description adds value by explicitly listing allowed updatable fields (note, first_name, last_name, email) and clarifying that the 'customer' object is a PATCH payload. This goes beyond the generic schema description referencing get_operation_schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update a customer') and specifies the HTTP-like semantics ('plain JSON PATCH'), distinguishing it from read-only siblings like get_customer and list_customers. It also enumerates updatable fields, leaving no ambiguity about the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an existing customer needs modification and explicitly directs the caller to get_operation_schema("UpdateCustomer") for the exact request shape, serving as a usage prerequisite. However, it does not explicitly say when NOT to use this tool or contrast with alternatives, though none exist for customer updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_discountUpdate discountA
Update an existing discount (plain application/json PATCH): send only the fields to change (title, discount_value, discount_dates, status, binding_mode). Call get_operation_schema("UpdateDiscount") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Discount ID (UUID). | |
| discount | Yes | Fields to update, matching the UpdateDiscountRequest schema (see get_operation_schema("UpdateDiscount")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the PATCH semantics (partial update) and enumerates updatable fields. However, it does not mention response shape, error cases, or permissions. This is moderate disclosure; it adds value but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and no wasted words. Every sentence earns its place—first states the operation and method, second gives field list and schema pointer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description provides essential operational context (PATCH method, partial update, field list) and a clear pointer to get_operation_schema for exact shape. It omits return value details and error behavior, but for an update tool this is adequate given the pointer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both params have descriptions), so baseline is 3. The description adds meaningful detail beyond the schema by listing the specific subfields (title, discount_value, discount_dates, status, binding_mode) and emphasizing 'send only the fields to change'. This enhances parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain 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 existing discount' with a specific verb and resource, and clarifies the HTTP method (plain application/json PATCH). This distinguishes it from sibling tools like create_discount and get_discount.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it's for partial updates (send only fields to change) and lists the mutable fields (title, discount_value, etc.). It also points to get_operation_schema for exact request shape. It does not explicitly exclude alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_productUpdate productA
Update an existing product (plain JSON PATCH, not merge-patch). Passing category_ids fully replaces the product's category list. Call get_operation_schema("UpdateProduct") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Product ID (UUID). | |
| product | Yes | Fields to update, matching the UpdateProductRequest schema (see get_operation_schema("UpdateProduct")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds important context: it is not merge-patch, and category_ids replacement behavior is a subtle side effect. However, it omits other behavioral aspects such as response format, error conditions, or auth requirements, so it is moderately transparent but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place. Front-loaded with the core purpose, then adds a critical behavioral note, then a pointer to further schema. 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?
The tool has a nested object parameter and no output schema, so the description should help fill gaps. It references get_operation_schema for request shape, which is helpful, but it does not mention what the response contains or potential errors. Given the tool's moderate complexity, the description covers the most critical behavior but leaves some context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters with descriptions, so the baseline is 3. The description adds value by explaining the patch semantics and the category_ids replacement behavior, which go beyond the schema's generic 'Fields to update' note. This helps the agent understand how to construct the product object correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Update an existing product'. It also distinguishes the patch semantics ('plain JSON PATCH, not merge-patch') and highlights a key behavior (category_ids replacement), making it unmistakable from siblings like create_product or list_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?
The description provides clear context on how to use the tool: it explains the patch format and warns that category_ids fully replaces the list. It also directs users to get_operation_schema for exact shape. However, it does not explicitly state when to prefer this over alternatives (e.g., bulk_update_prices) or when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_promocodeUpdate promocodeA
Update an existing promocode (plain application/json PATCH): send only the fields to change (code, title, discount_value, promocode_dates, status, binding_mode, limits). Call get_operation_schema("UpdatePromocode") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Promocode ID (UUID). | |
| promocode | Yes | Fields to update, matching the UpdatePromocodeRequest schema (see get_operation_schema("UpdatePromocode")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the HTTP method (plain application/json PATCH), partial update behavior, and lists the updatable fields. It also directs to get_operation_schema for exact shape. This is useful transparency, but it does not mention error conditions (e.g., promocode not found) or response structure, which would be valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action, then provides method, partial-update detail, field list, and a pointer to the operation schema. Every clause adds value; there is 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?
Despite no output schema, the description covers the essential aspects: what the tool does, the HTTP method, partial update semantics, and the exact field names. It explicitly instructs to call get_operation_schema for the full request shape, which addresses schema complexity. Missing are return value/error behavior, but for an update operation with a pointer to the schema, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions, so baseline is 3. The tool description adds meaning by listing the exact fields that can be updated (code, title, discount_value, promocode_dates, status, binding_mode, limits), which are not enumerated in the schema itself (schema references an external UpdatePromocodeRequest). This incremental detail helps the agent understand parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Update an existing promocode'. It also specifies the method (PATCH) and partial update semantics ('send only the fields to change'), which distinguishes it from create_promocode and get_promocode. This is a specific, actionable purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Update an existing promocode', implying that the promocode must already exist, which is clear context. It also advises calling get_operation_schema for the exact request shape, helps the agent know how to use it. However, it does not explicitly state when not to use it or compare it to alternatives like create_promocode or manage_promocode_objects, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_variantUpdate variantA
Update an existing variant via JSON Merge Patch: send only the fields to change (e.g. pricing or stocks). No field of UpdateVariantRequest is nullable, so null values are rejected by validation before any call — to clear a price, use bulk_update_prices (its price/manual_discount_price accept null). media is an exception to merge-patch granularity: sending it REPLACES the whole list, so resend the existing images alongside anything you add. At most ONE video per variant, and a video is accepted only when the same list carries at least one image — sending a video alone wipes the images and fails. stocks and characteristics replace the whole list too; rebuild them from a fresh get_variant, which IS the complete current state (an empty characteristics list is genuinely empty, nothing hidden). Call get_operation_schema("UpdateVariant") for the exact request shape — but ignore its prose for stocks: upstream the spec pasted the media wording there, while the field still takes VariantStock entries (per-warehouse quantities).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Variant ID (UUID). | |
| variant | Yes | Merge-patch record matching the UpdateVariantRequest schema (see get_operation_schema("UpdateVariant")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden and does so thoroughly: null rejection before any call, the media list being replaced wholesale, the one-video-per-variant rule with its image prerequisite, wholesale replacement of stocks and characteristics, and even an upstream schema documentation bug. These are exactly the kind of non-obvious side effects an agent needs to avoid destructive calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loads the core purpose and then organizes caveats in a logical order. A few later details, particularly the get_operation_schema correction, are slightly verbose but each sentence adds essential safety-relevant information; no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a nested variant object, the description covers the failure-prone aspects comprehensively: validation behavior, list-replacement semantics, video limits, empty-list semantics, and the authoritative schema source. It leaves no obvious gap that would lead an agent to make an incorrect call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only labels 'id' and describes 'variant' as a merge-patch record, but the description adds critical operational semantics: null values are rejected, media/stocks/characteristics replace entire lists, video constraints, and the need to rebuild lists from a fresh get_variant. It also corrects a schema-level prose trap for stocks, giving the agent more than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing variant') and grounds it in a concrete mechanism ('via JSON Merge Patch'), distinguishing it from create_variant, get_variant, and bulk_update_prices. The scope is unambiguous even without the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('send only the fields to change') and names the relevant alternative for a specific case ('to clear a price, use bulk_update_prices'). It also tells the agent to rebuild replacement lists from get_variant, which effectively routes to the correct read-before-write workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_warehouseUpdate warehouseA
Update an existing warehouse via JSON Merge Patch: send only the fields to change; setting a field to null removes it. The slug cannot be changed after creation. Call get_operation_schema("UpdateWarehouse") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Warehouse ID (UUID). | |
| warehouse | Yes | Merge-patch record matching the UpdateWarehouseRequest schema (see get_operation_schema("UpdateWarehouse")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals merge-patch behavior, null field removal, slug immutability, and points to get_operation_schema for the request shape, which are meaningful behavioral traits beyond the schema. It does not mention permissions or response format, but key behaviors are adequately covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with purpose and key semantics. It avoids redundancy and each sentence earns its place, including the pointer to get_operation_schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters with full schema descriptions and a nested object, and the description clarifies merge-patch update behavior and constraints while directing to get_operation_schema for the request shape. It does not explain the response format, but for an update tool with no output schema and good schema coverage, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the schema, with 'warehouse' marked as a merge-patch record. The description adds semantics by explaining how to use the warehouse object: 'send only the fields to change; setting a field to null removes it' and the slug cannot be changed. This goes beyond the schema's baseline 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?
Description clearly states 'Update an existing warehouse via JSON Merge Patch', specifying a distinct verb and resource. This differentiates it from sibling tools like create_warehouse, get_warehouse, and warehouse_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use: updating an existing warehouse with merge-patch semantics, including how to send only changed fields and use null to remove. It does not explicitly name alternatives or exclusions beyond slug immutability, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_webhookUpdate webhookA
Update an existing webhook: change url (HTTPS only), the subscribed events, or set deactivate=true to switch the webhook to INACTIVE. Call get_operation_schema("UpdateWebhook") for the exact request shape.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID (UUID). | |
| webhook | Yes | Fields to update, matching the UpdateWebhookRequest schema (see get_operation_schema("UpdateWebhook")). Must not be empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It does disclose two behavioral constraints: URLs must be HTTPS, and setting deactivate=true switches the webhook to INACTIVE. However, it does not explain other side effects, partial update behavior, or how deactivate=false behaves, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the tool's purpose, lists key capabilities, and ends with a useful pointer to the operation schema. Every sentence earns its place with no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is an update tool with a nested object, no output schema, and no annotations. The description covers updateable fields, the HTTPS constraint, and the deactivate behavior, and points to get_operation_schema for the request shape. However, it omits any mention of the response/return value or side effects, so it is not as complete as a fully documented 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?
Although the schema already describes both parameters, the webhook object's schema is generic (a reference to UpdateWebhookRequest). The description adds concrete examples of updatable fields (url, events, deactivate) and a validation rule (HTTPS only), which gives the agent useful semantic detail beyond the schema's placeholder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update an existing webhook' — a clear verb and resource. It then specifies the updateable aspects: url (HTTPS only), subscribed events, and deactivate=true to switch to INACTIVE, which distinguishes it from create/delete/get/validate webhook 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 clearly establishes the use case: modifying an existing webhook, and even provides a pointer to get_operation_schema for the exact request shape. However, it does not explicitly enumerate when not to use this tool or mention alternatives like create_webhook or delete_webhook, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload fileA
Upload a file (e.g. an image for a variant or collection) via multipart/form-data. Files are deduplicated by content: uploading identical bytes returns the existing file. Max size 100 MB. Provide exactly one source: file_path or content_base64.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | File name to send. Required with content_base64; defaults to the basename of file_path. | |
| file_path | No | Absolute path to the file on the local machine running this MCP server. Mutually exclusive with content_base64. | |
| content_base64 | No | File content as a base64 string. Mutually exclusive with file_path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses content-based deduplication (returns existing file), a 100 MB size limit, and multipart/form-data encoding—specific behavioral traits that meaningfully affect invocation and expectations, going beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each earning its place: purpose, key behavioral trait, and input constraint. The description is front-loaded and highly scannable, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers purpose, dedup, size, and input constraints. However, with no output schema, it does not explain what the call returns on success (e.g., file ID or URL), leaving a minor but relevant gap for an upload operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage of all parameters, including their roles and mutual exclusivity. The description adds the 'exactly one source' rule but no additional semantic depth; hence the schema baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool uploads a file via multipart/form-data and provides a concrete use case (image for variant/collection). This distinguishes it from the sibling upload_video tool and clearly communicates the action and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers context for when to use the tool ('e.g. an image for a variant or collection') and enforces the 'exactly one source' rule. It does not explicitly name alternatives or exclusions, but the context and dedup behavior make the usage scenario clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_videoUpload videoA
Upload a product video via multipart/form-data and queue it for processing. Max size 100 MB; formats mp4, mov, webm, avi, flv. Videos are deduplicated by content: uploading identical bytes returns the existing video. The response carries the video ID — poll it with get_video until the status is READY, then attach the video to a variant through media in create_variant / update_variant (at most one video per variant, and the same media list must also carry at least one image). Provide exactly one source: file_path or content_base64.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | File name to send; it becomes the video title. Required with content_base64; defaults to the basename of file_path. | |
| file_path | No | Absolute path to the video file on the local machine running this MCP server. Mutually exclusive with content_base64. | |
| content_base64 | No | Video content as a base64 string. Mutually exclusive with file_path. Prefer file_path for large videos. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure and does so thoroughly: deduplication by content, max file size, allowed formats, async queueing, returned video ID, and variant constraints. This is substantial and actionable beyond anything in the JSON schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence in the description earns its place: method, limits, dedup, workflow, attachment constraints, and input exclusivity. It is detailed without redundancy and is well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and the absence of both annotations and output schema, the description covers the essential operational context: upload method, size and format limits, dedup behavior, the polling flow, and downstream media constraints. An agent has enough information to invoke and integrate the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents filename, file_path, and content_base64 with mutual exclusivity. The description reinforces the 'exactly one source' rule and preference for file_path, but adds no meaningful new semantic detail 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 opens with a specific action and resource: 'Upload a product video via multipart/form-data and queue it for processing.' This immediately distinguishes it from generic file uploads and URL-based video imports, and the verb-object structure is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: upload exactly one source, poll with get_video until READY, then attach via media in create_variant/update_variant. It clearly defines the integration path. It does not explicitly name when to prefer upload_video_from_url or upload_file, but operational guidance is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_video_from_urlUpload video from URLA
Upload a product video by public link and queue it for processing — use it instead of upload_video when the file lives on the web rather than on this machine. Accepts a public Yandex.Disk link to a video file, a direct link to a video file, or a link to the Yandex KIT player (which returns the already uploaded video). The link must be reachable without authentication, otherwise the API answers 400. Same limits as upload_video: max 100 MB, formats mp4, mov, webm, avi, flv, deduplicated by content. The response carries the video ID — poll it with get_video until the status is READY, then attach the video to a variant through media in create_variant / update_variant (at most one video per variant, and the same media list must also carry at least one image).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public link to the video: a Yandex.Disk link to a video file, a direct file link, or a Yandex KIT player link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and succeeds: queued/asynchronous processing, three accepted link types (including the KIT player edge case returning an already uploaded video), an explicit failure mode (400), size and format acceptance, content-based deduplication, the response contract (video ID), and a pollution workflow. This meets the bar that annotations would otherwise have to 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?
Five dense sentences are arranged in a logical narrative (purpose → accepted inputs → failure condition → limits → occupancy). Nothing duplicates schema content and each clause delivers a constraint or next step, so the length is all functional signal rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, nothing is missing: input format, failure condition, limitations, and the full downstream playback (poll get_video to READY, attach via media, one video per variant, required co-existing image). An agent can go from a bare URL to a correct API call purely from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description enlarges the schema by adding an agent-relevant constraint: the link must be reachable without authentication or the API answers 400, and it restates the accepted link forms in operational terms. Modest but genuine 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 names a precise verb, resource and method: 'Upload a product video by public link and queue it for processing.' It immediately differentiates itself from the sibling upload_video ('use it instead of upload_video when the file lives on the web'), so an agent can select between the two upload tools without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Reference explicitly states when to use it: instead of upload_video when the file is web-hosted rather than local. It also gives operational preconditions (link must be public, no auth, else 400) and a follow-up protocol (poll get_video until READY, attach through media in create_variant/update_variant). That is a complete when/how routing package.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_webhookValidate webhookA
Trigger webhook validation: the API sends a POST with event WEBHOOK_VALIDATE to the webhook URL. With activate=true, the webhook becomes ACTIVE if the server replies HTTP 2xx with body {"message": "validated_store_{store_id}"} (store_id: see get_store).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook ID (UUID). | |
| activate | No | Activate the webhook after successful validation (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the exact HTTP request sent (POST with event WEBHOOK_VALIDATE), the expected server response (HTTP 2xx with body {"message": "validated_store_{store_id}"}), and the activation condition. This is significant behavioral detail, though it does not cover failure behavior 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 a single, dense sentence that front-loads the main purpose and then explains the validation behavior. Every clause adds valuable information, with no wasted words or repetition. It is well-structured for an AI agent to quickly grasp the tool's operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's modest complexity (2 parameters, no output schema), the description provides a thorough explanation of the validation process, the expected server response, and the activation condition. It also directs the user to get_store for store_id. The main gap is the lack of explicit return-value documentation (since no output schema exists), and failure behavior is not described, but the core workflow is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the 'activate' parameter's effect: 'With activate=true, the webhook becomes ACTIVE if the server replies HTTP 2xx...' It also references get_store for the store_id, providing context for the response body. The 'id' parameter is sufficiently described in the schema as a Webhook ID (UUID).
Input schemas describe structure but not intent. Descriptions should explain 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: 'Trigger webhook validation.' It describes the mechanism (POST with event WEBHOOK_VALIDATE) and specifies the condition for activation, which distinguishes it from sibling tools like create_webhook or update_webhook. The verb+resource construction is explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: to validate a webhook, especially for activation when activate=true. It does not explicitly name alternative tools or say 'use this instead of X,' but the context of the webhook lifecycle (create, update, delete, list) makes the specific validation step clear. The activation condition provides practical usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variant_actionArchive or unarchive variantA
Archive a variant (soft delete: status becomes ARCHIVED, item is hidden from the storefront but restorable) or unarchive it (status becomes HIDDEN; publish it afterwards via update_variant).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Variant ID (UUID). | |
| action | Yes | Action to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses soft delete, status transitions (ARCHIVED/HIDDEN), storefront visibility, restorability, and the need to publish via update_variant after unarchive. This is rich and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, no filler. Each clause earns its place by explaining the state transitions and the necessary follow-up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 2 params and no output schema, and the description covers the essential behavior, state changes, storefront visibility, and follow-up action. It is complete for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with basic descriptions. The description adds meaning to the action enum by explaining the outcome of each value (archive -> ARCHIVED, unarchive -> HIDDEN), going beyond the schema's 'Action to perform.' Id semantics remain as provided by 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 archives or unarchives a variant with specific behavioral effects. It uses a specific verb+resource and distinguishes from sibling tools by explicitly mentioning the follow-up via update_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 two actions and notes that unarchive requires a subsequent publish via update_variant, naming an alternative tool. It does not explicitly state when not to use the tool, but the context is clear enough for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
warehouse_actionArchive or unarchive warehouseA
Archive a warehouse (soft delete: status becomes ARCHIVED, warehouse can no longer be used for stock) or unarchive it (status becomes ACTIVE again).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Warehouse ID (UUID). | |
| action | Yes | Action to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond a simple statement of the action by explaining that archive is a soft delete (status becomes ARCHIVED) and that the warehouse can no longer be used for stock, while unarchive sets status back to ACTIVE. This adds meaningful behavioral context, though it does not cover permissions or edge cases like existing stock.
Agents need to know what a tool does to the 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 action and conveys the essential behavior and consequences without any redundancy or irrelevant detail. Every word contributes to understanding the tool's purpose and effects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 action tool with 2 parameters and no output schema, the description is quite complete. It explains both actions, the resulting status changes, and the business consequence (warehouse cannot be used for stock). It lacks explicit mention of prerequisites or restrictions, but the low complexity of the tool reduces the need for more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters (id and action), so the baseline is 3. However, the description adds significant semantic value by explaining the effect of each action value: it details what 'archive' and 'unarchive' actually do to the warehouse status and usability, which the enum values alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs: 'Archive a warehouse ... or unarchive it.' It defines the resource (warehouse) and the distinct outcomes (status becomes ARCHIVED or ACTIVE), which fully distinguishes it from sibling action tools like category_action or variant_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (use this tool to archive or unarchive a warehouse) but provides no explicit guidance on when to use this tool versus alternatives like update_warehouse. It does not mention exclusions or prerequisites, so the 'when-to-use' is only self-evident from the action name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.6.2- Changed
list_products1 field changed- changed
Input schema / properties / all / descriptionPrevious value: -"Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page."New value: +"Fetch pages via auto-pagination, up to 500 items; inspect coverage and continue with explicit page reads if coverage is partial; ignores page/per_page."
- Changed
list_variants1 field changed- changed
Input schema / properties / all / descriptionPrevious value: -"Fetch all pages via auto-pagination, up to 500 items; ignores page/per_page."New value: +"Fetch pages via auto-pagination, up to 500 items; inspect coverage and continue with explicit page reads if coverage is partial; ignores page/per_page."
23 tool updates
v1.6.0- Added
generate_order_waybills - Changed
get_customer1 field changed- added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Changed
get_gift_card1 field changed- added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Changed
get_order1 field changed- added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Added
get_order_payment_link - Added
get_store_feeds - Changed
list_alerts2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_blogs2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_categories2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_characteristic_colors2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_characteristic_groups2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_characteristics2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_collections2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_customers3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +} - added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Changed
list_discounts2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Added
list_files - Changed
list_gift_cards3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +} - added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Changed
list_orders3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +} - added
Input schema / properties / redactAdded value: +{ + "description": "Use redact:true when the task does not need personal data (e.g. counting or aggregating orders) — personal fields (name, phone, email, delivery address and its parts, notes) are replaced with \"[redacted]\". Applies to the response only; request bodies are never redacted. Default false.", + "type": "boolean" +}
- Changed
list_products2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_promocodes2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_variants2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_videos2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
- Changed
list_warehouses2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "CSV columns; only valid together with format:\"csv\". Field names are validated against the item schema of the operation's response — an unknown name fails with the list of allowed fields. Default: every top-level scalar field of the item.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Output format: \"csv\" renders the items as RFC 4180 CSV (a leading \"# coverage:\" comment line, then the header row) instead of JSON — cheaper for wide exports. Default: JSON.", + "enum": [ + "csv" + ], + "type": "string" +}
14 tool updates
v1.5.0- Added
create_blog - Added
create_characteristic - Added
create_characteristic_group - Added
get_blog - Added
get_characteristic - Added
get_characteristic_group - Added
list_blogs - Added
list_characteristic_groups - Added
list_characteristics - Added
set_order_marking_codes - Added
update_blog - Added
update_characteristic - Added
update_characteristic_group - Added
upload_video_from_url
70 tool updates
v1.3.0- First observed
bulk_update_prices - First observed
cancel_order - First observed
category_action - First observed
complete_order_delivery - First observed
confirm_order - First observed
create_category - First observed
create_collection - First observed
create_discount - First observed
create_product - First observed
create_promocode - First observed
create_variant - First observed
create_warehouse - First observed
create_webhook - First observed
delete_collection - First observed
delete_webhook - First observed
discount_action - First observed
get_category - First observed
get_collection - First observed
get_current_user - First observed
get_customer - First observed
get_customer_orders - First observed
get_discount - First observed
get_file - First observed
get_gift_card - First observed
get_operation_schema - First observed
get_order - First observed
get_order_addons - First observed
get_product - First observed
get_promocode - First observed
get_regions - First observed
get_store - First observed
get_variant - First observed
get_video - First observed
get_warehouse - First observed
get_webhook - First observed
kit_request - First observed
list_alerts - First observed
list_categories - First observed
list_characteristic_colors - First observed
list_collections - First observed
list_customers - First observed
list_discounts - First observed
list_gift_cards - First observed
list_orders - First observed
list_products - First observed
list_promocodes - First observed
list_variants - First observed
list_videos - First observed
list_warehouses - First observed
list_webhooks - First observed
manage_collection_cards - First observed
manage_discount_objects - First observed
manage_promocode_objects - First observed
resolve_alert - First observed
search_operations - First observed
update_category - First observed
update_characteristic_color - First observed
update_collection - First observed
update_customer - First observed
update_discount - First observed
update_product - First observed
update_promocode - First observed
update_variant - First observed
update_warehouse - First observed
update_webhook - First observed
upload_file - First observed
upload_video - First observed
validate_webhook - First observed
variant_action - First observed
warehouse_action
TDQS
Scored across 88 tools
Most tools are clearly separated by resource, and descriptions are unusually detailed. However, list_products vs list_variants is a genuine selection trap, kit_request overlaps every dedicated tool, and pairs like update_variant/bulk_update_prices or update_discount/discount_action create boundary ambiguity. Agents will need careful prompting to avoid misselection.
Most names follow snake_case verb_noun conventions (list_, get_, create_, update_), which is readable and predictable. But the *_action suffix tools (discount_action, category_action, warehouse_action, variant_action), bulk_update_prices, and plural-noun 'get' methods like get_customer_orders and get_order_addons break the otherwise consistent pattern.
At 88 tools, the surface is far beyond the well-scoped 3-15 tool range and well past the 50+ extreme threshold. Even though the underlying API is broad, this many parallel tools create severe selection and context-window overhead rather than a coherent agent-facing interface.
The server covers nearly every e-commerce domain: catalog, variants, pricing, orders, customers, discounts, promocodes, content, videos, webhooks, and more, with lifecycle operations like archive/restore and status transitions. Minor gaps exist in dedicated tools (e.g., no delete_blog, no delete_characteristic, no permanent product/category deletion), but search_operations + get_operation_schema + kit_request fill those gaps.
Maintenance
Related MCP Connectors
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
MCP server for Lemon Squeezy — stores, products, orders, subscriptions, license keys.
Related MCP Servers
- AlicenseAqualityAmaintenanceUniversal MCP server for the Avito API (Russia's largest classifieds marketplace), built for autonomous AI agents to operate an account hands-free — 145 tools across 18 domains (listings, messenger, orders, delivery, promotion, autoload, reviews, analytics). Safe-by-default: dry-run, idempotency, structured errors, confirmation flow.14464 npm16MIT
- AlicenseBqualityAmaintenanceProduction-grade MCP server for RetailCRM e-commerce CRM. Provides 39 tools and 2 prompt skills to manage orders, customers, products, inventory, payments, tasks, references, and analytics via API v5.3929 npm1MIT
- AlicenseAqualityAmaintenanceMCP server for Yandex Merchants API enabling management of product offers (prices, discounts, hide/show) via natural language from AI assistants like Claude and Cursor.1370 npmMIT
- AlicenseAqualityCmaintenanceA standalone MCP server that exposes the admin side of kitcommerce-api as tools, enabling AI assistants to manage products, categories, collections, coupons, orders, inventory, customers, and the dashboard.301ISC