agent.me
Проверить личность, привязанный магазин и права подключения.
Параметров нет: передайте {}.
Точная JSON Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Руководство по работе с магазином
Справочник доступа агента к данным X-MP: установка подключения, выбор полей, пагинация, исходные файлы, контроль качества и ошибки.
MCP предоставляет совместимому агенту именованные инструменты и схемы запросов. Вы задаёте вопрос, агент выбирает метод и параметры. Разработчик использует тот же контракт без прямого доступа к базе или ключу Wildberries.
«Проверь доступные наборы и период сбора, прочитай десять заказов с нужными полями. Если требуется исходный файл, скачай его приватно и покажи только вывод».
Ограниченные ответы по выбранным данным, происхождение и проверенные приватные файлы для больших объёмов.
Методы зависят от клиента и прав. Справочник сверён с клиентом 0.32.0 на 08.09.2026; tools/list вашей сессии определяет доступный контракт. Сохранённый источник может содержать неполный или ошибочный ответ.
| Компонент | Ответственность |
|---|---|
| Клиент MCP | Список методов, форма запросов и возврат результата агенту. |
| Шлюз X-MP | Определяет магазин и эффективные права по ключу. |
| Сервис данных | Читает разрешённые записи, агрегаты, версии и артефакты. |
| Центральный сбор | Отдельно получает источники WB зарегистрированными методами. |
| Приватная папка проекта | Хранит разрешённые выгрузки с лимитами и checksum. |
WB-ключ разрешает серверу читать категории маркетплейса. X-MP-ключ разрешает агенту пользоваться конкретным магазином. Шлюз не выдаёт агенту WB-ключ, доступ к базе или объектному хранилищу.
В проекте: .xmp/current/bin/xmp_agent_mcp.py — клиент; .xmp/secrets/agent.key — секрет; .codex/config.toml — настройки MCP. Не копируйте ключи между магазинами. Для другого клиента требуется совместимый способ подключения из инструкции, а не произвольное использование настроек Codex.
xmp.update.check проверяет выпуск; xmp.update.apply с confirm=true применяет проверенное обновление. Автообновление зависит от настроенной политики устройства. Обновление не добавляет прав. Если метода нет в tools/list, проверьте версию, совместимость и доступ.
Предпочтительно копировать индивидуальную команду из своего кабинета. Ниже — техническая форма того же установщика для подготовленного окружения. UUID и путь учебные: замените их на ID вашего кабинета и существующий приватный файл ключа. Значение ключа в командной строке отсутствует.
curl --fail --silent --show-error https://x-mp.ru/cabinet/static/install-xmp-codex.sh --output ./install-xmp-codex.sh
bash ./install-xmp-codex.sh "00000000-0000-0000-0000-000000000001" --credential-file "/private/xmp-agent.key" --no-launch| Аргумент | Назначение |
|---|---|
| Первый UUID | Ожидаемый кабинет; серверная личность должна ему соответствовать. |
| --credential-file | Прочитать уже подготовленный приватный файл вместо скрытого ввода. |
| --no-launch | Установить подключение без автоматического запуска Codex. |
| --replace-key | Явно заменить прежний ключ проекта после проверки нужного магазина. |
| --auto-update / --no-auto-update | Явно выбрать политику обновления устройства; без выбора сохраняется текущая. |
Если работа ведётся через другого совместимого клиента, используйте его проверенную инструкцию подключения. Этот shell-установщик предназначен для Codex и не является универсальным установщиком всех MCP-клиентов.
{}{}{}{}Сверьте магазин, эффективные права, свежесть и доступные dataset_key. degraded по свежести не всегда запрещает чтение: разрешённые старые данные можно использовать с явной датой. Для нового плана изменения действуют более строгие требования.
Для исходных сохранённых данных нужен analytics.read на шлюзе и серверный grant stored_data. Недостающие права не исправляются передачей account_id, SQL или пути хранилища.
| Потребность | Методы | Результат |
|---|---|---|
| Итоговые показатели | analysis.query, metrics.query, finance.summary | Компактный расчёт с качеством. |
| Проверка записей | dataset.query, collection.records | Страница строк/полей и продолжение. |
| Объёмная обработка | dataset.export, collection.artifact.download | Приватный файл и метаданные. |
dataset.export — нормализованный набор; collection.artifact.download — один сохранённый артефакт. Это разные продукты, а не два названия произвольного доступа к базе.
| Набор | Поля | Смысл |
|---|---|---|
| Общие | product_id, nm_id, vendor_code, raw_run_id, observed_at | Внутренний ID, артикулы, ссылка на исходный запуск, время наблюдения. |
| products | listing_id, title, brand, subject_id, valid_from | Листинг, название, бренд, предмет и начало версии. |
| orders | source_key, srid, listing_id, total_price, discounted_price, is_cancel, event_at, last_change_at | Идентификаторы заказа, ценовые поля, отмена и времена события/изменения. |
| sales | source_key, srid, sale_id, listing_id, price_with_discount, for_pay, finished_price, event_at, last_change_at | Идентификаторы продажи, разные денежные базы, сумма к перечислению и времена. |
Доступные dataset_key сначала читаются через datasets.list. Страничная проекция реализована для products, orders, sales. Другие источники ищите через collection.sources, не подставляйте произвольную entity как dataset_key.
fields — до 16 уникальных разрешённых полей, nm_ids — до 20 строковых артикулов, limit — до 50 строк, offset — до 10000. Для периода нужны обе границы, максимум 90 дней. У products даты относятся к observed_at, у orders/sales — к event_at.
{
"dataset_key": "orders",
"fields": [
"nm_id",
"vendor_code",
"discounted_price",
"is_cancel",
"event_at",
"raw_run_id"
],
"date_from": "2026-09-01",
"date_to": "2026-09-07",
"limit": 10,
"offset": 0
}raw_run_id показывает происхождение, а не включает весь payload в строку. Не складывайте разные ценовые поля как независимые доходы. Идентификаторы источника не доказывают уникального покупателя.
{
"limit": 20,
"offset": 0
}До 50 записей и 20 полей за страницу. Фильтр записей/файлов — до 366 дней за запрос; без дат доступны сохранённые даты с пагинацией. Сортировка UUID стабильна для неизменного набора, но не создаёт транзакционный снимок при параллельном сборе.
{
"date_from": "2026-09-01",
"date_to": "2026-09-07"
}{
"limit": 20,
"offset": 0
}История показывает дни/разделы, частичные и неудачные загрузки; диапазон до 31 дня. Диагностика читает последнее сохранённое свидетельство и documented_requirements, не вызывает новый запрос WB.
403 сам по себе не доказывает отсутствие подписки или конкретной категории ключа. Причину и документированные требования проверяют отдельно. Успешный ответ также не доказывает, что собраны все страницы и даты.
{
"kind": "raw",
"date_from": "2026-09-01",
"date_to": "2026-09-07",
"limit": 10
}{
"artifact_id": "00000000-0000-0000-0000-000000000001",
"kind": "raw",
"max_bytes": 10485760
}UUID учебный: замените реальным ID из каталога. Скачивание по умолчанию до 10MiB, явно — до 128MiB. Части до 256KiB проверяются по размеру, непрерывности, scope и SHA-256; весь файл сохраняется атомарно в .xmp/data с приватными правами. Ответ содержит путь и метаданные.
ZIP не распаковывается; base64-документ внутри JSON не декодируется автоматически. Сначала проверьте формат, затем обрабатывайте локально с сохранением происхождения. Ошибочный ответ WB тоже может быть артефактом.
| storage_status | Значение |
|---|---|
| not_checked | Привязка выглядит корректной, но существование файла не проверено. |
| archive_binding_required | Нужна привязка старого архива; файл не объявляется удалённым или доступным. |
{
"dataset_key": "orders",
"max_rows": 10000,
"max_bytes": 10485760
}Экспорт сохраняет JSONL и manifest. До 100000 строк и 50MiB; по умолчанию 10000 строк и 10MiB. У export нет фильтров fields, nm_ids и периода: не переносите параметры query. complete описывает завершённость выдачи, а не полноту сбора.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "analysis.query",
"arguments": {
"date_from": "2026-09-01",
"date_to": "2026-09-07",
"metrics": [
"ordered_gmv",
"ad_spend"
],
"sort_by": "ordered_gmv",
"limit": 10
}
}
}Обычно конверт формирует клиент агента. tools/list сообщает имена и inputSchema; arguments обязан соответствовать схеме. Методы без параметров получают {}. Секрет и выбор магазина в arguments не передаются. Формат результата различается по методам.
readOnlyHint — подсказка протокола, не вся модель эффектов. Скачивание пишет локальный файл, расчёт сохраняет историю, reconcile записывает проверку без повторной отправки цены. Сервер дополнительно проверяет права и сочетания параметров.
| Симптом | Действие |
|---|---|
| 401 | Обновить индивидуальный доступ через кабинет, не пересылать ключ. |
| 403 | Проверить эффективные права и сохранённую диагностику, не угадывать подписку. |
| Неизвестное имя | Прочитать каталог и tools/list; не подбирать WB URL. |
| degraded / partial / null | Показать пробелы и ограничить вывод. |
| next_offset / next_after / cursor | Продолжить именно выданным механизмом с прежними фильтрами. |
| payload_omitted | Получить исходный артефакт ограниченной выгрузкой. |
| archive_binding_required | Обратиться за проверкой старой привязки. |
| Hash или размер не совпал | Не использовать файл; проверить загрузку. |
| Метода нет в сессии | Проверить установленный выпуск, совместимость и grants. |
Параметры ниже относятся к MCP arguments. Идентичность и ключ не передаются в них. Для полного объекта config следуйте руководству домена.
agent.meПроверить личность, привязанный магазин и права подключения.
Параметров нет: передайте {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}capabilities.listПолучить эффективные возможности; наличие метода в клиенте не заменяет проверку прав.
Параметров нет: передайте {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}readiness.getПроверить состояние магазина и свежесть данных.
Параметров нет: передайте {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}datasets.listУзнать доступные dataset_key перед запросом или экспортом.
Параметров нет: передайте {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}xmp.client.instructionsПрочитать индекс инструкций или1–3 skill; бизнес-правила не меняются.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| skills | массив | нет | Имена выбранных инструкций из текущего индекса. не менее элементов: 1; не более элементов: 3 |
{
"type": "object",
"additionalProperties": false,
"properties": {
"skills": {
"type": "array",
"minItems": 1,
"maxItems": 3,
"uniqueItems": true,
"items": {
"type": "string"
}
}
}
}xmp.update.checkПроверить доступность совместимого клиентского выпуска.
Параметров нет: передайте {}.
{
"type": "object",
"properties": {},
"additionalProperties": false
}xmp.update.applyПрименить проверенное обновление после confirm=true; права не расширяются.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| confirm | значение | да | Явное подтверждение обновления клиента; не разрешение на WB write. только: true |
| auto_update | да/нет | нет | Выбранная политика обновления устройства. |
{
"type": "object",
"additionalProperties": false,
"required": [
"confirm"
],
"properties": {
"confirm": {
"const": true
},
"auto_update": {
"type": "boolean"
}
}
}dataset.queryПрочитать страницу нормализованных строк с выбранными полями, без raw payload.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| dataset_key | строка | да | Зарегистрированное имя набора из datasets.list. шаблон: "^[a-z][a-z0-9_-]{1,127}$" |
| fields | массив | нет | Имена выбранных полей; допустимые имена зависят от набора. не менее элементов: 1; не более элементов: 16 |
| nm_ids | массив | нет | Список артикулов WB в пределах выбранного магазина. не более элементов: 20 |
| date_from | строка | нет | Дата начала; смысл события или наблюдения зависит от метода. формат: "date" |
| date_to | строка | нет | Включённая дата окончания; проверяйте допустимую длину периода. формат: "date" |
| limit | целое | нет | Число строк/событий за страницу, а не полнота всего источника. минимум: 1; максимум: 50; по умолчанию: 20 |
| offset | целое | нет | Смещение следующей страницы либо байтов медиа; используйте значение ответа. минимум: 0; максимум: 10000; по умолчанию: 0 |
{
"type": "object",
"additionalProperties": false,
"required": [
"dataset_key"
],
"properties": {
"dataset_key": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{1,127}$"
},
"fields": {
"type": "array",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]*$"
}
},
"nm_ids": {
"type": "array",
"maxItems": 20,
"uniqueItems": true,
"items": {
"type": "string",
"pattern": "^[0-9]{1,19}$"
}
},
"date_from": {
"type": "string",
"format": "date"
},
"date_to": {
"type": "string",
"format": "date"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000,
"default": 0
}
}
}dataset.exportСохранить ограниченный нормализованный набор в приватный JSONL и manifest.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| dataset_key | строка | да | Зарегистрированное имя набора из datasets.list. шаблон: "^[a-z][a-z0-9_-]{1,127}$" |
| max_rows | целое | нет | Верхняя граница числа экспортируемых строк. минимум: 1; максимум: 100000; по умолчанию: 10000 |
| max_bytes | целое | нет | Верхняя граница размера скачивания или экспорта в байтах. минимум: 1024; максимум: 52428800; по умолчанию: 10485760 |
{
"type": "object",
"additionalProperties": false,
"required": [
"dataset_key"
],
"properties": {
"dataset_key": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{1,127}$"
},
"max_rows": {
"type": "integer",
"minimum": 1,
"maximum": 100000,
"default": 10000
},
"max_bytes": {
"type": "integer",
"minimum": 1024,
"maximum": 52428800,
"default": 10485760
}
}
}collection.sourcesПеречислить сохранённые источники и record_sets; включает пустые/ошибочные источники.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| limit | целое | нет | Число строк/событий за страницу, а не полнота всего источника. минимум: 1; максимум: 50; по умолчанию: 20 |
| offset | целое | нет | Смещение следующей страницы либо байтов медиа; используйте значение ответа. минимум: 0; максимум: 10000 |
{
"type": "object",
"additionalProperties": false,
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000
}
},
"required": []
}collection.historyПрочитать историю сбора по дням и методам за период до31 дня.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| date_from | строка | да | Дата начала; смысл события или наблюдения зависит от метода. формат: "date" |
| date_to | строка | да | Включённая дата окончания; проверяйте допустимую длину периода. формат: "date" |
{
"type": "object",
"additionalProperties": false,
"properties": {
"date_from": {
"type": "string",
"format": "date"
},
"date_to": {
"type": "string",
"format": "date"
}
},
"required": [
"date_from",
"date_to"
]
}collection.accessПрочитать сохранённую диагностику доступа без нового запроса WB.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| limit | целое | нет | Число строк/событий за страницу, а не полнота всего источника. минимум: 1; максимум: 50; по умолчанию: 20 |
| offset | целое | нет | Смещение следующей страницы либо байтов медиа; используйте значение ответа. минимум: 0; максимум: 10000 |
{
"type": "object",
"additionalProperties": false,
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 10000
}
},
"required": []
}collection.recordsПрочитать текущие записи или версии; entity и kind берутся из collection.sources.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| entity | строка | да | Наблюдаемое имя сущности из collection.sources/record_sets. шаблон: "^[a-zA-Z0-9_.-]{1,128}$" |
| kind | строка | нет | Вид записи или файла; допустимые варианты зависят от метода. варианты: ["entity", "fact", "product"] |
| current_only | да/нет | нет | Только актуальные записи либо сохранённая история версий. по умолчанию: true |
| after | строка | нет | UUID последней записи для продолжения next_after. формат: "uuid" |
| limit | целое | нет | Число строк/событий за страницу, а не полнота всего источника. минимум: 1; максимум: 50; по умолчанию: 20 |
| fields | массив | нет | Имена выбранных полей; допустимые имена зависят от набора. не менее элементов: 1; не более элементов: 20 |
| date_from | строка | нет | Дата начала; смысл события или наблюдения зависит от метода. формат: "date" |
| date_to | строка | нет | Включённая дата окончания; проверяйте допустимую длину периода. формат: "date" |
{
"type": "object",
"additionalProperties": false,
"properties": {
"entity": {
"type": "string",
"pattern": "^[a-zA-Z0-9_.-]{1,128}$"
},
"kind": {
"type": "string",
"enum": [
"entity",
"fact",
"product"
]
},
"current_only": {
"type": "boolean",
"default": true
},
"after": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 20
},
"date_from": {
"type": "string",
"format": "date"
},
"date_to": {
"type": "string",
"format": "date"
}
},
"required": [
"entity"
]
}collection.artifactsНайти метаданные исходных ответов или зарегистрированных бизнес-файлов.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| kind | строка | нет | Вид записи или файла; допустимые варианты зависят от метода. варианты: ["raw", "business"] |
| entity | строка | нет | Наблюдаемое имя сущности из collection.sources/record_sets. |
| method_id | строка | нет | Фильтр по зарегистрированному методу источника. |
| date_from | строка | нет | Дата начала; смысл события или наблюдения зависит от метода. формат: "date" |
| date_to | строка | нет | Включённая дата окончания; проверяйте допустимую длину периода. формат: "date" |
| after | строка | нет | UUID последней записи для продолжения next_after. формат: "uuid" |
| limit | целое | нет | Число строк/событий за страницу, а не полнота всего источника. минимум: 1; максимум: 50; по умолчанию: 20 |
{
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"type": "string",
"enum": [
"raw",
"business"
]
},
"entity": {
"type": "string"
},
"method_id": {
"type": "string"
},
"date_from": {
"type": "string",
"format": "date"
},
"date_to": {
"type": "string",
"format": "date"
},
"after": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
}
},
"required": []
}collection.artifact.downloadСкачать один артефакт в приватную .xmp/data, проверить размер и SHA-256; вернуть путь.
| Параметр | Тип | Обязателен | Назначение и ограничения |
|---|---|---|---|
| artifact_id | строка | да | Идентификатор файла из каталога артефактов. формат: "uuid" |
| kind | строка | нет | Вид записи или файла; допустимые варианты зависят от метода. по умолчанию: "raw"; варианты: ["raw", "business"] |
| max_bytes | целое | нет | Верхняя граница размера скачивания или экспорта в байтах. минимум: 1; максимум: 134217728; по умолчанию: 10485760 |
{
"type": "object",
"additionalProperties": false,
"properties": {
"artifact_id": {
"type": "string",
"format": "uuid"
},
"kind": {
"type": "string",
"enum": [
"raw",
"business"
],
"default": "raw"
},
"max_bytes": {
"type": "integer",
"minimum": 1,
"maximum": 134217728,
"default": 10485760
}
},
"required": [
"artifact_id"
]
}Поручать работу с WB своему AI-помощнику
Доступно. Выберите доступный способ подключения в инструкции.
Анализировать магазин без ручных выгрузок
Доступно по источникам. Состав и свежесть зависят от прав доступа и загруженного периода.
Этот раздел предназначен для настройки интеграции. Для обычной работы начните с шагов выше.