Yandex Merchants MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YANDEX_MERCHANTS_BASE_URL | No | Корень API (override). | https://yandex.ru/products/api/ext/partner |
| YANDEX_MERCHANTS_TIMEOUT_MS | No | Таймаут запроса, мс. | 60000 |
| YANDEX_MERCHANTS_MAX_RETRIES | No | Повторы: 429 — всегда, 5xx/сеть — только GET. | 3 |
| YANDEX_MERCHANTS_OAUTH_TOKEN | Yes | OAuth-токен Яндекса со scope products:partner-api. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | Показывает, подключены ли Яндекс Товары: есть ли токен, откуда он взят (переменная окружения YANDEX_MERCHANTS_OAUTH_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты отвечают, что подключение не настроено; живую проверку доступа к API делает check_access. |
| start_loginA | Первый шаг подключения Яндекс Товаров без правки конфигурации и без перезапуска клиента. Возвращает ссылку на страницу Яндекс OAuth. Покажите ссылку пользователю целиком и попросите: открыть её в браузере строго под тем логином Яндекса, под которым загружен YML-фид (токен другого логина не увидит ни одного фида), подтвердить доступ и прислать показанный код подтверждения. Токен выдаётся со scope products:partner-api. Полученный код передайте в finish_login. Код действует 10 минут. Сам по себе код бесполезен для постороннего: обменять его может только этот сервер. |
| finish_loginA | Второй шаг подключения: обменивает код подтверждения из start_login на токен доступа, сохраняет его в файл только для владельца (0600) и сразу проверяет живым запросом к списку фидов. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Если фидов не видно, вход, скорее всего, выполнен не под тем логином (нужен тот, что загрузил YML-фид). Код одноразовый и живёт 10 минут: если он не принят, вызовите start_login заново и попросите свежий. |
| logoutA | Удаляет сохранённый токен Яндекс Товаров с диска. Токен, заданный переменной окружения YANDEX_MERCHANTS_OAUTH_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID. |
| list_feedsA | Возвращает список товарных фидов, доступных текущему OAuth-логину: { status, feeds: [{ feedId, feedUrl }] }. Точка входа для всех остальных инструментов — их параметр feed_id берётся из feedId этого ответа. Больше API про фиды ничего не отдаёт: ни статуса фида, ни списка предложений (создание/удаление фида — только через кабинет или Вебмастер). |
| check_accessA | Диагностика подключения: выполняет тот же GET /feeds-info и возвращает { ok, feedsCount } либо { ok: false, error }. Отдельного ping-эндпоинта в API нет. Если ok: false — проверьте, что OAuth-токен выдан со scope products:partner-api под тем логином, который загружал фид, и что права на сайт подтверждены в Вебмастере (API открывается через несколько часов после подтверждения). |
| set_offer_priceA | Изменяет цену одного товарного предложения (POST /offer-prices/updates c одним элементом). Валюта всегда RUR — подставляется автоматически. Опционально: discount_base — цена до скидки (покажется зачёркнутой; скидка должна попадать в 5–95%, иначе API вернёт 400), pay_by_price + pay_by_condition (только парой, вместе) — спеццена при условии оплаты. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] } — проверяйте status. Если в фиде несколько предложений с одинаковым id, цена обновится только у первого. Лимит: 50 000 изменений цен в минуту. |
| update_offer_pricesA | Массово обновляет цены: от 1 до 2000 предложений одним запросом (POST /offer-prices/updates). Валюта всегда RUR. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] }; возможные коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, LIMIT_EXCEEDED, REQUEST_LIMIT_EXCEEDED (больше 2000 в запросе). Лимит: 50 000 изменений цен в минуту. Для больших объёмов разбивайте на несколько вызовов. |
| set_offer_discountA | Устанавливает скидку: price — цена со скидкой, discount_base — старая цена, которая покажется зачёркнутой (тот же POST /offer-prices/updates, но discount_base обязателен). Скидка должна быть не меньше 5% и не больше 95% — проверяется до запроса, иначе API вернёт 400 Bad Request. Валюта всегда RUR. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }. |
| hide_offerA | Скрывает одно предложение из Поиска по товарам (POST /hidden-offers), например когда товар закончился. ttl_in_hours — необязательный срок скрытия в часах (максимум 720 = 30 дней, иначе ошибка INVALID_TTL); что делает повторное скрытие с новым ttl, дока API не описывает. Без ttl предложение скрыто до явного show_offers. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] }. Прочитать список уже скрытых предложений через API нельзя. Лимит: 50 000 операций скрытия/показа в минуту. |
| hide_offersA | Массово скрывает предложения из Поиска: от 1 до 500 за запрос (POST /hidden-offers). Общий ttl_in_hours (максимум 720 часов) применяется ко всем предложениям запроса. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }; коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, INVALID_TTL, LIMIT_EXCEEDED, REQUEST_LIMIT_EXCEEDED (больше 500 в запросе). Лимит: 50 000 операций скрытия/показа в минуту (общий с show_offers). |
| show_offersA | Возобновляет показ ранее скрытых предложений: от 1 до 500 за запрос (DELETE /hidden-offers с JSON-телом). Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }; коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, REQUEST_LIMIT_EXCEEDED. Лимит: 50 000 операций скрытия/показа в минуту (общий с hide_offers). |
| raw_requestA | Запасной выход: прямой вызов любого пути партнёрского API Яндекс Товаров относительно базового URL (https://yandex.ru/products/api/ext/partner), например "feeds-info" или "offer-prices/updates". Методы API: GET (feeds-info), POST (offer-prices/updates, hidden-offers), DELETE (hidden-offers). body отправляется как JSON в готовом wire-формате API (например { offers: [...] } или { hiddenOffers: [...] }) — без преобразований. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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-merchants'
If you have feedback or need assistance with the MCP directory API, please join our Discord server