pyaterochka-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pyaterochka-mcpsearch for milk and show prices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pyaterochka-mcp
Неофициальный локальный MCP-сервер для поиска товаров, сборки корзины и защищённого оформления доставки из «Пятёрочки».
Проект не связан с X5 Group или «Пятёрочкой». Публичного API оформления заказов нет. Приватные интерфейсы могут измениться, быть заблокированы или запрещены пользовательским соглашением. Используйте только со своим аккаунтом.
Что умеет MCP
Инструмент | Побочный эффект | Назначение |
| нет | Проверяет локальную настройку, сессию, магазин и готовность checkout |
| локальный конфиг | Выбирает магазин по SAP-коду |
| только при | Находит магазин по уже выбранным пользователем координатам |
| нет | Показывает категории выбранного магазина |
| нет | Ищет доступные товары и актуальные цены |
| нет | Показывает товары категории |
| нет | Читает карточку, наличие, состав и атрибуты товара |
| нет | Читает общую live-корзину аккаунта |
| меняет корзину | Добавляет товар; денег не списывает |
| меняет корзину | Задаёт точное количество; |
| меняет корзину | Очищает корзину |
| нет | Читает доступные виды и интервалы доставки |
| меняет корзину | Выбирает express/auto или точный интервал |
| нет | Показывает только маскированные способы оплаты |
| меняет checkout | Выбирает способ и при необходимости запоминает linked ID |
| локальный конфиг | Забывает локальное предпочтение, не удаляя карту |
| меняет корзину | Записывает квартиру, подъезд, этаж и комментарии |
| пересчитывает корзину | Делает |
| может списать деньги | После отдельного подтверждения один раз отправляет реальный заказ |
| нет | Читает активные заказы |
| нет | Читает историю с редактированием личных полей |
| нет | Читает текущий статус одного заказа |
| нет | Получает актуальные причины отмены |
| отменяет заказ | Отменяет только явно указанный пользователем заказ |
Все изменения корзины аннулируют предыдущий checkout preview. Единственный
инструмент, создающий реальный заказ, — confirm_order; по умолчанию он
выключен в конфиге.
Related MCP server: openfoodfacts-mcp-server
Текущее состояние
Версия 0.6.0a3 содержит 24 MCP-инструмента:
MCP-инструменты каталога, поиска, карточки товара и выбора магазина;
импорт заголовков и cookies из локального HAR без вывода секретов в терминал;
локальный Chrome transport для запросов через открытую вкладку
5ka.ru;автоматический локальный capture через отдельное окно Chrome без ручного HAR;
текущий протокол корзины
5ka.ru: корзина как заказ со статусомCART;создание/чтение корзины, добавление, точное изменение количества и очистку;
выбор доставки «как можно скорее» или точного доступного интервала;
сохранение квартиры, подъезда, этажа и комментариев к заказу;
чтение и выбор способов оплаты с маскированием карты;
безопасное запоминание ID уже привязанного способа оплаты;
обязательный пересчёт доступности и минимальной суммы перед оформлением;
однократную отправку заказа через linked card, новую карту, СБП или SberPay;
чтение активного заказа, истории и точного статуса;
список причин отмены и отмену только по явному запросу;
возможность переопределить версию любого endpoint-а через локальный конфиг;
двухшаговый checkout с TTL, одноразовым токеном, суммой в копейках и fingerprint корзины;
максимальный лимит заказа;
запрет реального submit по умолчанию;
отсутствие автоматического повтора submit при любом неоднозначном ответе;
сверку корзины после неоднозначной ошибки мутации без повторной записи;
маскирование адреса, контактов, карты и комментариев в ответах статуса;
общий строгий редактирующий фильтр для MCP-ответов и HAR-отчётов;
санитизацию и ограничение длины недоверенного текста от API;
лимит количества одного товара от
0до100и отказ дляNaN/Infinity;потоковый лимит тела ответа до разбора JSON;
запрет редиректов, доменно-привязанные cookies и проверку каждого URL;
валидацию всех идентификаторов, подставляемых в URL;
MCP-схемы с границами аргументов и аннотациями побочных эффектов;
только локальный
stdiotransport.
Маршруты сверены с актуальным публичным JavaScript-клиентом 5ka.ru:
GET /api/orders/v3/orders/?in_action=true— поиск черновикаCART;/api/orders/v4|v8/orders/...— создание корзины;/api/orders/v5|v8/orders/...— изменение корзины;GET /api/orders/v6|v10/orders/{id}/— чтение корзины;/api/orders/v1|v3/orders/{id}/intervals— интервалы доставки;PATCH /api/orders/v7|v12/orders/{id}/— доставка и детали заказа;POST /api/orders/v1|v2/orders/{id}/revise— финальный пересчёт;/api/orders/v1/payment-methods— способы оплаты;/api/orders/v1/orders/{id}/pay-by-*— однократная отправка/оплата;/api/ordering/public/v1/orders/...— активный заказ и отмена.
API версионируется и включается feature-флагами, поэтому все стандартные маршруты остаются переопределяемыми.
Прямой HTTP-клиент с импортированными заголовками может получить 403.
Поэтому рекомендуемый режим выполняет запросы непосредственно внутри уже
авторизованной пользовательской вкладки Chrome. MCP не переключает вкладку,
разрешает запросы только по HTTPS к 5ka.ru и его поддоменам и не следует
редиректам. HTTP-режим применяет ту же доменную проверку; его cookies
привязаны к 5ka.ru.
Проект ничего не кэширует: каталог, цены, наличие, корзина и заказ каждый раз
читаются из upstream для выбранного store_id. Это снижает риск показать
устаревшую цену, но не превращает приватный API в стабильный контракт.
Реальный submit не включён в стандартную конфигурацию. При уже привязанной карте MCP может отправить заказ одним защищённым вызовом. Для новой карты, СБП или SberPay «Пятёрочка» возвращает официальный платёжный переход: подтверждение в форме или банковском приложении остаётся обязательным. 3-D Secure и антифрод-проверки банка также нельзя гарантированно автоматизировать.
Подробная архитектура, маршруты, safety guard и проверенный end-to-end
сценарий описаны в docs/PAYMENTS.md.
Результаты внешних аудитов и статус финальных исправлений находятся в
docs/SECURITY_AUDIT_FOLLOWUP_RESOLUTION_2026-07-28.md.
Правила сообщения об уязвимостях описаны в SECURITY.md.
Установка
cd pyaterochka-mcp
python3 -m venv .venv
.venv/bin/pip install -e '.[dev,capture]'Подключение к MCP-клиенту
Codex:
codex mcp add pyaterochka -- /absolute/path/to/pyaterochka-mcp/.venv/bin/pyaterochka-mcp
codex mcp listДля клиента с JSON-конфигурацией MCP:
{
"mcpServers": {
"pyaterochka": {
"command": "/absolute/path/to/pyaterochka-mcp/.venv/bin/pyaterochka-mcp"
}
}
}После подключения перезапустите MCP-клиент или откройте новую задачу и первым
вызовите pyaterochka_status.
Автоматический безопасный capture
Запустите:
.venv/bin/pyaterochka-captureКоманда открывает отдельное окно Google Chrome с закрытым локальным профилем. В этом окне:
Войдите через X5ID. Если аккаунта ещё нет, выберите регистрацию, укажите свой номер телефона и самостоятельно введите SMS-код.
Выберите адрес доставки.
Добавьте один товар.
Откройте корзину и удалите товар.
Не переходите к оплате.
Закройте окно Chrome.
Сессионные заголовки, cookies, магазин и координаты сохраняются напрямую в owner-only конфиг. Они не печатаются в терминал и не передаются в чат. MCP не просит номер телефона или SMS-код и не регистрирует аккаунт от имени пользователя: согласия и одноразовый код остаются в официальном окне X5ID.
Если сессия ещё не настроена, pyaterochka_status возвращает пошаговый
authentication_onboarding с предложением войти или зарегистрироваться.
Различить «нет аккаунта» и «аккаунт есть, но сессия ещё не захвачена» до
официальной авторизации MCP не может.
Альтернатива: импорт HAR
Откройте
https://5ka.ruв Chrome и войдите через X5ID.Выберите адрес доставки и нужный магазин.
Откройте DevTools → Network, включите
Preserve logи очистите список.Выполните только безопасный сценарий:
найдите «молоко»;
откройте карточку товара;
добавьте один товар;
откройте корзину и экран итоговой суммы;
удалите добавленный товар.
Не нажимайте кнопку оплаты.
В Network выберите
Save all as HAR with content.Импортируйте HAR локально:
.venv/bin/pyaterochka-import-har ~/Downloads/5ka-session.har --transport chromeДля Chrome transport:
Оставьте в обычном Google Chrome открытую вкладку
https://5ka.ru/.В меню Chrome включите
View → Developer → Allow JavaScript from Apple Events.При первом запуске разрешите вашему MCP-клиенту или терминалу управлять Google Chrome, если macOS покажет системный запрос.
Запросы выполняются в фоне именно в этой вкладке, используя её действующую сессию. MCP не читает историю браузера и не отправляет запросы на другие домены.
Секреты сохраняются в:
~/.config/pyaterochka-mcp/config.jsonФайл создаётся с правами 0600. В терминал значения cookies и токенов не
печатаются. Рядом создаётся capture-report.json — редактированный отчёт о
распознанных маршрутах. Импортёр понимает и старую пару API v5/v6, и текущую
v8/v10. Для ответов сохраняется только структура полей и типов, без значений.
HAR содержит секреты: после проверки импорта удалите его вручную безопасным
способом.
Проверка
.venv/bin/pytest
.venv/bin/pyaterochka-capture --help
.venv/bin/pyaterochka-probe "молоко"
.venv/bin/pyaterochka-mcppyaterochka-probe выполняет только чтение: проверяет категории и поиск, не
меняя корзину. В выводе нет cookies, токенов и сырых ответов upstream.
В режиме chrome обычный Chrome должен быть открыт на 5ka.ru.
При запуске MCP первым вызовите:
pyaterochka_statusЗатем:
search_products("молоко")
get_product("<id>")
add_to_cart("<id>", 1)
view_cart()Полный checkout выполняется строго по этапам:
list_delivery_intervals()
select_delivery_interval("INTERVAL", "<uuid>") # необязательно для auto/express
set_order_details(flat="12", entrance="1", floor="4")
list_payment_methods()
select_payment_method(<id>)
checkout_preview()checkout_preview ничего не покупает, но это не read-only-вызов: он может
выбрать сохранённый способ оплаты, пересчитать loyalty и выполнить revise
общей корзины. Он возвращает точную итоговую сумму, недостающую сумму до
минимума, выбранную доставку, маскированный способ оплаты и
missing_requirements. Только если ready_for_submit=true, сумму нужно
показать пользователю и получить отдельное явное подтверждение. Готовый
preview также возвращает короткоживущий confirmation_token.
После подтверждения exact total:
confirm_order(<точная сумма>, "<confirmation_token из этого preview>")Для уже привязанной карты успешный ответ может сразу содержать созданный заказ.
Для новой карты/СБП/SberPay ответ содержит requires_external_payment=true и
официальный payment_url. После попытки используйте:
active_orders()
order_history()
get_order_status("<order_id>")При сетевой ошибке confirm_order не повторяйте: сначала проверьте активный
заказ и историю.
Полный жизненный цикл — от первой авторизации до отмены и восстановления после
ошибок — описан в
docs/ARCHITECTURE_AND_FLOWS.md.
Сохранённая карта
MCP сам не принимает и не хранит номер карты, срок действия или CVV. Первый платёж новой картой проходит на официальной платёжной странице «Пятёрочки». Если после этого API показывает карту как привязанную, её можно выбрать один раз с локальным предпочтением:
list_payment_methods()
select_payment_method(<id привязанной карты>, remember_for_future_orders=true)В конфиг записывается только непрозрачный payment_method_id. При следующих
checkout_preview MCP автоматически выбирает этот метод до финального
пересчёта, поэтому пользователь всегда подтверждает уже актуальную сумму.
Удалить локальное предпочтение можно вызовом
clear_preferred_payment_method(): это не удаляет карту в аккаунте
«Пятёрочки».
Если «Пятёрочка» не сохранила карту, скрыла её или банк требует 3-D Secure, MCP не может обойти официальный платёжный шаг. Сохранение карты выполняет только сама платёжная система/«Пятёрочка», а не этот проект.
Переопределение endpoint-а
Если feature-флаг аккаунта использует другую версию API, endpoint описывается методом, URL/path и шаблоном JSON. Значения в фигурных скобках подставляются в момент вызова:
{
"endpoints": {
"cart_set": {
"method": "PUT",
"base": "orders",
"path": "/v5/orders/{cart_id}/item/{product_id}/",
"json": {
"qty": "{quantity}"
}
}
}
}Поддерживаемые имена:
cart_listcart_createcart_getcart_addcart_setcart_deletecart_cleardelivery_intervalsorder_updatecart_revisepayment_methodspayment_method_selectpay_linked_cardpay_unlinked_cardpay_linked_sbppay_unlinked_sbppay_linked_sberpaypay_unlinked_sberpayactive_ordersorder_historyorder_getcancel_reasonsorder_cancel
Не копируйте в публичный issue или чат config.json и исходный HAR.
Защита денег
confirm_order не работает, пока одновременно не выполнены все условия:
checkout.submit_enabledявно установлен вtrue;только что выполнен
checkout_preview;передан одноразовый токен именно этого preview;
подтверждённая пользователем сумма совпадает с preview;
live-корзина имеет ту же сумму и fingerprint;
прямо перед платёжным POST повторно совпали сумма, версия и fingerprint;
набран минимум, выбраны доставка, квартира и способ оплаты;
сумма не превышает
checkout.max_total.
Submit выполняется ровно один раз и не повторяется автоматически при сетевой
ошибке. Preview расходуется до сетевого запроса. Оставляйте
submit_enabled: false, пока не готовы провести первый контролируемый заказ.
Для активации вручную измените owner-only
~/.config/pyaterochka-mcp/config.json, одновременно задав разумный
max_total. Это включает возможность, но само по себе ничего не заказывает.
Осознанно принятый риск полной автоматизации
Чтобы сохранить сценарий уровня «показать итог → пользователь отвечает
“ок” → оформить привязанной картой», одноразовый confirmation_token
намеренно остаётся в ответе MCP, а confirm_order доступен модели после
явного подтверждения только что показанной точной суммы.
Санитизация внешних строк, ограниченные схемы, аннотации инструментов,
одноразовый token, TTL, fingerprint и повторная live-проверка существенно
снижают риск, но не являются криптографическим доказательством того, что
человек прочитал preview. Prompt injection из данных upstream остаётся
остаточным риском, который владелец проекта осознанно принимает ради полной
автоматизации. Для более строгого режима оставьте submit_enabled=false и
оформляйте заказ в официальном интерфейсе.
Автоматизация не может отменить требование 3-D Secure, антифрод-проверку, подтверждение СБП или другой challenge, который запросит банк либо X5.
Один аккаунт — одна общая корзина
Корзина хранится на стороне «Пятёрочки», а не внутри MCP. Официальный сайт,
приложение и все MCP-процессы с одной X5ID-сессией видят и меняют одну корзину.
Не собирайте её одновременно из нескольких клиентов: чужое изменение
аннулирует preview, а live-проверка перед оплатой остановит submit. После
неоднозначной ошибки сначала вызовите view_cart, active_orders и
order_history, не повторяя финансовый запрос.
Источники
Каталожные маршруты и формы ответов сверены с MIT-проектами:
Архитектура и safety-паттерны частично адаптированы из
Dudude-bit/yandex-lavka-mcp.
Копирайты и полные уведомления MIT сохранены в NOTICE.
Лицензия
Собственный код проекта распространяется по
MIT License. Уведомления об использованных MIT-проектах и их
авторские строки сохранены в NOTICE. Техническая проверка
совместимости лицензий, перечень зависимостей и обязанности при
распространении описаны в docs/LICENSING.md.
Название «Пятёрочка» и связанные товарные знаки принадлежат их правообладателям. MIT-лицензия относится к коду этого репозитория и не даёт разрешения на товарные знаки, приватный API или нарушение условий сервиса.
Available Tools
24 toolsactive_ordersARead-onlyIdempotent
List the current active order. Read-only; requires a captured session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the session requirement, which is critical context beyond the annotations, but does not explain behavior when no active order exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and strong annotations, the description provides sufficient context. However, clarifying what constitutes an 'active' order would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description does not need to add parameter info, so baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource as 'current active order', distinguishing it from sibling tools like 'order_history' (list all) and 'get_order_status' (status of a specific 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 mentions 'requires a captured session' as a prerequisite, but does not provide explicit guidance on when not to use this tool or suggest alternatives (e.g., 'order_history' for past orders).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_cartA
Add a product. No charge; invalidates any earlier checkout preview.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which show non-readOnly, non-idempotent, non-destructive), the description discloses key behaviors: no charge (cost impact) and invalidation of checkout preview (state change). This adds value, though auth requirements or side effects on other sessions are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the main action ('Add a product'), followed by critical behavioral notes. 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?
Covers purpose and key behavioral traits, but lacks parameter guidance and explicit usage differentiation from siblings. An output schema exists, so return value explanation is not needed, but the description still feels incomplete for a new user.
Complex tools with many parameters or behaviors need more documentation. 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 0%, but the description provides no explanation for either 'product_id' (required) or 'quantity' (optional). It does not clarify format, constraints, or meaning 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?
Specifically states 'Add a product' which is a clear verb+resource combination. The tool name also reinforces this. Adds additional context about no charge and invalidating checkout preview, going beyond a simple tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for adding products to cart, but does not explicitly differentiate from siblings like 'update_cart_item' for quantity changes or 'clear_cart' for removal. No guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderADestructive
Cancel an order.
Call only after the user explicitly asks to cancel this exact order id.
Obtain reason_code from list_cancel_reasons and show the selected reason
before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | ||
| order_id | Yes | ||
| reason_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the destructive nature (destructiveHint=true) and adds useful behavioral context such as requiring explicit user confirmation and a reason code. It does not contradict annotations and discloses the mutation effect without over-explaining.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the core action, followed by usage guardrails. Every sentence adds critical guidance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and prerequisites well, but omits the optional `comment` parameter. Given the existence of an output schema, return values are not required, but the lack of comment guidance is a gap for a 3-parameter 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?
With 0% schema description coverage, the description must compensate but only mentions reason_code indirectly and order_id implicitly. The `comment` parameter (optional, maxLength 500) is completely undocumented, leaving the agent guessing about its purpose or format.
Input schemas describe structure but not intent. Descriptions should explain 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 'Cancel an order' with specific verb and resource. The name and context distinguish it from siblings like active_orders, confirm_order, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call ('only after user explicitly asks to cancel this exact order id') and includes a prerequisite to obtain reason_code from list_cancel_reasons and show it to the user. This provides clear guidance on alternatives and workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkout_previewAIdempotent
Recalculate checkout and remember an immutable fingerprint.
Charges nothing, but may write payment selection, loyalty recalculation,
and revised prices to the shared upstream cart. Show the total and items to
the user; obtain an explicit confirmation before confirm_order.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it may write to cart (payment selection, loyalty, prices) and that it charges nothing, adding context beyond annotations which only indicate idempotence and non-read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words; main action 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 output schema exists, the description covers all necessary aspects: preview, side effects, user flow, and relation to confirm_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?
No parameters; description adds meaning by explaining the tool's behavior, meeting the baseline of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes specific verb 'Recalculate checkout' with resource 'checkout' and mentions 'immutable fingerprint', clearly distinguishing from siblings like confirm_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?
Explicitly states to use before confirm_order to show total and items to user, providing clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cartADestructiveIdempotent
Remove all cart items. No charge.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and idempotentHint=true, so the destructive and idempotent nature is already documented. The description adds 'No charge', which is a behavioral detail beyond the annotations, confirming no monetary impact. 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 extremely concise, consisting of two short sentences. It is front-loaded with the core action and provides just enough additional context ('No charge') without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, existing annotations covering behavioral traits, and a simple purpose, the description is complete. It tells the agent exactly what the tool does and one key behavioral property. The presence of an output schema is not needed to explain return values for this clear action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema coverage is 100%. With 0 parameters, baseline is 4 as per rubric. The description does not need to add parameter information, and it correctly stays silent.
Input schemas describe structure but not intent. Descriptions should explain 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 'Remove all cart items' with the specific verb 'Remove' and resource 'cart items'. It includes an extra detail 'No charge' that clarifies the action's side effect. The tool name matches the action, and it is easily distinguishable from siblings like update_cart_item or view_cart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. While the action is simple and self-explanatory, there is no mention of when not to use it or alternatives like update_cart_item for removing individual items. The usage is implied from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_preferred_payment_methodADestructiveIdempotent
Forget the local preferred method id. Does not alter or delete a card.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it clarifies that the tool is destructive in forgetting a preference but does not delete the card itself. This aligns with the destructiveHint=true annotation without 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: two short sentences that cover the essential action and a clarifying note. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema, the description is sufficient. It explains the action and a key caveat. However, it could benefit from clarifying the scope (e.g., 'local' means user-level) 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?
With zero parameters and 100% schema coverage, the description does not need to explain parameters. The absence of parameters is clearly defined, and the description does not repeat schema information.
Input schemas describe structure but not intent. Descriptions should explain 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 forgets the local preferred method id and clarifies it does not alter or delete a card. The purpose is specific and distinguishable from sibling tools like list_payment_methods or select_payment_method, 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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention context, prerequisites, or when not to use it, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_orderADestructive
Submit and potentially charge a REAL order.
Fail-closed: disabled by default, requires a fresh preview, exact total,
unchanged live cart fingerprint/version, a selected delivery interval and
payment method, and a configured maximum total. Submit is never retried.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed_total | Yes | ||
| confirmation_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds that it 'potentially charge a Real order', 'fail-closed', and 'never retried', providing behavioral details beyond annotations without 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 very concise: one introductory sentence followed by a bullet-like list of requirements. It is front-loaded with the core action and contains 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 critical nature of this tool (charging), the description covers prerequisites and behavioral traits well. It does not explain the output, but an output schema exists. It could benefit from mentioning potential error states, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions for parameters). The description does not explicitly explain confirmed_total or confirmation_token. While it mentions 'exact total' and 'fresh preview', it does not map these to parameters, leaving a gap for an agent to understand parameter semantics without schema help.
Input schemas describe structure but not intent. Descriptions should explain 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 'Submit and potentially charge a REAL order', providing a specific verb (submit) and resource (order). It distinguishes from sibling tool checkout_preview by emphasizing it is the real submission step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 lists explicit prerequisites: fresh preview, exact total, unchanged cart fingerprint/version, selected delivery interval, payment method, and configured maximum total. It also notes 'disabled by default' and 'never retried', giving clear guidance on when and how to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_nearest_storeCDestructiveIdempotent
Find the delivery store for coordinates.
Read-only unless select=true. Do not pass a private address: use coordinates
already chosen by the user.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | ||
| lon | Yes | ||
| label | No | ||
| select | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation contradiction: annotations specify readOnlyHint=false and destructiveHint=true, but description claims read-only unless select=true. This inconsistency undermines trust and does not disclose the actual destructive 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 sentences with front-loaded purpose and a usage warning. Efficient with no wasted words, though could be slightly expanded for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Incomplete for a tool with 4 undocumented parameters and potentially destructive side effects. Does not explain output or the effects of select=true, leaving gaps given the annotation hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, description only hints at the 'select' parameter's effect. No explanation of 'label' or the exact behavior when select=true is provided, leaving agent uninformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Verb 'Find' and object 'delivery store for coordinates' clearly state purpose. Differentiates from sibling 'set_store' by focusing on location lookup rather than setting a preference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance to not pass private addresses and mentions read-only condition unless select=true. However, does not explicitly state when to use alternatives like 'set_store' or 'search_products'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusARead-onlyIdempotent
Read one order's current status; personal fields are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description adds value by noting that personal fields are redacted—a behavioral detail not captured in annotations. This complements the safety profile well without 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—two clauses covering action and a key behavior—with no wasted words. The verb 'Read' is front-loaded, making the purpose immediately clear. 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 simplicity (single parameter, output schema present, rich annotations), the description is nearly complete. It covers what the tool does and a privacy-related behavior. Minor omission: no mention that the output includes only status (though assumed), but output schema likely fills 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?
With 0% schema description coverage, the description should explain the order_id parameter, but it does not. The schema itself provides format constraints (pattern, length), yet the description adds no semantic meaning about what constitutes a valid order_id or how to obtain 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 verb 'Read' and the resource 'one order's current status', which precisely defines the tool's function. The additional note about redacted personal fields sets it apart from sibling tools like order_history, 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?
No guidance is provided on when to use this tool versus alternatives like active_orders or order_history. The description does not mention when to prefer this single-order status read over other order-related sibling tools, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotent
Get one product's current price, stock, ingredients and attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the data fields returned (price, stock, ingredients, attributes). Annotations already confirm it's read-only, idempotent, and non-destructive, so the description provides concrete behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that immediately conveys the tool's purpose and returned data. No extraneous information, perfectly 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 simple tool with one parameter and an output schema (return format assumed covered by schema), the description adequately specifies what is returned. It could be slightly improved by mentioning the parameter, but overall it is sufficient for basic 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?
The description does not explain the required 'product_id' parameter, such as its format or how to obtain it. With 0% schema coverage, the description should compensate but fails to clarify the parameter meaning, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain 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 identifies the resource 'one product', listing the specific fields returned (price, stock, ingredients, attributes). This clearly distinguishes from sibling tools like search_products or list_category_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?
No explicit guidance on when to use this tool versus alternatives (e.g., search_products). The description implies it's for retrieving details of a specific product by ID, but does not provide context on when to prefer this over listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cancel_reasonsARead-onlyIdempotent
List cancellation reason codes accepted by the current 5ka API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral insights beyond stating the action, which is consistent with annotations but adds no new context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the purpose without extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown), the description need not explain return values. It fully captures the tool's functionality for a simple, parameterless listing 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?
There are no parameters, and schema description coverage is 100%. With 0 parameters, baseline is 4. The description appropriately omits parameter details since none exist.
Input schemas describe structure but not intent. Descriptions should explain 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: listing cancellation reason codes accepted by the API. It uses a specific verb 'List' and resource 'cancellation reason codes', distinguishing it from sibling tools like cancel_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 does not explicitly state when to use this tool versus alternatives. However, given the sibling cancel_order tool, it is implied that users should call this to get valid reason codes before cancelling. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesARead-onlyIdempotent
List product categories for the selected delivery store. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the behavioral context that the tool depends on the selected delivery store, which is not covered by annotations. It repeats 'Read-only' which is redundant with readOnlyHint, so overall adds some value.
Agents need to know what a tool does to the 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 two clear clauses, no wasted words, and is perfectly front-loaded with the essential action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and an existing output schema, the description is complete: it specifies the action and the dependency on the selected store. It does not need to explain return values due to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema coverage is 100%. The description does not need to explain parameters, and it does not add any parameter information, which is appropriate. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'product categories', and the scope 'for the selected delivery store', distinguishing it from sibling tools like 'list_category_products' that list products within a category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, such as when browsing available categories before selecting one. The usage is implied but not directly stated, making it adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_category_productsARead-onlyIdempotent
List products in one category for the selected store. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds 'Read-only' (consistent) and 'for the selected store,' indicating a dependency on store context. However, it omits details about pagination (limit parameter) or ordering, which are relevant behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the verb and resource. It is concise but could be slightly expanded to include the store dependency and pagination context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, return values need not be explained. However, the description leaves gaps: it does not clarify that the store must be selected first (via set_store) or that the limit parameter enables pagination. It is adequate for a list tool but incomplete in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention either parameter. It fails to explain that category_id is required or that limit controls page size with a default of 30. The description adds no semantic value beyond the schema for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'products' with a specific scope 'in one category for the selected store.' It distinguishes from siblings like search_products (cross-category) and get_product (single item). The 'Read-only' addition further clarifies its safe nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for listing products within a single category and a pre-selected store, but does not explicitly state when to use this vs alternatives like search_products or list_categories. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_delivery_intervalsARead-onlyIdempotent
List currently available delivery types and time intervals. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description confirms read-only behavior, consistent with annotations. Adds 'currently available' hinting at dynamic data, but does not disclose additional behavioral traits 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?
Two sentences, efficient. The second sentence ('Read-only') is redundant given annotations, but not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero parameters, rich annotations, and an output schema, the description is sufficient for an agent to understand and 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?
No parameters exist, so baseline is 4. Description adds no parameter info, which is acceptable since none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('delivery types and time intervals'), making the tool's purpose distinct from siblings like select_delivery_interval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus related siblings such as select_delivery_interval. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_methodsARead-onlyIdempotent
List masked payment methods. Never exposes full card numbers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show readOnlyHint and destructiveHint. The description adds a critical security constraint (masking card numbers) beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, impactful sentences. No wasted words; front-loaded with purpose and key behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple list tool with no parameters and an output schema. Description sufficiently covers behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, schema coverage 100%, baseline 4 applies. Description adds no param info but doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists masked payment methods and specifies security behavior (never exposes full numbers). It is distinct from sibling tools like select_payment_method or clear_preferred_payment_method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly clear for viewing payment methods, but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_historyARead-onlyIdempotent
List recent orders with personal address and contact fields redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds crucial information that personal address and contact fields are redacted, which is a behavioral trait not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys essential information without any extraneous details. It is front-loaded with the primary action and key behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with an output schema, the description covers the basic purpose and a key behavioral detail (redaction). However, it omits what 'recent' means (ordering) and does not mention pagination beyond the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' is fully defined in the input schema (type, default, range), but the description does not mention it at all. With 0% schema description coverage, the description should at least indicate that the number of orders can be controlled via this parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists recent orders with specific redaction of personal address and contact fields. The verb 'list' and resource 'orders' are specific, and the redaction detail distinguishes it from sibling tools like active_orders or get_order_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 does not provide explicit guidance on when to use this tool versus alternatives. While the context of listing recent orders with redaction is implied, it lacks direct comparison or usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pyaterochka_statusARead-onlyIdempotent
Show local setup state. Read-only; call this before shopping.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that it shows local setup state, which is the output context. It does not contradict annotations and provides complementary behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two very short sentences with no wasted words. Every part (state display, readonly nature, usage order) 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 tool is simple (no parameters, output schema exists). The description explains what it shows (local setup state) and when to use it (before shopping). This fully covers the necessary context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100% trivially. The description needs to add no parameter information, earning the baseline score of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain 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 'show's local setup state' and includes the directive 'call this before shopping'. It uses a specific verb-resource pair and differentiates itself from sibling tools that handle shopping actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'call this before shopping', giving a clear usage context. It does not mention alternatives, but the sibling list shows many other tools, so this guideline effectively positions the tool as a preparatory step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsBRead-onlyIdempotent
Search available products and prices at the selected store. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; the description adds 'Read-only' (consistent) and 'at the selected store'. No contradictions, but little added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with key info. No redundancy. Could include more, but efficient for its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema and annotations, the description lacks details on search behavior (e.g., matching logic, pagination, result structure). Insufficient for agents to fully understand 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?
Zero schema coverage (0%) and description provides no details on 'query' or 'limit' parameters. The agent cannot infer what query expects (e.g., product name, SKU) or how limit works.
Input schemas describe structure but not intent. Descriptions should explain 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 'Search' and the resource 'available products and prices at the selected store'. It differentiates from sibling tools like list_category_products and get_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_category_products or get_product. No mention of prerequisites or contextual cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_delivery_intervalBDestructiveIdempotent
Select EXPRESS, SUPERFAST, or a listed INTERVAL. Does not place an order.
| Name | Required | Description | Default |
|---|---|---|---|
| delivery_type | Yes | ||
| interval_uuid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=true. The description adds the clarification that it does not place an order, which is consistent. However, it does not elaborate on what state change occurs (e.g., saving selection) or any side effects, leaving room for ambiguity.
Agents need to know what a tool does to the 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 key options. No unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and two parameters, but the description omits any mention of the output, fails to explain that 'interval_uuid' is required when 'delivery_type' is 'INTERVAL', and does not reference the sibling tool 'list_delivery_intervals'. Context is insufficient for an agent to use the tool correctly without prior knowledge.
Complex tools with many parameters or behaviors need more documentation. 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 0%, so the description must compensate. It names the enum values for 'delivery_type' but does not explain the 'interval_uuid' parameter at all. The relationship between 'INTERVAL' and 'interval_uuid' is not clarified, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool selects among 'EXPRESS', 'SUPERFAST', or a listed 'INTERVAL', and explicitly notes that it does not place an order. This distinguishes it from ordering tools like 'confirm_order' or 'checkout_preview'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., after listing intervals with 'list_delivery_intervals', or prerequisites like having a store set). The tool's purpose is clear but context for usage is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_payment_methodADestructiveIdempotent
Choose a listed payment method and optionally remember its linked id.
Remembering stores only the upstream method id, never card number or CVV. New/unlinked cards cannot be remembered until Pyaterochka exposes them as linked payment methods after the official payment flow.
| Name | Required | Description | Default |
|---|---|---|---|
| payment_method_id | Yes | ||
| remember_for_future_orders | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by disclosing that only the upstream method ID is stored, never card numbers or CVVs, and that new/unlinked cards cannot be remembered until after the official payment flow. Annotations indicate mutability (destructiveHint=true) and idempotency, which align. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, followed by a key limitation. Every sentence adds valuable information without redundancy. It is appropriately sized for 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?
Given the simple tool (2 parameters, 1 required) with annotations providing safety context, the description covers the essential behavioral details (security of remembering, limitation for new cards). It does not explain the output schema, but that is available separately, so the description is reasonably complete for guiding 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 0%, so the description must compensate. It mentions the core action (choose a payment method) and the optional remember feature, but doesn't explicitly explain that 'payment_method_id' is an integer ID from a list, nor does it detail the 'remember_for_future_orders' boolean's meaning beyond 'optionally remember its linked id'. The description adds some context but could be more precise about parameter roles.
Input schemas describe structure but not intent. Descriptions should explain 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 'choose' and the resource 'listed payment method', and distinguishes it from siblings like 'list_payment_methods' (which only lists) and 'clear_preferred_payment_method' (which clears). The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for selecting a payment method from a list and optionally remembering it. It provides context about when remembering works (only for linked methods after official flow), but lacks explicit guidance on when to use this versus alternatives or when not to use it. It's clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_order_detailsADestructiveIdempotent
Set delivery details and comments. Does not charge or submit an order.
| Name | Required | Description | Default |
|---|---|---|---|
| flat | No | ||
| floor | No | ||
| entrance | No | ||
| picker_comment | No | ||
| courier_comment | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent hints. Description adds no-charge clarification but does not explain overwriting behavior or prerequisites.
Agents need to know what a tool does to the 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 action, 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?
Missing context on order state prerequisites and return value (output schema exists but not referenced). Adequate for a simple setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description only groups parameters as 'delivery details' and 'comments', not adding specific meaning for flat, floor, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it sets delivery details and comments, with a specific verb and resource. It distinguishes from siblings like confirm_order by explicitly saying it does not charge or submit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says 'Does not charge or submit an order,' guiding the agent to use this before finalizing. Does not name alternatives but implies the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_storeADestructiveIdempotent
Select a Pyaterochka delivery store by its SAP code. No purchase.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| store_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds that no purchase occurs, which is helpful but does not elaborate on the state change or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence front-loaded with the core action, and includes a succinct clarification about no purchase. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the action, the description is mostly adequate but lacks explanation of the 'label' parameter and the output schema, leaving some completeness 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?
With 0% schema description coverage, the description should explain parameters. It hints that store_id is an SAP code but fails to describe the optional 'label' parameter, leaving its purpose unclear.
Input schemas describe structure but not intent. Descriptions should explain 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 selects a delivery store by SAP code and explicitly clarifies it does not involve a purchase, distinguishing it from purchase-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for selecting a store by SAP code, but does not provide explicit guidance on when to use this tool versus alternatives like find_nearest_store or set_order_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cart_itemADestructiveIdempotent
Set exact cart quantity; zero removes the product. No charge.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | ||
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it confirms that setting quantity to zero removes the product (aligning with destructiveHint=true) and mentions 'No charge', indicating the operation does not incur a financial transaction. Annotations already provide idempotentHint and destructiveHint, so the description complements them well without 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 is front-loaded with the core action. Every word contributes essential information, achieving high efficiency with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, clear behavior) and the presence of an output schema (though not shown), the description covers the main usage aspects: exact quantity setting, deletion, and cost. It lacks explicit mention that the cart item must already exist, but the name implies it. Overall, it is sufficiently complete for a well-understood domain.
Complex tools with many parameters or behaviors need more documentation. 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 0%, meaning the description bears the burden of explaining parameters. It partially does so by stating 'Set exact cart quantity', which relates to the 'quantity' parameter but does not explicitly describe its range or validation. The 'product_id' parameter is not mentioned. This adds some value but is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Set exact cart quantity', and specifies a key behavior: 'zero removes the product'. This distinguishes it from sibling tools like add_to_cart (which may add or increment) and clear_cart (which removes all items). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly guide when to use this tool versus alternatives such as add_to_cart or clear_cart. It assumes the agent knows that an existing cart item must be targeted. No when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_cartARead-onlyIdempotent
Show the live cart. Requires a locally captured cart_get endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=true and destructiveHint=false. The description adds the behavioral requirement of a 'locally captured cart_get endpoint', which provides useful implementation context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loading the core purpose with no wasted words. It efficiently communicates the action and a key requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an output schema, the description provides sufficient context: what it does and a prerequisite. It is complete enough for safe invocation, though it could mention error states like 'no active cart'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, schema coverage is 100%. Per guidelines, the baseline for no parameters is 4. The description does not add parameter semantics, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain 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 'Show the live cart', which is a specific verb-resource combination. It uniquely identifies the tool among siblings (e.g., add_to_cart, update_cart_item, clear_cart) as a read-only view 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 does not provide any guidance on when to use this tool versus alternatives. It lacks context on prerequisites, exclusion conditions, or comparison to sibling tools like search_products or get_product.
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.
24 tool updates
v0.1.0- First observed
active_orders - First observed
add_to_cart - First observed
cancel_order - First observed
checkout_preview - First observed
clear_cart - First observed
clear_preferred_payment_method - First observed
confirm_order - First observed
find_nearest_store - First observed
get_order_status - First observed
get_product - First observed
list_cancel_reasons - First observed
list_categories - First observed
list_category_products - First observed
list_delivery_intervals - First observed
list_payment_methods - First observed
order_history - First observed
pyaterochka_status - First observed
search_products - First observed
select_delivery_interval - First observed
select_payment_method - First observed
set_order_details - First observed
set_store - First observed
update_cart_item - First observed
view_cart
TDQS
Scored across 24 tools
Each tool clearly targets a distinct action or resource, such as cart operations, product search, or order management, with no overlapping functionality.
Tool names follow a consistent verb_noun pattern with underscores, e.g., add_to_cart, list_categories, confirm_order, making them predictable and easy to navigate.
24 tools cover the full workflow of a grocery delivery service without being excessive, each serving a necessary function for the intended usage.
The tool set comprehensively covers store selection, product browsing, cart management, checkout, payment, order history, and cancelation, with no obvious gaps.
Maintenance
Related MCP Connectors
MCP server for Russian books search, details, and recommendation candidates.
MCP server for ua_e_commerce_price_tracker_mcp
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
- mcpOAuthcom.zomato
An MCP server that exposes functionalities to use Zomato's services.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Sweden's largest grocery chain Willys. Enables controlling your shopping cart, browsing orders, searching products, and getting AI-powered recommendations from any MCP client.4MIT
- AlicenseAqualityDmaintenanceMCP server for Open Food Facts, enabling food product lookup by barcode, search, nutrition facts, allergen checks, and eco-scores without an API key.8MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for integrating AI assistants with VkusVill services, allowing natural language access to VkusVill data and operations.1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for VkusVill grocery store, enabling product search, details retrieval, and cart link creation.3-