@besales/mcp 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/instructions/server-instructions.d.ts +1 -1
  2. package/dist/instructions/server-instructions.js +14 -6
  3. package/dist/instructions/server-instructions.js.map +1 -1
  4. package/dist/resources/workflows/compare-models.md +4 -2
  5. package/dist/schemas/mcp-tools.json +256 -32
  6. package/dist/tools/definitions/broadcast-analytics.js +7 -3
  7. package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
  8. package/dist/tools/definitions/broadcast-scheduler.d.ts +20 -4
  9. package/dist/tools/definitions/broadcast-scheduler.js +159 -43
  10. package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
  11. package/dist/tools/definitions/crm-platform.d.ts +2 -0
  12. package/dist/tools/definitions/crm-platform.js +26 -2
  13. package/dist/tools/definitions/crm-platform.js.map +1 -1
  14. package/dist/tools/definitions/follow-up.d.ts +1 -0
  15. package/dist/tools/definitions/follow-up.js +13 -3
  16. package/dist/tools/definitions/follow-up.js.map +1 -1
  17. package/dist/tools/definitions/getcourse-cold-welcome.d.ts +3 -0
  18. package/dist/tools/definitions/getcourse-cold-welcome.js +18 -4
  19. package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
  20. package/dist/tools/definitions/model-comparison.js +2 -2
  21. package/dist/tools/definitions/model-comparison.js.map +1 -1
  22. package/dist/tools/definitions/platform-setup.d.ts +18 -0
  23. package/dist/tools/definitions/platform-setup.js +11 -2
  24. package/dist/tools/definitions/platform-setup.js.map +1 -1
  25. package/dist/tools/definitions/shared.d.ts +42 -0
  26. package/dist/tools/definitions/shared.js +47 -0
  27. package/dist/tools/definitions/shared.js.map +1 -1
  28. package/dist/tools/definitions.d.ts +43 -4
  29. package/dist/tools/registry-mapping-cases-core.js +137 -15
  30. package/dist/tools/registry-mapping-cases-core.js.map +1 -1
  31. package/dist/types/api-contract.gen.d.ts +101 -6
  32. package/docs/agent-usage-guide.ru.md +5 -0
  33. package/package.json +1 -1
@@ -7059,13 +7059,15 @@ export interface paths {
7059
7059
  cookie?: never;
7060
7060
  };
7061
7061
  /**
7062
- * История запусков — наша отправка и волны по файлу одним списком
7063
- * @description Scope `read:campaigns`.
7062
+ * История запусков — ручная отправка, волны, авторассылка и автоприём одним списком
7063
+ * @description Scope `read:campaigns`. Ручная отправка пакетом — одна строка с `batch`, автоприём регистраций — одна строка на день с `registrationDay`.
7064
7064
  */
7065
7065
  get: {
7066
7066
  parameters: {
7067
7067
  query?: {
7068
7068
  mailingVariantId?: string;
7069
+ /** @description Откуда запуск: manual — ручная отправка, wave — волна по файлу, schedule — авторассылка, registration — автоприём регистраций. Пусто = все четыре. */
7070
+ origin?: "manual" | "wave" | "schedule" | "registration";
7069
7071
  limit?: number;
7070
7072
  };
7071
7073
  header?: never;
@@ -8000,6 +8002,13 @@ export interface paths {
8000
8002
  "application/json": components["schemas"]["PlatformSetupMutationResult"];
8001
8003
  };
8002
8004
  };
8005
+ /** @description Название триггера уже занято у этого агента */
8006
+ 409: {
8007
+ headers: {
8008
+ [name: string]: unknown;
8009
+ };
8010
+ content?: never;
8011
+ };
8003
8012
  };
8004
8013
  };
8005
8014
  delete?: never;
@@ -8074,6 +8083,13 @@ export interface paths {
8074
8083
  "application/json": components["schemas"]["PlatformSetupMutationResult"];
8075
8084
  };
8076
8085
  };
8086
+ /** @description Название триггера уже занято у этого агента */
8087
+ 409: {
8088
+ headers: {
8089
+ [name: string]: unknown;
8090
+ };
8091
+ content?: never;
8092
+ };
8077
8093
  };
8078
8094
  };
8079
8095
  trace?: never;
@@ -8406,7 +8422,7 @@ export interface paths {
8406
8422
  [name: string]: unknown;
8407
8423
  };
8408
8424
  content: {
8409
- "application/json": components["schemas"]["PlatformSetupMutationResult"];
8425
+ "application/json": components["schemas"]["FollowUpSequenceUpsertResult"];
8410
8426
  };
8411
8427
  };
8412
8428
  };
@@ -8452,7 +8468,7 @@ export interface paths {
8452
8468
  [name: string]: unknown;
8453
8469
  };
8454
8470
  content: {
8455
- "application/json": components["schemas"]["PlatformSetupMutationResult"];
8471
+ "application/json": components["schemas"]["FollowUpSequenceUpsertResult"];
8456
8472
  };
8457
8473
  };
8458
8474
  };
@@ -11470,6 +11486,8 @@ export interface paths {
11470
11486
  freshness?: components["parameters"]["BroadcastFreshness"];
11471
11487
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11472
11488
  channels?: components["parameters"]["BroadcastChannels"];
11489
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11490
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11473
11491
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11474
11492
  view?: components["parameters"]["BroadcastView"];
11475
11493
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -11629,6 +11647,8 @@ export interface paths {
11629
11647
  freshness?: components["parameters"]["BroadcastFreshness"];
11630
11648
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11631
11649
  channels?: components["parameters"]["BroadcastChannels"];
11650
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11651
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11632
11652
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11633
11653
  view?: components["parameters"]["BroadcastView"];
11634
11654
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -11709,6 +11729,8 @@ export interface paths {
11709
11729
  freshness?: components["parameters"]["BroadcastFreshness"];
11710
11730
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11711
11731
  channels?: components["parameters"]["BroadcastChannels"];
11732
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11733
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11712
11734
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11713
11735
  view?: components["parameters"]["BroadcastView"];
11714
11736
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -12060,6 +12082,8 @@ export interface paths {
12060
12082
  freshness?: components["parameters"]["BroadcastFreshness"];
12061
12083
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
12062
12084
  channels?: components["parameters"]["BroadcastChannels"];
12085
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
12086
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
12063
12087
  /** @description Сегмент очереди. `resolved` = `confirmed` + `rejected` одним списком; UI пользуется раздельными сегментами, выгрузке чаще нужен общий. */
12064
12088
  view?: "decidable" | "external_mailing" | "excluded" | "confirmed" | "rejected" | "resolved" | "potential";
12065
12089
  /** @description Режим атрибуции для сегмента `potential`: `cohort` датирует по волне, `period` — по оплате. Отдельное имя потому, что `view` занят сегмент-переключателем; остальные сегменты параметр игнорируют. */
@@ -12139,6 +12163,8 @@ export interface paths {
12139
12163
  freshness?: components["parameters"]["BroadcastFreshness"];
12140
12164
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
12141
12165
  channels?: components["parameters"]["BroadcastChannels"];
12166
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
12167
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
12142
12168
  };
12143
12169
  header?: never;
12144
12170
  path: {
@@ -20473,6 +20499,11 @@ export interface components {
20473
20499
  contactId: string;
20474
20500
  /** @description Пин заказа для штампа полей сделки. */
20475
20501
  dealId?: string;
20502
+ /**
20503
+ * Format: date-time
20504
+ * @description Момент регистрации, по которой человек попал в сегмент (ISO 8601, зона ОБЯЗАТЕЛЬНА): предохранитель держит только заявки и оплаты после этой регистрации, более ранние не держат. Не передан — заявки и оплаты судятся за всю историю человека (с 15.09.2026).
20505
+ */
20506
+ registeredAt?: string;
20476
20507
  /**
20477
20508
  * Format: date-time
20478
20509
  * @description Точный момент входа контакта в когорту (ISO 8601, зона ОБЯЗАТЕЛЬНА — …Z либо ±ЧЧ:ММ). На нём считается свежесть в «Аналитике рассылок»: возраст = время отправки минус segmentEnteredAt. Заполняется, когда предсписок собран ПРАВИЛОМ и у каждой строки есть свой момент события (например eventAt регистрации). Не передан — возраст строки остаётся неизвестным. Дату запуска сюда подставлять нельзя: она схлопнула бы месяцы когорт в одну корзину.
@@ -20520,10 +20551,12 @@ export interface components {
20520
20551
  alreadyGreeted: number;
20521
20552
  /** @description Идёт эпизод регистрации: приветствие ДОЛЖНЫ и не отдали либо подготовлен повторный вход на новый эфир. Считается ПО ЧЕЛОВЕКУ, без скоупа площадки. */
20522
20553
  activeEpisode: number;
20554
+ /** @description Пауза повтора сегмента (с 16.09.2026): этим сегментом человеку уже писали, после отправки он зарегистрировался снова, и расписание повторит ему сегмент, но пауза после прошлой отправки ещё не прошла. Только у запуска расписания с включённым повтором; у ручного запуска всегда 0. */
20555
+ resendPause: number;
20523
20556
  /** @description Тихий период: человека трогали (нашей отправкой либо шагом календарной цепочки) внутри окна. Окно резолвится настройками — перекрытие рассылки, затем площадка, затем воркспейс, затем 0. По умолчанию 0, то есть правило выключено, пока оператор его не выставит; рекомендация — 7 суток. Волна школы касанием НЕ считается. Расписания судятся своим cooldownDays. */
20524
20557
  cooldown: number;
20525
20558
  };
20526
- /** @description Тот же ТЕКСТ уже занят в журнале касаний под ДРУГИМ ярлыком. Отдельно от blockedBy: это не правило владельца, а атомарное право — «тот же текст не дважды» держится строкой журнала, а не читающей проверкой. */
20559
+ /** @description Касание этого сегмента уже занято в журнале касаний под другим именем (строка продолжения до 16.09.2026, старое продолжение этим текстом без ярлыка) либо тот же ТЕКСТ уходил человеку любым сегментом меньше трёх суток назад. Только у продолжения расписания; отдельно от blockedBy: claim журнала такие строки не видит, их держит читающая проверка. */
20527
20560
  touchClaimed: number;
20528
20561
  /** @description ИНФОРМАЦИЯ, а не запрет: этим же ярлыком человека рассылал ВНЕШНИЙ механизм — волна школы своими процессами либо шаблон Wazzup. Наш догон в мессенджерах уйдёт как обычно: так работает штатный процесс. В отсев это число НЕ входит. */
20529
20562
  externalWaveTouched: number;
@@ -20775,11 +20808,47 @@ export interface components {
20775
20808
  } | null;
20776
20809
  /** @description Сколько отправок ушло ВСЛЕПУЮ: канал взят резервным транспортом площадки, а не доказан привязками контакта или его ответом. Это ПОДМНОЖЕСТВО sentCount, а не отдельный исход — сообщение ушло. Без него «доставлено в мессенджер» и «упало в личный кабинет сайта» в истории неразличимы. null — у волн (отправляет процесс школы) и у запусков до появления счётчика; это НЕ то же, что 0. */
20777
20810
  sentWithoutChannelEvidence?: number | null;
20811
+ /** @description Ручная отправка пакетом: id строки = batchId, блоки — внутри. Null у одиночной отправки (и у пакета из одного блока), волн, авторассылки и автоприёма. У такой строки tracedOutcomes — null: поимённый разбор у блоков. */
20812
+ batch?: components["schemas"]["BroadcastLaunchBatch"] | null;
20813
+ /** @description Автоприём регистраций за день. sentCount = totalContacts = отправлено за день; status=running значит «день ещё идёт». Null у остальных источников. */
20814
+ registrationDay?: components["schemas"]["BroadcastLaunchRegistrationDay"] | null;
20778
20815
  /** Format: date-time */
20779
20816
  createdAt: string;
20780
20817
  /** Format: date-time */
20781
20818
  completedAt?: string | null;
20782
20819
  };
20820
+ BroadcastLaunchBatch: {
20821
+ /** Format: uuid */
20822
+ batchId: string;
20823
+ /** @description Блоки в порядке исполнения, включая ещё не стартовавшие. */
20824
+ blocks: components["schemas"]["BroadcastLaunchBatchBlock"][];
20825
+ };
20826
+ BroadcastLaunchBatchBlock: {
20827
+ position: number;
20828
+ /** @description Задача блока; null — блок ещё не стартовал. */
20829
+ importJobId: string | null;
20830
+ segment?: string | null;
20831
+ productCode?: string | null;
20832
+ funnel?: string | null;
20833
+ /** @enum {string} */
20834
+ status: "pending" | "running" | "completed" | "cancelled" | "failed";
20835
+ totalContacts: number;
20836
+ sentCount: number;
20837
+ failedCount: number;
20838
+ outcomes?: {
20839
+ [key: string]: number;
20840
+ } | null;
20841
+ tracedOutcomes?: {
20842
+ [key: string]: number;
20843
+ } | null;
20844
+ };
20845
+ BroadcastLaunchRegistrationDay: {
20846
+ /**
20847
+ * Format: date
20848
+ * @description Календарный день МСК корзины
20849
+ */
20850
+ day: string;
20851
+ };
20783
20852
  BroadcastLaunchesPage: {
20784
20853
  items: components["schemas"]["BroadcastLaunch"][];
20785
20854
  hasMore: boolean;
@@ -20970,6 +21039,20 @@ export interface components {
20970
21039
  } & {
20971
21040
  [key: string]: unknown;
20972
21041
  };
21042
+ FollowUpSequenceUpsertResult: components["schemas"]["PlatformSetupMutationResult"] & {
21043
+ /** @description Предупреждения к записанной цепочке. Поле есть, только когда предупреждения есть; запись при этом УЖЕ выполнена — повторять вызов не нужно. */
21044
+ warnings?: components["schemas"]["FollowUpStatusModeWarning"][];
21045
+ };
21046
+ /** @description Режим отбора «по статусу CRM» (filterMode=status или поле не задано) на этой площадке никого не выберет. Не запрет: по настройкам нельзя предсказать, что статусы не появятся. */
21047
+ FollowUpStatusModeWarning: {
21048
+ /**
21049
+ * @description NO_ACTIVE_CRM — в воркспейсе нет активной CRM; NO_CONTACT_STATUSES — контакты на площадке есть, но ни у одного нет статуса CRM.
21050
+ * @enum {string}
21051
+ */
21052
+ code: "FOLLOW_UP_STATUS_MODE_NO_ACTIVE_CRM" | "FOLLOW_UP_STATUS_MODE_NO_CONTACT_STATUSES";
21053
+ /** @description Самодостаточное объяснение с альтернативами (eventType или variable). */
21054
+ message: string;
21055
+ };
20973
21056
  TriggerActionCatalogItem: {
20974
21057
  actionType: string;
20975
21058
  title: string;
@@ -21214,7 +21297,9 @@ export interface components {
21214
21297
  updatedAt?: string;
21215
21298
  };
21216
21299
  TriggerUpsertRequest: components["schemas"]["ConfirmableSetupMutation"] & {
21300
+ /** @description Название, уникальное в рамках агента. Потолок общий с формой интерфейса — канон AGENT_TRIGGER_NAME_MAX_LENGTH (ai-aniomaly/src/core/application/tools/constants/agent-trigger.constants.ts). */
21217
21301
  name?: string;
21302
+ /** @description Условие срабатывания; уходит в системный промпт агента целиком. Потолок общий с формой интерфейса — канон AGENT_TRIGGER_CONDITION_MAX_LENGTH (ai-aniomaly/src/core/application/tools/constants/agent-trigger.constants.ts). */
21218
21303
  condition?: string;
21219
21304
  isEnabled?: boolean;
21220
21305
  priority?: number;
@@ -21681,6 +21766,8 @@ export interface components {
21681
21766
  guardPaid?: components["schemas"]["OutboundGuardMode"];
21682
21767
  /** @description Quiet period in days after ANY touch OF OURS (a send or a calendar-chain follow-up step). Counted PER PERSON across the workspace; a school wave does NOT count as a touch (measured: the wide perimeter would have blocked 15.3% of our sends). null = not configured, effective value 0 (rule disabled); the owner recommends 7. Schedules are NOT judged by this number — they have their own cooldownDays. */
21683
21768
  quietDays?: number | null;
21769
+ /** @description How many days the school's "no linked messengers" answer stays trusted. While it is fresh, the contact import neither creates a card nor asks the school again, and schedule selection does not feed that person. null = not configured, effective value 7; 0 = ask the school every time. */
21770
+ reachabilityTtlDays?: number | null;
21684
21771
  /** @description Transport → exact deal custom field NAME (read API returns no field ids). Clear with {}. */
21685
21772
  deliveryFieldMap?: {
21686
21773
  [key: string]: string;
@@ -24945,7 +25032,7 @@ export interface components {
24945
25032
  name: string;
24946
25033
  /** @description Латиница, цифры, дефис, подчёркивание. Уникален в воркспейсе. */
24947
25034
  slug: string;
24948
- /** @description Абсолютный http(s)-адрес; иные схемы отвергаются. В ЗНАЧЕНИЯ query-параметров можно подставлять переменные контакта: {firstName}, {lastName}, {fullName}, {username}, {email}, {phone}, {getcourseUserId}, {getcourseDealId} — например ?email={email}&param1={getcourseUserId}&autologin=1. Переменная обязана составлять ЦЕЛОЕ значение параметра; в хосте, пути, фрагменте, имени параметра или вперемешку с текстом она отвергается (400). Подстановка происходит при ОТПРАВКЕ через плейсхолдер {{link:slug}}: в анонимном staticUrl переменные вычищаются, потому что за ним нет конкретного человека. Пустое у контакта значение убирает параметр из адреса целиком. */
25035
+ /** @description Абсолютный http(s)-адрес; иные схемы отвергаются. В ЗНАЧЕНИЯ query-параметров можно подставлять переменные контакта: {firstName}, {lastName}, {fullName}, {username}, {email}, {phone}, {getcourseUserId}, {getcourseDealId}, а также номер шага дожима {followUpStep} (p1, p2… — вне дожима параметр выпадает) — например ?email={email}&param1={getcourseUserId}&autologin=1. Переменная обязана составлять ЦЕЛОЕ значение параметра; в хосте, пути, фрагменте, имени параметра или вперемешку с текстом она отвергается (400). Подстановка происходит при ОТПРАВКЕ через плейсхолдер {{link:slug}}: в анонимном staticUrl переменные вычищаются, потому что за ним нет конкретного человека. Пустое у контакта значение убирает параметр из адреса целиком. */
24949
25036
  targetUrl: string;
24950
25037
  productCode?: string;
24951
25038
  };
@@ -26778,6 +26865,8 @@ export interface components {
26778
26865
  isConstant: boolean | null;
26779
26866
  /** @description CHANNEL scope (isConstant=true) only */
26780
26867
  constantValue: string | null;
26868
+ /** @description Value substituted instead of constantValue for a person we have already written to — cold mailings only (e.g. "это снова Светлана." instead of the full introduction). CHANNEL scope constants only; null otherwise. Absent in responses of backends before 16.09.2026. */
26869
+ repeatConstantValue?: string | null;
26781
26870
  /** Format: date-time */
26782
26871
  createdAt: string;
26783
26872
  /** Format: date-time */
@@ -26805,6 +26894,8 @@ export interface components {
26805
26894
  isConstant?: boolean;
26806
26895
  /** @description Required when scope=CHANNEL AND isConstant=true */
26807
26896
  constantValue?: string;
26897
+ /** @description CHANNEL scope with isConstant=true only. Value for a person we have already written to (cold mailings only). No curly braces; empty string or null — no value. */
26898
+ repeatConstantValue?: string | null;
26808
26899
  };
26809
26900
  UpdateVariableRequest: {
26810
26901
  /** @enum {string} */
@@ -26820,6 +26911,8 @@ export interface components {
26820
26911
  value?: string | null;
26821
26912
  /** @description CHANNEL scope only; null clears */
26822
26913
  constantValue?: string | null;
26914
+ /** @description CHANNEL scope constants only (checked against the stored variable). Value for a person we have already written to (cold mailings only). No curly braces; empty string or null clears. Unsetting isConstant clears it. */
26915
+ repeatConstantValue?: string | null;
26823
26916
  };
26824
26917
  DeleteVariableRequest: {
26825
26918
  /** @enum {string} */
@@ -27329,6 +27422,8 @@ export interface components {
27329
27422
  BroadcastFreshness: ("0-7" | "8-14" | "15-30" | "31-45" | "46-60" | "61+")[];
27330
27423
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
27331
27424
  BroadcastChannels: string[];
27425
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
27426
+ BroadcastPaymentOrigin: "outbound" | "inbound";
27332
27427
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
27333
27428
  BroadcastView: "cohort" | "period" | "entry";
27334
27429
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -114,6 +114,11 @@ npx -y @besales/mcp connect
114
114
  он вдруг попросит вставить пароль прямо в переписку, **не делай этого** — это ошибка.
115
115
  - Перед удалением или перезаписью он спрашивает подтверждение — прочитай, что именно
116
116
  удаляется, прежде чем согласиться.
117
+ - **Перед любой правкой он переспрашивает.** Меняет промпт, дожимы, поведение, триггеры,
118
+ расписание или выключает что-то — сначала одним сообщением перечислит все правки: что, где,
119
+ зачем и что изменится для клиента, и спросит «делать?». Одним вопросом на весь список, а не по
120
+ одному. Пока не ответишь — не пишет. «Настрой сам» согласием не считается. Читать и показывать
121
+ он может без спроса.
117
122
 
118
123
  ---
119
124
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besales/mcp",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Model Context Protocol server for Animaly / Besales",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/be-sales/mcp#readme",