mcp-yandex-dostavka
This MCP server allows AI assistants to interact with Yandex Delivery B2B API for both express (same-day) and platform (next-day/pickup points) delivery — including pricing, order creation, tracking, courier monitoring, and pickup point listing — via natural language commands.
Express Delivery (Same-Day):
express_check_price: Estimate cost and ETA without creating a claim.express_create_claim: Create a claim, optionally auto-accept.express_get_claim: Get full claim details.express_accept_claim: Confirm and launch courier search.express_cancel_info: Check cancellation conditions.express_cancel_claim: Cancel a claim (may incur fee).express_search_claims: Search claims by filters.express_performer_position: Real-time courier GPS.express_tracking_links: Public tracking links.
Platform Delivery (Next-Day/Pickup Points):
platform_list_pickup_points: List PVZ, lockers, drop-off points.platform_create_offers: Calculate delivery options.platform_confirm_offer: Confirm and create an order.platform_get_request: Order status and details.platform_request_history: Status change history.platform_cancel_request: Cancel order (if allowed).
General & Safety:
raw_request: Call any API endpoint for features not covered by dedicated tools (e.g., tariffs, labels, acts, warehouses).The server handles idempotency (via
request_id) and retries to prevent duplicates.All tools are labeled with risk levels (read, write, destructive) to ensure safe usage.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-yandex-dostavkaПосчитай стоимость экспресс-доставки посылки 2 кг с Льва Толстого 16 на Тверскую 7."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Яндекс Доставка MCP
A1 Яндекс Доставка MCP позволяет управлять корпоративной доставкой из Claude, Codex, Cursor и других AI-приложений. Вы ставите задачу обычными словами, а ассистент обращается к вашему аккаунту Яндекс Доставки, рассчитывает стоимость, оформляет отправления и показывает их статус.
День в день по городу. Рассчитайте доставку, вызовите курьера, узнайте его местоположение и получите ссылку для получателя.
На следующий день и по России. Сравните доступные сроки и стоимость доставки до двери.
В ПВЗ и постаматы. Найдите подходящую точку, рассчитайте варианты и оформите выбранную доставку.
Сначала расчёт, затем заказ. Ассистент различает предварительную стоимость, подготовку отправления и момент, когда доставка действительно оформляется.
Без собственной интеграции. Внутри уже есть 16 готовых действий, схемы данных и правила безопасной работы с повторными запросами.
Подходит компаниям и предпринимателям, которые уже подключены к B2B API Яндекс Доставки и получили токен в личном кабинете. Это не сервис для частных отправителей.
Быстро узнать стоимость
Вы: Рассчитай доставку коробки 2 кг с Льва Толстого, 16 на Тверскую, 7.
Ассистент: Проверил маршрут через Яндекс Доставку и вернул актуальную стоимость, расстояние и примерное время подачи из вашего аккаунта.
Подключить сервер · Посмотреть сценарии · Открыть техническую документацию
Увидеть работу за минуту
Вы: Рассчитай доставку букета сегодня к 18:00 из офиса на Льва Толстого, 16 клиенту на Тверскую, 7.
Ассистент: Проверил маршрут и получил предварительную стоимость, расстояние и ETA из вашего аккаунта Яндекс Доставки.
Вы: Оформи доставку, если итоговая цена не выше 1 000 ₽.
Ассистент: Итоговая цена укладывается в лимит. Доставка оформлена, поиск курьера начался.
Вы: Где сейчас курьер и какую ссылку отправить получателю?
Ассистент: Получил текущую позицию курьера и публичную ссылку для отслеживания заказа.
Вы: Теперь найди варианты доставки этой коробки в Казань на следующий день: до двери, в ПВЗ или постамат.
Ассистент: Получил доступные варианты по срокам и стоимости. Для ПВЗ и постаматов покажу адреса, расписание и поддерживаемые способы оплаты.
Вы: Можно бесплатно отменить первую доставку?
Ассистент: Сначала проверил условия отмены. Покажу, доступна ли она сейчас, будет ли бесплатной и какая сумма спишется при платной отмене.
Примеры показывают последовательность доступных действий. Конкретные цены, сроки, статусы и доступность доставки всегда приходят из вашего аккаунта Яндекс Доставки.
Related MCP server: Yandex Delivery MCP
Содержание
Быстрый старт
Нужны Node.js 20+ и токен корпоративного клиента Яндекс Доставки.
Получите токен в личном кабинете Яндекс Доставки.
Добавьте MCP-сервер в своё AI-приложение.
mcp-yandex-dostavka запускается на вашем компьютере через npx, поэтому браузерные версии ChatGPT и Claude не могут подключить его напрямую.
Через интерфейс приложения:
Откройте Settings → MCP servers.
Нажмите Add server.
Выберите STDIO, затем укажите команду запуска
npx -y mcp-yandex-dostavka@latestи переменную окруженияYANDEX_DELIVERY_TOKENсо своим токеном.Нажмите Save, затем Restart.
Через командную строку:
codex mcp add yandex-dostavka \
--env YANDEX_DELIVERY_TOKEN=ваш_токен \
-- npx -y mcp-yandex-dostavka@latestПроверьте подключение:
codex mcp listКоманда сохраняет сервер в общей конфигурации Codex. Если Codex уже открыт, перезапустите его.
Актуальный официальный путь — Settings → Extensions. Для пользовательского desktop extension откройте Advanced settings → Extension Developer → Install Extension…, выберите файл .mcpb и следуйте подсказкам.
Этот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит .mcpb. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:
{
"mcpServers": {
"yandex-dostavka": {
"command": "npx",
"args": ["-y", "mcp-yandex-dostavka@latest"],
"env": {
"YANDEX_DELIVERY_TOKEN": "ваш_токен"
}
}
}
}В таких сборках сохраните его в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.
Сохраните файл и перезапустите Claude Desktop.
Официальная инструкция Claude Desktop
Откройте терминал и выполните:
claude mcp add \
--env YANDEX_DELIVERY_TOKEN=ваш_токен \
--transport stdio \
--scope user \
yandex-dostavka \
-- npx -y mcp-yandex-dostavka@latestПроверьте подключение:
claude mcp listОфициальная инструкция Claude Code
Пользовательский локальный сервер добавляется в Cursor через файл mcp.json:
macOS и Linux:
~/.cursor/mcp.jsonWindows:
%USERPROFILE%\.cursor\mcp.json
Создайте файл, если его ещё нет, и добавьте сервер. Если в файле уже есть другие серверы, сохраните их и добавьте только запись yandex-dostavka:
{
"mcpServers": {
"yandex-dostavka": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-yandex-dostavka@latest"],
"env": {
"YANDEX_DELIVERY_TOKEN": "ваш_токен"
}
}
}
}Сохраните файл. Если Cursor уже открыт, перезапустите его.
Откройте палитру команд:
⇧⌘Pна macOS илиCtrl+Shift+Pна Windows и Linux.Выполните команду MCP: Open User Configuration. Откроется пользовательский файл
mcp.json, доступный во всех проектах.Добавьте сервер. Если в файле уже есть другие настройки, сохраните их:
{
"inputs": [
{
"type": "promptString",
"id": "yandex-delivery-token",
"description": "Токен Яндекс Доставки",
"password": true
}
],
"servers": {
"yandex-dostavka": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-yandex-dostavka@latest"],
"env": {
"YANDEX_DELIVERY_TOKEN": "${input:yandex-delivery-token}"
}
}
}
}Сохраните файл. VS Code попросит токен при первом запуске сервера и сохранит его как скрытое значение.
Чтобы проверить сервер, выполните в палитре команд MCP: List Servers и выберите
yandex-dostavka.
Официальная инструкция VS Code
После подключения откройте новый диалог в выбранном приложении и попросите:
Рассчитай доставку коробки 2 кг с Льва Толстого, 16 на Тверскую, 7.
Что можно поручить
Доставка день в день по городу
Узнать стоимость. Рассчитать цену, расстояние и примерное время подачи курьера по адресам, весу и габаритам отправления.
Оформить отправление. Передать товары, адреса, контакты и требования к машине или курьеру.
Найти заказ. Искать отправления по статусу, телефону, периоду или номеру заказа вашей компании.
Следить за курьером. Получить его текущую позицию и публичную ссылку для получателя.
Отменить с известными последствиями. Сначала узнать, возможна ли отмена и будет ли она платной.
Доставка на следующий день и по России
Сравнить варианты. Получить доступные интервалы и стоимость доставки до двери.
Оформить выбранный вариант. Подтвердить подходящие срок, способ вручения и цену.
Проверить заказ. Узнать текущий статус и посмотреть историю его изменений.
Отменить заказ. Отправить запрос на отмену, пока текущий статус это позволяет.
Доставка в ПВЗ и постаматы
Найти подходящую точку. Искать ПВЗ и постаматы по городу, координатам, типу и способу оплаты.
Проверить условия. Посмотреть адрес, расписание, доступность самопривоза и способы оплаты.
Рассчитать и оформить. Получить варианты доставки в выбранную точку и подтвердить подходящий.
Как ассистент работает с доставкой
Для доставки день в день ассистент сначала рассчитывает маршрут. Когда вы просите оформить отправление, он передаёт данные в Яндекс Доставку, дожидается итоговой оценки и запускает поиск курьера. После этого можно узнавать статус, смотреть позицию курьера и получать ссылку для отслеживания.
Для доставки на следующий день, по России, в ПВЗ или постамат ассистент получает доступные варианты со сроками и стоимостью. Вы выбираете подходящий вариант, после чего ассистент оформляет заказ и может читать его текущий статус и историю.
Значения не придумываются. Стоимость, ETA, доступные интервалы, адреса точек и статусы приходят из вашего аккаунта Яндекс Доставки.
Ассистент не наблюдает за заказами постоянно. Он проверяет состояние доставки, когда вы ставите ему задачу. Если AI-приложение поддерживает задачи по расписанию, в его интерфейсе можно настроить регулярную проверку — например, каждый час узнавать статус заказа до вручения.
Когда создаётся реальный заказ
Что вы просите | Что происходит | Доставка оформлена |
Рассчитать доставку день в день | Ассистент получает предварительную цену, расстояние и ETA | Нет |
Подготовить доставку день в день | Создаётся заявка и получается итоговая оценка, но поиск курьера ещё не начинается | Ещё нет |
Оформить доставку день в день | Ассистент подтверждает оценённую заявку и запускает поиск курьера | Да |
Рассчитать доставку на следующий день, до ПВЗ или постамата | Ассистент получает доступные варианты и цены | Нет |
Оформить выбранный вариант | Ассистент подтверждает вариант и создаёт заказ | Да |
Проверить условия отмены | Ассистент узнаёт, возможна ли отмена и сколько она стоит | Нет |
Отменить доставку | Ассистент изменяет реальный заказ; отмена может быть платной | Да, заказ изменяется |
Точная команда на оформление или отмену разрешает соответствующее действие. Поведение дополнительных подтверждений зависит от AI-приложения: некоторые клиенты спрашивают разрешение перед каждой записью, другие следуют собственным политикам.
Получение доступа к API
Зарегистрируйтесь как корпоративный клиент на dostavka.yandex.ru и заключите договор. Для доставки на следующий день, по России, в ПВЗ и постаматы также подключите станцию отгрузки.
В личном кабинете откройте вкладку «Интеграции» и нажмите «Получить токен».
Передайте токен серверу в
YANDEX_DELIVERY_TOKEN.
Токен действует неограниченное время, но перестаёт работать после смены пароля личного кабинета. Подробнее: доступ к API доставки день в день и доступ к API доставки на другой день.
Токен хранится открытым текстом в конфигурации AI-приложения. Относитесь к нему как к паролю и не добавляйте конфигурацию с реальным токеном в Git.
Один или два токена
Обычно достаточно общего YANDEX_DELIVERY_TOKEN. Если разные виды доставки подключены в разных кабинетах, задайте два отдельных токена:
YANDEX_DELIVERY_EXPRESS_TOKEN— токен доставки день в день;YANDEX_DELIVERY_PLATFORM_TOKEN— токен доставки на другой день, по России, в ПВЗ и постаматы.
Если общего токена нет, серверу нужны оба отдельных токена.
Тестовая среда
Тестовая среда есть только для доставки на другой день, по России, в ПВЗ и постаматы. Задайте YANDEX_DELIVERY_PLATFORM_BASE_URL=https://b2b.taxi.tst.yandex.net и используйте тестовые реквизиты из официальной инструкции. Она обрабатывает только московские адреса.
Для доставки день в день тестовой среды нет: безопасно проверять расчёт стоимости и чтение существующих заявок, а оформленные отправления попадают в рабочую систему.
Технические настройки
На техническом уровне сервер работает с двумя независимыми частями B2B API Яндекс Доставки: API доставки день в день и API доставки на другой день. У них могут быть разные токены, адреса серверов, форматы денег и единицы измерения — MCP-сервер выбирает нужные параметры сам.
Переменная | Обязательна | По умолчанию | Что задаёт |
| да* | — | Общий Bearer-токен для обоих API |
| нет | — | Отдельный токен доставки день в день |
| нет | — | Отдельный токен доставки на другой день |
| нет |
| Корневой URL API доставки день в день |
| нет |
| Корневой URL API доставки на другой день |
| нет |
| Заголовок |
| нет |
| Таймаут одного запроса, мс |
| нет |
| Число повторов временных ошибок |
| нет | включена |
|
* Общий токен не нужен, если заданы оба отдельных токена.
Данные и телеметрия
Запросы к Яндекс Доставке
Сервер запускается локально и обращается к API Яндекс Доставки напрямую. Bearer-токен добавляется только к запросам выбранного API. Даже универсальный инструмент принимает относительный путь: если он ведёт на внешний сервер, запрос блокируется, чтобы токен не ушёл на чужой адрес.
Анонимная телеметрия
По умолчанию сервер отправляет на usage.gistrec.cloud три вида технических событий: запуск сервера, имя вызванного инструмента и код причины старта без настроенного токена.
В событие входят случайный идентификатор установки, версия пакета, имя и версия AI-приложения, версия Node.js и операционная система. Токен, данные аккаунта, аргументы инструментов и тексты запросов не читаются и не отправляются. Отправка выполняется в фоне с таймаутом 2 секунды и не влияет на работу сервера.
Чтобы отключить телеметрию для MCP-серверов A1, добавьте в конфигурацию:
ASKADS_TELEMETRY=0Реализация находится в src/telemetry.ts.
Ограничения
Это не только чтение. Ассистент умеет оформлять и отменять настоящие доставки; отмена может быть платной.
AI-приложение влияет на подтверждения. MCP-сервер сообщает тип каждого действия, но решение о дополнительном вопросе перед записью принимает приложение и его агент.
Нет тестовой среды для доставки день в день. Безопасно проверить можно расчёт стоимости и чтение существующих заявок.
Нет постоянного наблюдения. Сервер работает во время вызова из AI-приложения. Если приложение поддерживает задачи по расписанию, настройте в его интерфейсе регулярную проверку статуса.
При временном ограничении возможна задержка. Сервер сам подождёт и повторит запрос. Если Яндекс Доставка по-прежнему недоступна, попробуйте ещё раз позже.
Нет автоматического отката. Возможность и стоимость отмены зависят от текущего статуса и правил Яндекс Доставки.
Техническая документация
Каталог 16 MCP-возможностей — отдельные страницы инструментов на языке пользовательских задач.
Технический справочник инструментов — входные данные, ответы, статусы, ошибки, форматы денег и единицы измерения.
Разработка — локальный запуск, проверки, сборка и безопасная smoke-проверка.
Публикация — выпуск npm-пакета и листинг в каталогах MCP.
npm-пакет — опубликованная версия
mcp-yandex-dostavka.API доставки день в день и API доставки на другой день — официальная документация Яндекс Доставки.
Помощь и обратная связь
Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.
Available Tools
16 toolsexpress_accept_claimЭкспресс: подтвердить заявкуA
Подтверждает заявку после успешной оценки (status ready_for_approval) и запускает поиск курьера — с этого момента доставка реально заказана. version берётся из express_get_claim. Ошибки 409: inappropriate_status (заявка не в подходящем статусе), old_version (устаревшая версия — перечитайте заявку), offer_expired / offer_already_used (оффер истёк — пересоздайте заявку).
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | Версия заявки из последнего ответа express_get_claim. | |
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate non-read-only and non-idempotent behavior, the description adds important context: it triggers a courier search and marks the delivery as actually ordered. It also discloses error conditions (409 with specific codes) and recovery steps, which is valuable beyond the structured 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 compact and front-loaded: it states the main action and consequence in the first sentence, then provides essential operational and error-handling details. Every sentence serves a purpose with no filler, making it easy to scan.
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 as a mutating action with potential 409 errors, the description adequately covers preconditions, version source, and error recovery. It lacks an explicit description of the return value, but since there is no output schema, the description still provides enough context for correct invocation in the broader flow of express_* tools.
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 detailed descriptions for both parameters. The description adds extra value by clarifying that the version is derived from express_get_claim, reinforcing the schema's provenance guidance for claim_id. This goes beyond simply repeating schema 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 clearly states the tool's action: confirms a claim after successful evaluation (status ready_for_approval) and initiates courier search, making the delivery actually ordered. It specifies the resource (claim) and the specific context, distinguishing it from sibling tools like express_cancel_claim or express_create_claim.
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 is meant for claims already in ready_for_approval status, and it instructs that the version should be taken from express_get_claim. It doesn't explicitly list alternative tools to avoid, but the required status and error handling imply when it is appropriate. This is slightly above baseline but not fully explicit about 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.
express_cancel_claimЭкспресс: отменить заявкуADestructive
Отменяет заявку (в том числе уже подтверждённую). Перед вызовом получите условия отмены через express_cancel_info и передайте её cancel_state: при paid спишется стоимость отмены. version берётся из express_get_claim. Ошибки 409: устаревшая версия, недопустимый статус или бесплатная отмена уже недоступна.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | Версия заявки из последнего ответа express_get_claim. | |
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. | |
| cancel_state | Yes | Режим отмены из express_cancel_info: free — бесплатно, paid — платно. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description warns about financial consequences (paid cancellation fee), version-based concurrency (errors 409), and the ability to cancel confirmed claims. This adds valuable behavioral context without contradicting any 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 compact, front-loaded with the main action, and efficiently covers prerequisites and error handling in three sentences 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 destructive financial operation, the description adequately covers prerequisites, fee consequences, and error conditions. It doesn't describe the output, but no output schema exists, and the 100% parameter schema 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?
The schema already covers all three parameters with detailed descriptions and an enum for cancel_state. The description reinforces where to get version and cancel_state but adds little new semantic information beyond the 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 that the tool cancels a claim, including already confirmed ones, using a specific verb and resource. It distinguishes itself from siblings like express_cancel_info and express_accept_claim by focusing on the cancellation 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?
It explicitly instructs to call express_cancel_info first and pass its cancel_state, and to take version from express_get_claim. This provides a clear workflow and prerequisites, though it doesn't explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
express_cancel_infoЭкспресс: условия отменыARead-onlyIdempotent
Условия отмены заявки — вызывайте ПЕРЕД express_cancel_claim. Возвращает cancel_state: free (бесплатная), paid (платная — вернётся price/price_with_vat и currency) или unavailable (отменить уже нельзя).
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructiveHint, and the description adds valuable behavioral context: it details the return structure (cancel_state with meanings) and indicates that paid cancellations return price fields. This goes beyond what annotations provide and clarifies the tool's role in the cancellation flow.
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 purpose, followed by return value details. No filler or repetition of schema information, earning its place efficiently.
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 lacking an output schema, the description completely explains the return values and their implications. Combined with the detailed schema for the single parameter, this tool is fully specified for safe and effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema description covers 100% of the parameter meaning (claim_id, its length, and source). The description does not add extra parameter semantics, but since schema coverage is high, a 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 clearly states this tool returns cancellation conditions for a claim and specifies the cancel_state values (free, paid, unavailable). It distinguishes itself from the sibling express_cancel_claim by instructing to call it BEFORE cancellation, making its purpose and scope 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?
Explicitly instructs the agent to call this tool BEFORE express_cancel_claim, providing a clear when-to-use directive. It also implies usage for checking cancelability and pricing, which differentiates it from other siblings like express_get_claim or express_check_price.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
express_check_priceЭкспресс: оценка стоимостиARead-onlyIdempotent
Первичная оценка стоимости экспресс-доставки (день в день) БЕЗ создания заявки. Возвращает price (строка-decimal, не число!), currency_rules {code, sign}, distance_meters, eta (минуты) и zone_id. Точки маршрута задаются координатами [долгота, широта] и/или адресом строкой. Типовые ошибки: 400 address_not_found (адрес не распознан), 409 estimating.cant_construct_route (маршрут не строится).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Товары/грузоместа. | |
| requirements | No | Требования к доставке (класс, тип кузова, доп. опции). | |
| route_points | Yes | Точки маршрута: координаты и/или адрес (хотя бы одно из двух у каждой точки). | |
| skip_door_to_door | No | true — отключить доставку до двери (по умолчанию false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds important behavioral details: price is returned as a string-decimal, not a number; typical errors (400 address_not_found, 409 estimating.cant_construct_route) are disclosed; and the output fields are listed. This goes beyond the annotations and aids client handling.
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 immediately states the primary purpose and the key differentiator (no order creation). It then lists return fields and typical errors in a compact, information-dense manner. Every sentence earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description adequately covers return values (price, currency_rules, distance_meters, eta, zone_id) and common error responses. It also notes the coordinate order and the option to use addresses. It does not exhaustively describe every possible error or edge case, but it provides sufficient context for an agent to use the tool effectively.
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 mentions that route points can be coordinates and/or address, which is also in the schema. It does not add any extra meaning beyond the schema, so a 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 clearly states the tool's function: 'Первичная оценка стоимости экспресс-доставки (день в день) БЕЗ создания заявки' (primary cost estimate for express delivery without creating an order). It explicitly distinguishes itself from siblings by mentioning the absence of order creation, and specifies the resource (express delivery) and the action (estimation). The mention of returning price, eta, etc., further clarifies 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 provides clear context for when to use this tool: for preliminary cost estimation, and explicitly states 'without creating an order' (БЕЗ создания заявки), which serves as a when-not-to-use for order creation. However, it does not explicitly name alternative tools like express_create_claim, so it stops 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.
express_create_claimЭкспресс: создать заявкуA
Создаёт заявку на экспресс-доставку. ВАЖНО: заявка не запускается сразу — после создания она проходит оценку (status: new → estimating → ready_for_approval), затем её нужно подтвердить инструментом express_accept_claim; либо передайте auto_accept=true. Возвращает id (claim_id), status, version, route_points, pricing, created_ts. Идемпотентность обеспечивает request_id: повторный вызов с тем же request_id вернёт ту же заявку, а не создаст дубликат.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | Желаемое время подачи курьера (ISO-8601), например 2026-08-10T12:00:00+03:00. | |
| items | Yes | Товары к доставке. Ставка НДС передаётся кодами vat_none | vat0 | vat10 | vat20. | |
| comment | No | Комментарий курьеру (до 7000 символов). | |
| skip_act | No | true — не формировать акт приёма-передачи. | |
| request_id | No | Токен идемпотентности (1–128 символов, query-параметр). Если не задан — UUID сгенерируется автоматически. | |
| auto_accept | No | true — подтвердить заявку автоматически после успешной оценки (без express_accept_claim). | |
| route_points | Yes | Точки маршрута (2–300): как минимум source и destination. | |
| same_day_data | No | Параметры доставки «в течение дня» (для taxi_class=sdd_multislot): {delivery_interval: {from, to}}. | |
| optional_return | No | true — при неудачном вручении курьер не возвращает товары отправителю. | |
| emergency_contact | No | Контакт на случай проблем с доставкой. | |
| skip_door_to_door | No | true — не подниматься до двери (вручение у подъезда). | |
| skip_client_notify | No | true — не отправлять SMS/пуши получателю. | |
| callback_properties | No | Webhook о смене статусов заявки. | |
| client_requirements | Yes | Требования к доставке; taxi_class обязателен. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the non-obvious lifecycle: claim is not immediately active, status passes through new → estimating → ready_for_approval, and confirmation is required. It also explains idempotency semantics tied to request_id, complementing the idempotentHint=false annotation by clarifying the conditional behavior. No annotation 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 four sentences long, with the critical 'ВАЖНО' warning up front. Every sentence earns its place: purpose, workflow, return fields, and idempotency. 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 14 params, nested objects, and no output schema, the description covers the essential behavioral context: return fields (id, status, version, route_points, pricing, created_ts), the estimation/confirmation workflow, and idempotency. Parameter construction is not described but schema satisfies that need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with detailed descriptions for all 14 parameters, including auto_accept and request_id. The description reiterates these but does not add new parameter-level meaning 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 opens with 'Создаёт заявку на экспресс-доставку' (creates an express delivery claim), using a specific verb and resource. It also distinguishes from siblings by stating that the claim must be confirmed via express_accept_claim or auto_accept=true, clearly situating this as the creation step in the workflow.
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 workflow context: the claim goes through estimation and needs subsequent confirmation via express_accept_claim, or the agent can pass auto_accept=true. This implies when to use this tool versus the acceptance tool, though it doesn't mention how to choose between this and pricing/sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
express_get_claimЭкспресс: информация о заявкеARead-onlyIdempotent
Полная информация по заявке: status, version (нужен для accept/cancel), items, route_points, pricing {offer, final_price, currency}, performer_info (имя курьера, транспорт), eta, created_ts/updated_ts. Статусы: new, estimating, ready_for_approval, accepted, performer_lookup, performer_found, performer_not_found, pickup_arrived, pickuped, delivery_arrived, delivered, returning, returned, failed, cancelled, cancelled_by_taxi. ВНИМАНИЕ: ошибки оценки могут прийти массивом error_messages [{code, message}] внутри успешного 200-ответа — проверяйте и HTTP-ошибку, и это поле.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having readOnlyHint and idempotentHint annotations, the description adds a crucial behavioral warning: error_messages may appear inside a successful 200 response. This goes beyond annotations and is valuable for correct handling.
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 main purpose and includes a concise field list, but the long enumeration of statuses adds some bulk. Still, every element (fields, statuses, warning) serves a purpose, so it earns a 4.
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 fills the gap by listing all key response fields (status, version, items, pricing, performer_info, eta, timestamps) and even enumerates possible status values. The additional error_messages caveat makes it fully contextual for a get 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 single parameter claim_id is fully described in the schema (including format and source). The description does not add extra parameter-level detail, so it relies on the schema's 100% coverage, yielding the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Полная информация по заявке' and enumerates the fields returned, making it clear this is a read/get operation for claim details. It also lists possible statuses, distinguishing it from sibling tools like accept/cancel.
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 notes that the version field is needed for accept/cancel, providing a usage hint. However, it does not explicitly mention when not to use this tool or name alternative tools for specific scenarios, 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.
express_performer_positionЭкспресс: позиция курьераARead-onlyIdempotent
Текущая геопозиция курьера по активной заявке: position {lat, lon, timestamp (unix), accuracy, speed (м/с), direction (0–360°)} и route_points с sharing_link. Ошибки: 404 — курьер/позиция не найдены, 409 — заявка не в активном статусе.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds substantial value by detailing the response structure (lat, lon, timestamp, accuracy, speed, direction, route_points) and error codes (404, 409), giving the agent a clear expectation of behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the purpose, and includes only essential information (response shape and error codes). No redundant words 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 read-only operation with one parameter and no output schema, the description is remarkably complete: it specifies the response fields, error conditions, and usage context. All necessary information is provided without needing to consult other tools or documentation.
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 only parameter (claim_id), and the schema already explains its origin and length. The description does not add further parameter-specific semantics, 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 that the tool returns the current geolocation of the courier for an active claim, with specific response fields (position, route_points, sharing_link). This distinguishes it from sibling tools like express_get_claim (claim details) and express_tracking_links (tracking links). The verb is implied but unambiguous from the resource naming.
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 specifies that the tool applies to 'active claim' and mentions a 409 error when the claim is not in active status, giving clear context on when it is appropriate to use. However, it does not explicitly name alternative tools or provide 'when-not-to-use' guidance, 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.
express_search_claimsЭкспресс: поиск заявокARead-onlyIdempotent
Поиск заявок по фильтрам с пагинацией (сортировка — по дате создания). Возвращает claims (каждая — как в express_get_claim) и cursor для следующей страницы. Пагинация: либо offset/limit, либо курсорная — передайте cursor из предыдущего ответа (тогда остальные фильтры не нужны).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Сколько заявок вернуть (1–1000). | |
| phone | No | Фильтр по телефону из контактов заявки. | |
| state | No | Группа статусов: active — активные, finished — завершённые, delayed — отложенные. | |
| cursor | No | Курсор из предыдущего ответа — альтернатива offset/limit. | |
| due_to | No | Подача не позднее (ISO-8601). | |
| offset | No | Смещение offset-пагинации (по умолчанию 0). | |
| status | No | Фильтр по статусу. Известные статусы: new, estimating, ready_for_approval, accepted, performer_lookup, performer_found, performer_not_found, pickup_arrived, pickuped, delivery_arrived, delivered, returning, returned, failed, cancelled, cancelled_by_taxi. | |
| claim_id | No | Фильтр по id заявки. | |
| due_from | No | Подача не ранее (ISO-8601). | |
| created_to | No | Создана не позднее (ISO-8601). | |
| created_from | No | Создана не ранее (ISO-8601). | |
| external_order_id | No | Фильтр по внешнему id заказа. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds valuable behavioral context: sorting by creation date, return of a cursor, and the rule that passing cursor makes other filters unnecessary. 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?
Two sentences, front-loaded with purpose, followed by essential pagination details. 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 12 parameters are all schema-described and annotations are present, the description covers return shape, pagination, and sorting. It lacks explicit error cases but is otherwise complete for a search 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 covers 100% of parameters. The description supplements this by clarifying the relationship between cursor, offset, and limit, and that cursor supersedes other filters. This adds semantic 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 states 'Поиск заявок по фильтрам с пагинацией' (search claims by filters with pagination), specifying the verb, resource, and sorting. It distinguishes from sibling express_get_claim by noting the return format matches that tool while this one searches multiple claims.
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 explains pagination options (offset/limit vs cursor) and the cursor behavior, giving clear context for usage. It does not explicitly contrast with sibling tools, but the search-vs-single-claim distinction is implied via the reference to express_get_claim.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
express_tracking_linksЭкспресс: ссылки для отслеживанияARead-onlyIdempotent
Публичные ссылки для отслеживания курьера — их можно отдавать получателю. Возвращает route_points [{id, type, visit_order, sharing_link}]; sharing_link доступен только для точек type=destination. Ошибки 409: inappropriate_status, unknown_tracking_links.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | Yes | Идентификатор заявки (claim_id, 32–64 символа) из ответа express_create_claim или express_search_claims. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond that: the exact response structure, the constraint that sharing_link exists only for destination points, and the specific 409 error codes (inappropriate_status, unknown_tracking_links). This enriches the agent's understanding of expected 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 sentences, front-loaded with the main purpose, and includes only essential details: output structure, sharing_link constraint, and error codes. 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?
For a simple single-parameter read-only tool with no output schema, the description adequately explains the return value, constraints on the data, and potential errors. It is complete enough for an agent to understand what to expect and how to interpret results.
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 100% coverage for the sole parameter (claim_id) with a clear description of its origin and format. The tool description adds no additional parameter semantics, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns public tracking links for a courier that can be shared with the recipient. It provides the output structure (route_points with id, type, visit_order, sharing_link) and specifies that sharing_link is only available for destination points, which distinguishes it from sibling tools like express_get_claim or express_performer_position.
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 context for when to use the tool: to obtain public tracking links intended for the recipient. It does not explicitly name alternatives or when not to use it, but the context is clear and supported by the distinction of sharing_link for destination points only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_cancel_requestПлатформа: отменить заказADestructive
Отменяет заказ в логистической платформе. Курьерский заказ можно отменить до статуса DELIVERY_TRANSPORTATION_RECIPIENT (передача получателю). Возвращает status (CREATED | SUCCESS | ERROR), reason и description. Ошибки: 403 — чужой заказ/нет прав, 404 — не найден.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | id заказа в платформе (из platform_confirm_offer). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses important behavioral context: the cancellation is conditional on order status, it returns specific fields (status, reason, description), and it lists error codes 403 and 404. This provides the agent with actionable expectations not present in the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each serving a distinct purpose: stating the action, specifying the cancellation scope and return values, and listing error codes. There is no redundancy or excessive detail.
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 cancellation tool with annotations covering safety and destructiveness, the description provides all necessary operational context: the cancellation precondition, return shape, and error semantics. Even without an output schema, an agent can correctly invoke 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 single parameter request_id is fully described in the schema (id заказа в платформе (из platform_confirm_offer)), giving 100% coverage. The description adds no additional parameter-level detail, 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 action: 'Отменяет заказ в логистической платформе' (cancels an order in the logistics platform). It also distinguishes from siblings like express_cancel_claim by specifying 'Курьерский заказ' (courier order) and the platform context, 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?
The description provides a clear usage condition: cancellation is possible only up to the status DELIVERY_TRANSPORTATION_RECIPIENT, which tells the agent when this tool is applicable. However, it does not explicitly mention alternatives (e.g., express_cancel_claim for express orders), 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.
platform_confirm_offerПлатформа: подтвердить офферA
Бронирует выбранный оффер — СОЗДАЁТ заказ в логистической платформе. Возвращает request_id (id заказа, например «77241d8009bb46d0bff5c65a73077bcd-udp») — используйте его в platform_get_request, platform_request_history и platform_cancel_request. Оффер должен быть не просрочен (см. expires_at из platform_create_offers), иначе 400 bad_request.
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | offer_id выбранного варианта из ответа platform_create_offers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and idempotentHint=false. The description adds behavioral details: it creates an order, returns a request_id, and can fail with 400 if the offer is expired. This goes beyond the annotations without contradicting them.
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 adding necessary information: purpose, return value and related tools, and a critical error condition. No fluff, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers all essential aspects: what it does, what it returns, how to use that return value, and when it might fail. The annotations cover idempotency and read-only hints, so 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?
The schema provides 100% coverage of the only parameter (offer_id) with a description tying it to platform_create_offers. The description adds extra semantic context: the offer must not be expired and should be the selected one, reinforcing the parameter's meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Бронирует выбранный оффер — СОЗДАЁТ заказ' (books the selected offer — creates an order). This distinguishes it from sibling tools like platform_create_offers (which creates offers) and platform_get_request (which reads requests).
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 usage context: it is used after receiving an offer from platform_create_offers, and the resulting request_id is meant to be used with platform_get_request, platform_request_history, and platform_cancel_request. It also mentions a precondition (offer not expired). No explicit exclusions for when not to use it, but the workflow is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_create_offersПлатформа: рассчитать варианты доставкиA
Рассчитывает варианты доставки (офферы) для заказа «в другой день» (НДД/ПВЗ). Возвращает offers [{offer_id, expires_at, offer_details {delivery_interval {min, max, policy}, pickup_interval, pricing, pricing_total, pricing_commission_on_delivery_payment}}]. Оффер действует до expires_at — выбранный вариант бронируется инструментом platform_confirm_offer (до подтверждения заказ НЕ создан). Ошибка 400 no_delivery_options — на выбранный интервал вариантов доставки нет. Денежные суммы — в копейках (целые числа).
| Name | Required | Description | Default |
|---|---|---|---|
| info | Yes | Служебная информация о заказе. | |
| items | Yes | Товары заказа. | |
| places | Yes | Грузоместа (коробки). | |
| source | Yes | Откуда забирать отправление. | |
| destination | Yes | Куда доставить: platform_station (ПВЗ/постамат) ИЛИ custom_location (адрес курьером). | |
| billing_info | Yes | Параметры оплаты. | |
| recipient_info | Yes | Получатель. | |
| forbid_unboxing | No | true — запретить вскрытие при получении. | |
| last_mile_policy | Yes | Последняя миля: time_interval — курьерская доставка в интервал, self_pickup — самовывоз из ПВЗ/постамата. | |
| particular_items_refuse | No | true — разрешить частичный выкуп (отказ от части товаров). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavioral context beyond annotations: the order is not created until confirmation, offer is valid until expires_at, and money amounts are in kopecks. It also exposes the specific error case. While it doesn't enumerate all side effects, it clarifies the state lifecycle.
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 paragraph that front-loads the main purpose, then packs essential details (response structure, workflow, error, units) without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description provides a partial response structure, error handling, and workflow context, which is substantial for a 10-parameter tool. It misses explicit alternatives to express tools, but the sibling list helps fill that 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 description coverage is 100%, so each parameter is already explained in the schema. The description adds cross-cutting details (kopecks, error condition) but does not provide per-parameter meaning beyond what the schema offers, 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 states it calculates delivery options (offers) for 'another day' orders, using specific verbs and resources. It also distinguishes itself from the sibling tool platform_confirm_offer by explaining that the selected offer is booked there.
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 describes the workflow: calculate offers first, then use platform_confirm_offer to book. It also provides an error condition (400 no_delivery_options) for when no options exist. However, it does not explicitly contrast with express delivery siblings, so exclusion guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_get_requestПлатформа: информация о заказеARead-onlyIdempotent
Информация о заказе НДД: state {status (например CREATED), description, timestamp, timestamp_utc, reason}, request (адреса, товары, получатель) и courier_order_id. Возможные причины отмены: SHOP_CANCELLED, USER_CHANGED_MIND, DELIVERY_PROBLEMS, BROKEN_ITEM и др.
| Name | Required | Description | Default |
|---|---|---|---|
| slim | No | true — сокращённый ответ. | |
| request_id | Yes | id заказа в платформе (из platform_confirm_offer). | |
| request_code | No | Номер заказа в системе заказчика (дополнительный фильтр). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the response fields (state, request, courier_order_id) and enumerating possible cancellation reasons (SHOP_CANCELLED, USER_CHANGED_MIND, etc.), which is useful contextual detail beyond the structured metadata.
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 efficiently lists key response elements. It's not overly verbose, though the inclusion of many cancellation reason codes makes it slightly run-on.
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 tool with no output schema, the description covers the main output structure and explains possible state reasons. It doesn't explain the slim parameter or request_code filter behavior, but those are documented in the schema, so the description 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 provides complete descriptions for all three parameters (request_id, slim, request_code), so the description adds no additional parameter-level meaning. It mentions courier_order_id, but that is an output field, not a 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 names the resource (order) and lists the specific contents (state, request, courier_order_id), making it clear this is an order-information tool. However, it uses a noun phrase ('Информация о заказе') rather than an explicit verb like 'retrieve' or 'get', and it doesn't explicitly contrast with 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?
There is no guidance on when to use this tool versus alternatives such as platform_request_history, raw_request, or platform_cancel_request. The description doesn't state prerequisites, exclusions, or typical use-cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_list_pickup_pointsПлатформа: список ПВЗ и постаматовARead-onlyIdempotent
Список ПВЗ, постаматов и точек самопривоза платформенного контура (доставка «в другой день»). Возвращает points [{id, operator_id, name, type, position {latitude, longitude}, address, payment_methods, schedule, available_for_dropoff, dayoffs}]. id точки используется как platform_station в destination инструмента platform_create_offers. ВНИМАНИЕ: пустое тело вернёт ВСЕ точки (их очень много) — задавайте хотя бы один фильтр (geo_id, диапазон координат или pickup_point_ids).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Тип точки: pickup_point — ПВЗ, terminal — постамат, warehouse — точка самопривоза. | |
| geo_id | No | Гео-id города/региона по геобазе Яндекса, например 213 — Москва. | |
| latitude | No | Диапазон по широте {from, to}. | |
| longitude | No | Диапазон по долготе {from, to}. | |
| operator_ids | No | Фильтр по операторам точек. | |
| payment_method | No | Только точки, поддерживающие способ оплаты: already_paid, card_on_receipt, postpay. | |
| payment_methods | No | Несколько способов оплаты сразу. | |
| pickup_services | No | Фильтр по доступным услугам точки. | |
| pickup_point_ids | No | Точечный запрос по id точек. | |
| is_yandex_branded | No | true — только брендированные ПВЗ Яндекса. | |
| available_for_dropoff | No | true — только точки, куда можно самопривозить отправления. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, and idempotent behavior, so the description adds value by specifying the exact return fields, warning about the unbounded empty query, and explaining the id's role in other tools. It does not contradict 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 three focused sentences: functionality and return format, cross-reference, and a critical usage warning. It is front-loaded and contains no redundant text.
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 read-only nature, complete schema coverage, and lack of output schema, the description adequately covers return structure and a key usage caveat. It doesn't elaborate on every field's semantics or pagination, but the schema sufficiently handles parameter details.
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 all 11 parameters, so the baseline is 3. The description only generically mentions filters (geo_id, coordinate range, pickup_point_ids) and does not add per-parameter 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?
The description uses the specific verb 'Список' (list) with a clear resource ('ПВЗ, постаматов и точек самопривоза') and distinguishes from express siblings by noting the platform contour and delivery 'в другой день'. This makes 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?
It identifies the platform-specific context and cross-references platform_create_offers, indicating a concrete use case. The warning about empty bodies and filter recommendations provides practical guidance, though it doesn't explicitly state when to avoid this tool in favor of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platform_request_historyПлатформа: история статусов заказаARead-onlyIdempotent
История смены статусов заказа НДД: state_history [{status, description, timestamp (unix), timestamp_utc (ISO-8601), reason?}] — от создания до текущего момента.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | id заказа в платформе (из platform_confirm_offer). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context beyond annotations by detailing the return structure (status, description, timestamps, optional reason) and the temporal scope ('от создания до текущего момента'). This helps the agent understand what data will be returned without needing an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence and front-loads the purpose. It packs the output format into the sentence without excessive wording. The only minor issue is the unexplained acronym 'НДД', which might confuse agents unfamiliar with the domain, so it loses one point.
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 read-only tool with strong annotations, the description is comprehensive. It specifies the output structure and temporal scope, which is essential since there is no output schema. The presence of siblings is well-handled by the clarity of the tool's unique purpose. No significant gaps remain.
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 only parameter (request_id) and its description already explains that it is the order ID from platform_confirm_offer. The tool description does not add additional parameter semantics, so it does not exceed the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the history of order status changes ('История смены статусов заказа') and specifies the exact output structure (state_history array with fields). This distinguishes it from sibling tools like platform_get_request, which presumably fetches the current request state rather than its full timeline.
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: it is used to get the history of status changes from creation to the current moment. It does not explicitly name alternatives or exclusions, but the purpose is so specific that an agent can infer when to use this tool. The schema also hints that the request_id comes from platform_confirm_offer, which adds prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_requestПроизвольный вызов API Яндекс ДоставкиADestructive
Запасной выход: прямой вызов любого метода B2B API Яндекс Доставки — для эндпоинтов без выделенного инструмента (тарифы, points-eta, ярлыки/акты, мерчанты, склады, отгрузки, proof-of-delivery и т.д.). contour выбирает контур и хост: express — b2b.taxi.yandex.net (пути вида «b2b/cargo/integration/v2/...»), platform — b2b-authproxy.taxi.yandex.net (пути вида «api/b2b/platform/...»). query — параметры строки запроса, body отправляется как JSON. ОСТОРОЖНО: инструмент может выполнять и изменяющие операции; 5xx/сетевые ошибки ретраятся только для GET.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON-тело запроса. | |
| path | Yes | Относительный путь API, например "b2b/cargo/integration/v2/claims/info" или "api/b2b/platform/request/info". | |
| query | No | Query-параметры, например {"claim_id": "..."}. | |
| method | No | HTTP-метод; по умолчанию POST. | |
| contour | Yes | Контур API: express — экспресс-доставка (claims), platform — НДД/ПВЗ. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/read-only nature, but the description adds important behavioral details: the retry policy (5xx/network errors only for GET) and host/path conventions for each contour. This goes beyond the structured 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 compact, using only two sentences to convey purpose, param roles, and cautions. Every sentence is informative with no irrelevant 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 raw-request tool with 5 params and no output schema, the description covers purpose, usage, parameter roles, and security cautions. It does not mention auth prerequisites or error response structure, but these are not strictly required given the fallback nature.
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 covers 100% of parameters with descriptions, the description enriches these by explaining the mapping of `contour` to host and path prefix patterns, and clarifies that `body` is sent as JSON. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a fallback tool for direct calls to any B2B API method not covered by dedicated tools, with a specific list of example endpoints. This clearly distinguishes it from siblings like express_create_claim or platform_get_request.
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 'for endpoints without a dedicated tool' and labels itself as a fallback, giving clear when-to-use guidance. It also cautions about modifying operations and the GET-only retry policy, which helps avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
16 tool updates
v0.1.0- First observed
express_accept_claim - First observed
express_cancel_claim - First observed
express_cancel_info - First observed
express_check_price - First observed
express_create_claim - First observed
express_get_claim - First observed
express_performer_position - First observed
express_search_claims - First observed
express_tracking_links - First observed
platform_cancel_request - First observed
platform_confirm_offer - First observed
platform_create_offers - First observed
platform_get_request - First observed
platform_list_pickup_points - First observed
platform_request_history - First observed
raw_request
TDQS
All tools are cleanly separated by domain prefix (express_ vs platform_) and each tool has a distinct purpose: price estimation, claim management, tracking, offers, and order management. No two tools overlap in function; even similar ones like get_claim and search_claims are clearly different (single item vs list).
The prefix convention (express_ and platform_) is consistent, and most tools follow a verb_noun pattern (check_price, create_claim, accept_claim, cancel_claim, list_pickup_points, create_offers). However, a few tools are noun phrases without an explicit verb (express_performer_position, express_tracking_links, platform_request_history), creating minor inconsistency. Still, overall naming is predictable and readable.
With 16 tools, the server is slightly over the typical 3–15 range, but the number is justified by covering two distinct delivery contours (express and platform) plus a raw fallback. Each tool serves a clear workflow step, so the count feels appropriate rather than bloated.
Core lifecycles are covered for both express (price check, create, get, accept, cancel info/cancel, search, tracking) and platform (list points, create offers, confirm, get, history, cancel). Minor gaps such as dedicated tools for specific edge operations (e.g., proof-of-delivery) are mitigated by the raw_request fallback, but those operations are not first-class tools. This is a solid, nearly complete surface.
Maintenance
Related MCP Connectors
Furgonetka MCP Server is an extension for LLMs (such as Claude) that integrates AI assistants with Poland's most popular courier brokerage platform. The server enables models to interact directly with services from various couriers (including InPost, DPD, DHL, UPS, and Poczta Polska) through a single, unified interface. With this integration, your AI stops just "writing about logistics" and starts actually managing it.
MCP server for ua_postal_tracking_mcp
MCP server for EasyPost — rate shipments, buy & refund labels, track packages, verify addresses.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server for interacting with Yandex Cloud AI Studio, enabling chat, text generation, image generation, speech recognition/synthesis, embeddings, classification, search indexes, and AI agent creation with function calling.-
- AlicenseDqualityDmaintenanceMCP server for Yandex Delivery API, allowing AI assistants to manage deliveries, track couriers, and handle orders.21MIT
- AlicenseAqualityFmaintenanceMCP server for Yandex GPT API enabling text generation, embeddings, classification, summarization, and tokenization.848MIT
- AlicenseAqualityCmaintenanceMCP server for Yandex Eats Vendor Management API, enabling AI agents to manage partner operations like orders, busy mode, menu import, and feedback.1110MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/A1-x-Tech/mcp-yandex-dostavka'
If you have feedback or need assistance with the MCP directory API, please join our Discord server