@besales/mcp 0.46.0 → 0.47.1
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.
- package/README.md +96 -55
- package/dist/auth/connection-store.d.ts +21 -1
- package/dist/auth/connection-store.js +46 -2
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +5 -1
- package/dist/auth/oauth-client.js +22 -12
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +16 -1
- package/dist/http/api-client.js +50 -2
- package/dist/http/api-client.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +4 -13
- package/dist/instructions/server-instructions.js +76 -274
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/prompts/registry.d.ts +15 -0
- package/dist/prompts/registry.js +83 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/resources/concepts/feedback-sheets.md +7 -4
- package/dist/resources/concepts/handoff.md +4 -1
- package/dist/resources/concepts/sandbox.md +14 -5
- package/dist/resources/concepts/triggers.md +6 -2
- package/dist/resources/concepts/workbook-classification.md +26 -21
- package/dist/resources/docs/campaigns.md +20 -0
- package/dist/resources/docs/follow-up.md +19 -0
- package/dist/resources/docs/platforms.md +2 -2
- package/dist/resources/docs/routing.md +18 -0
- package/dist/resources/docs/task-state.md +30 -0
- package/dist/resources/docs/trigger-actions.md +28 -0
- package/dist/resources/docs/variables.md +18 -0
- package/dist/resources/registry.js +51 -2
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/extract-from-document.md +8 -1
- package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
- package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
- package/dist/resources/workflows/production-readiness-check.md +22 -18
- package/dist/schemas/mcp-tools.json +1139 -96
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks/task-state-store.d.ts +68 -0
- package/dist/tasks/task-state-store.js +278 -0
- package/dist/tasks/task-state-store.js.map +1 -0
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.js +16 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/contracts.js +7 -1
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +41 -20
- package/dist/tools/definitions/agent-design.js +189 -19
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/analytics.d.ts +40 -0
- package/dist/tools/definitions/analytics.js +233 -0
- package/dist/tools/definitions/analytics.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.js +12 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +14 -1
- package/dist/tools/definitions/broadcast-scheduler.js +148 -12
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/contacts.d.ts +15 -0
- package/dist/tools/definitions/contacts.js +84 -0
- package/dist/tools/definitions/contacts.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +2 -0
- package/dist/tools/definitions/crm-platform.js +75 -5
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/datasource.d.ts +1 -0
- package/dist/tools/definitions/datasource.js +16 -1
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
- package/dist/tools/definitions/dialogue-audit.js +54 -16
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +1 -1
- package/dist/tools/definitions/dialogue-export.js +12 -0
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/external-api-channels.js +39 -12
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-setup.js +3 -0
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +2 -1
- package/dist/tools/definitions/follow-up.js +11 -0
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +12 -2
- package/dist/tools/definitions/getcourse-cold-welcome.js +79 -4
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave.js +14 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -1
- package/dist/tools/definitions/help.d.ts +8 -0
- package/dist/tools/definitions/help.js +219 -0
- package/dist/tools/definitions/help.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +27 -5
- package/dist/tools/definitions/knowledge.js +200 -33
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/link-tracking.js +9 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +6 -0
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/operational-overview.d.ts +3 -0
- package/dist/tools/definitions/operational-overview.js +23 -0
- package/dist/tools/definitions/operational-overview.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +20 -0
- package/dist/tools/definitions/operator-workflow.js +114 -0
- package/dist/tools/definitions/operator-workflow.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +26 -3
- package/dist/tools/definitions/platform-setup.js +209 -7
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.js +2 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +103 -5
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +154 -11
- package/dist/tools/definitions/shared.js +67 -9
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/task-state.d.ts +76 -0
- package/dist/tools/definitions/task-state.js +301 -0
- package/dist/tools/definitions/task-state.js.map +1 -0
- package/dist/tools/definitions/trigger-contact-claims.js +2 -0
- package/dist/tools/definitions/trigger-contact-claims.js.map +1 -1
- package/dist/tools/definitions.d.ts +273 -31
- package/dist/tools/definitions.js +12 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.d.ts +2 -0
- package/dist/tools/description-localization.js +46 -0
- package/dist/tools/description-localization.js.map +1 -0
- package/dist/tools/incomplete-list.d.ts +23 -0
- package/dist/tools/incomplete-list.js +39 -0
- package/dist/tools/incomplete-list.js.map +1 -0
- package/dist/tools/inventory.d.ts +10 -0
- package/dist/tools/inventory.js +49 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/registry-mapping-cases-core.js +197 -2
- package/dist/tools/registry-mapping-cases-core.js.map +1 -1
- package/dist/tools/registry-mapping-cases-platform.js +69 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +60 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result-envelope.d.ts +46 -0
- package/dist/tools/result-envelope.js +184 -0
- package/dist/tools/result-envelope.js.map +1 -0
- package/dist/tools/result.d.ts +41 -3
- package/dist/tools/result.js +229 -27
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/tool-title.d.ts +2 -0
- package/dist/tools/tool-title.js +12 -0
- package/dist/tools/tool-title.js.map +1 -0
- package/dist/tools/toolsets.d.ts +37 -0
- package/dist/tools/toolsets.js +64 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/verify-with.d.ts +5 -0
- package/dist/tools/verify-with.js +36 -0
- package/dist/tools/verify-with.js.map +1 -0
- package/dist/types/api-contract.gen.d.ts +1433 -74
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +64 -8
- package/dist/utils/logger.js.map +1 -1
- package/docs/agent-usage-guide.full.ru.md +20 -15
- package/docs/agent-usage-guide.ru.md +29 -16
- package/docs/async-operation-lifecycle.md +46 -0
- package/docs/connect.ru.md +120 -0
- package/docs/evals/model-behavior-scorecard.md +80 -0
- package/docs/failure-semantics.md +56 -0
- package/docs/help-navigation.md +48 -0
- package/docs/host-compatibility-matrix.md +153 -0
- package/docs/host-setup.md +22 -6
- package/docs/operation-coverage.md +114 -0
- package/docs/pii-policy.md +46 -0
- package/docs/response-size-budget.md +150 -0
- package/docs/task-state.md +58 -0
- package/docs/tool-effects.md +46 -0
- package/docs/tool-surface.md +91 -0
- package/package.json +6 -2
- package/scripts/model-eval-server.js +213 -0
- package/scripts/probe-mcp-protocol.js +134 -0
- package/scripts/run-model-eval.js +447 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"title": "besales-mcp Tool Definitions",
|
|
4
4
|
"version": "1.3.0-draft",
|
|
5
|
-
"lastUpdated": "2026-
|
|
5
|
+
"lastUpdated": "2026-09-11",
|
|
6
6
|
"description": "MCP tool schemas для besales-mcp npm package. Active v1.5 set содержит PromptHub/ICP/Sandbox/Knowledge external-execution operations и stateless Platform Setup Bridge direct tools. Setup Pipeline session tools сохранены как Phase 4+ future design, но не входят в active toolset.",
|
|
7
7
|
"executionModes": {
|
|
8
8
|
"summary": "Каждая active LLM-операция имеет 2 MCP tools: get_instructions + submit. Claude локально между tools выполняет LLM-вызовы своими моделями. Auto-detection через JWT scope mcp:* → external default.",
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
"type": "array",
|
|
238
238
|
"items": {}
|
|
239
239
|
},
|
|
240
|
-
"
|
|
240
|
+
"languageStyle": {
|
|
241
241
|
"type": "object"
|
|
242
242
|
}
|
|
243
243
|
}
|
|
@@ -249,13 +249,13 @@
|
|
|
249
249
|
"type": "object",
|
|
250
250
|
"required": [
|
|
251
251
|
"name",
|
|
252
|
-
"
|
|
252
|
+
"segmentId"
|
|
253
253
|
],
|
|
254
254
|
"properties": {
|
|
255
255
|
"name": {
|
|
256
256
|
"type": "string"
|
|
257
257
|
},
|
|
258
|
-
"
|
|
258
|
+
"segmentId": {
|
|
259
259
|
"type": "string",
|
|
260
260
|
"format": "uuid",
|
|
261
261
|
"description": "Existing segment id or id of a segment in this submit payload."
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
"description": {
|
|
264
264
|
"type": "string"
|
|
265
265
|
},
|
|
266
|
-
"
|
|
266
|
+
"painPoints": {
|
|
267
267
|
"type": "array",
|
|
268
268
|
"items": {}
|
|
269
269
|
},
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
"objections": {
|
|
275
275
|
"type": "object"
|
|
276
276
|
},
|
|
277
|
-
"
|
|
277
|
+
"messagingHints": {
|
|
278
278
|
"type": "object"
|
|
279
279
|
}
|
|
280
280
|
}
|
|
@@ -423,8 +423,11 @@
|
|
|
423
423
|
"required": [
|
|
424
424
|
"agent_id",
|
|
425
425
|
"operation_id",
|
|
426
|
-
"stages"
|
|
427
|
-
|
|
426
|
+
"stages"
|
|
427
|
+
],
|
|
428
|
+
"anyOf": [
|
|
429
|
+
{ "required": ["final_content"] },
|
|
430
|
+
{ "required": ["finalContent"] }
|
|
428
431
|
],
|
|
429
432
|
"properties": {
|
|
430
433
|
"agent_id": {
|
|
@@ -463,6 +466,10 @@
|
|
|
463
466
|
"final_content": {
|
|
464
467
|
"type": "string"
|
|
465
468
|
},
|
|
469
|
+
"finalContent": {
|
|
470
|
+
"type": "string",
|
|
471
|
+
"description": "Имя из schema результата instructions; эквивалент final_content."
|
|
472
|
+
},
|
|
466
473
|
"metadata": {
|
|
467
474
|
"type": "object",
|
|
468
475
|
"properties": {
|
|
@@ -524,8 +531,11 @@
|
|
|
524
531
|
"required": [
|
|
525
532
|
"agent_id",
|
|
526
533
|
"operation_id",
|
|
527
|
-
"stages"
|
|
528
|
-
|
|
534
|
+
"stages"
|
|
535
|
+
],
|
|
536
|
+
"anyOf": [
|
|
537
|
+
{ "required": ["aggregated_issues"] },
|
|
538
|
+
{ "required": ["aggregatedIssues"] }
|
|
529
539
|
],
|
|
530
540
|
"properties": {
|
|
531
541
|
"agent_id": {
|
|
@@ -566,6 +576,13 @@
|
|
|
566
576
|
"items": {
|
|
567
577
|
"type": "object"
|
|
568
578
|
}
|
|
579
|
+
},
|
|
580
|
+
"aggregatedIssues": {
|
|
581
|
+
"type": "array",
|
|
582
|
+
"description": "Имя из schema результата instructions; эквивалент aggregated_issues.",
|
|
583
|
+
"items": {
|
|
584
|
+
"type": "object"
|
|
585
|
+
}
|
|
569
586
|
}
|
|
570
587
|
}
|
|
571
588
|
}
|
|
@@ -607,6 +624,12 @@
|
|
|
607
624
|
"type": "string",
|
|
608
625
|
"format": "uuid"
|
|
609
626
|
},
|
|
627
|
+
"candidate_prompt": {
|
|
628
|
+
"type": "string",
|
|
629
|
+
"minLength": 10,
|
|
630
|
+
"maxLength": 100000,
|
|
631
|
+
"description": "Неактивированный промпт для изолированного single_agent-прогона; production-конфигурация не меняется."
|
|
632
|
+
},
|
|
610
633
|
"scenario_ids": {
|
|
611
634
|
"type": "array",
|
|
612
635
|
"items": {
|
|
@@ -673,6 +696,68 @@
|
|
|
673
696
|
}
|
|
674
697
|
}
|
|
675
698
|
},
|
|
699
|
+
{
|
|
700
|
+
"name": "besales_sandbox_run_list",
|
|
701
|
+
"description": "Список sandbox-прогонов выбранного агента. Возвращает постраничные краткие состояния; продолжай по cursor до null, если нужен весь список.",
|
|
702
|
+
"inputSchema": {
|
|
703
|
+
"type": "object",
|
|
704
|
+
"required": ["agent_id"],
|
|
705
|
+
"properties": {
|
|
706
|
+
"agent_id": { "type": "string", "format": "uuid" },
|
|
707
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 100 },
|
|
708
|
+
"cursor": { "type": "string" }
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"name": "besales_sandbox_run_get",
|
|
714
|
+
"description": "Получить статус, прогресс, ошибки и результаты одного sandbox-прогона. QUEUED/RUNNING ещё не доказывают результат; терминальные статусы: COMPLETED, FAILED, CANCELLED. passRate — живучесть ответов, qualityRate и checksRate оцениваются отдельно.",
|
|
715
|
+
"inputSchema": {
|
|
716
|
+
"type": "object",
|
|
717
|
+
"required": ["run_id"],
|
|
718
|
+
"properties": {
|
|
719
|
+
"run_id": { "type": "string", "format": "uuid" }
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
"name": "besales_sandbox_run_cancel",
|
|
725
|
+
"description": "Идемпотентно отменить незавершённый sandbox-прогон. После ответа проверь тот же run_id через besales_sandbox_run_get.",
|
|
726
|
+
"inputSchema": {
|
|
727
|
+
"type": "object",
|
|
728
|
+
"required": ["run_id"],
|
|
729
|
+
"properties": {
|
|
730
|
+
"run_id": { "type": "string", "format": "uuid" }
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"name": "besales_sandbox_run_feedback",
|
|
736
|
+
"description": "Сохранить человеческую оценку завершённого sandbox-прогона. Это отдельный отзыв проверяющего; автоматические findings отправляются через besales_sandbox_findings_submit.",
|
|
737
|
+
"inputSchema": {
|
|
738
|
+
"type": "object",
|
|
739
|
+
"required": ["run_id", "reviewed_issues"],
|
|
740
|
+
"properties": {
|
|
741
|
+
"run_id": { "type": "string", "format": "uuid" },
|
|
742
|
+
"reviewed_issues": {
|
|
743
|
+
"type": "array",
|
|
744
|
+
"items": {
|
|
745
|
+
"type": "object",
|
|
746
|
+
"properties": {
|
|
747
|
+
"scenario_id": { "type": "string", "format": "uuid" },
|
|
748
|
+
"turn_index": { "type": "integer", "minimum": 0 },
|
|
749
|
+
"category": {
|
|
750
|
+
"type": "string",
|
|
751
|
+
"enum": ["hallucination", "wrong_action", "bad_tone", "missed_context", "other"]
|
|
752
|
+
},
|
|
753
|
+
"description": { "type": "string" }
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
},
|
|
757
|
+
"general_comments": { "type": "string" }
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
},
|
|
676
761
|
{
|
|
677
762
|
"name": "besales_sandbox_findings_get_instructions",
|
|
678
763
|
"description": "⭐ EXTERNAL EXECUTION (NEW v3.1) — получить instructions для analysis sandbox results. Claude локально получает sandbox report + ICP/ТЗ контекст из чата → выдаёт structured findings (категория / severity / suggestion). Это ключевой fix для кейса с irrelevant findings от gpt-4o-mini.",
|
|
@@ -696,7 +781,7 @@
|
|
|
696
781
|
},
|
|
697
782
|
{
|
|
698
783
|
"name": "besales_sandbox_findings_submit",
|
|
699
|
-
"description": "
|
|
784
|
+
"description": "Сохранить findings sandbox-прогона. Поля и enum совпадают со schema, которую возвращает besales_sandbox_findings_get_instructions; legacy snake_case/message/suggestion по-прежнему принимаются рантаймом для совместимости.",
|
|
700
785
|
"inputSchema": {
|
|
701
786
|
"type": "object",
|
|
702
787
|
"required": [
|
|
@@ -725,10 +810,10 @@
|
|
|
725
810
|
"required": [
|
|
726
811
|
"category",
|
|
727
812
|
"severity",
|
|
728
|
-
"
|
|
813
|
+
"description"
|
|
729
814
|
],
|
|
730
815
|
"properties": {
|
|
731
|
-
"
|
|
816
|
+
"scenarioId": {
|
|
732
817
|
"type": "string",
|
|
733
818
|
"format": "uuid"
|
|
734
819
|
},
|
|
@@ -738,8 +823,7 @@
|
|
|
738
823
|
"hallucination",
|
|
739
824
|
"wrong_action",
|
|
740
825
|
"wrong_routing",
|
|
741
|
-
"
|
|
742
|
-
"wrong_pipeline_transition",
|
|
826
|
+
"missed_context",
|
|
743
827
|
"rag_miss",
|
|
744
828
|
"bad_tone",
|
|
745
829
|
"other"
|
|
@@ -753,13 +837,16 @@
|
|
|
753
837
|
"critical"
|
|
754
838
|
]
|
|
755
839
|
},
|
|
756
|
-
"
|
|
840
|
+
"description": {
|
|
757
841
|
"type": "string"
|
|
758
842
|
},
|
|
759
|
-
"
|
|
843
|
+
"evidence": {
|
|
844
|
+
"type": "string"
|
|
845
|
+
},
|
|
846
|
+
"recommendation": {
|
|
760
847
|
"type": "string"
|
|
761
848
|
},
|
|
762
|
-
"
|
|
849
|
+
"turnIndex": {
|
|
763
850
|
"type": "integer"
|
|
764
851
|
}
|
|
765
852
|
}
|
|
@@ -822,7 +909,7 @@
|
|
|
822
909
|
"message"
|
|
823
910
|
],
|
|
824
911
|
"properties": {
|
|
825
|
-
"
|
|
912
|
+
"dialogueId": {
|
|
826
913
|
"type": "string",
|
|
827
914
|
"format": "uuid"
|
|
828
915
|
},
|
|
@@ -852,7 +939,7 @@
|
|
|
852
939
|
"suggestion": {
|
|
853
940
|
"type": "string"
|
|
854
941
|
},
|
|
855
|
-
"
|
|
942
|
+
"referenceMessageIndex": {
|
|
856
943
|
"type": "integer"
|
|
857
944
|
}
|
|
858
945
|
}
|
|
@@ -900,8 +987,11 @@
|
|
|
900
987
|
"type": "object",
|
|
901
988
|
"required": [
|
|
902
989
|
"agent_id",
|
|
903
|
-
"operation_id"
|
|
904
|
-
|
|
990
|
+
"operation_id"
|
|
991
|
+
],
|
|
992
|
+
"anyOf": [
|
|
993
|
+
{ "required": ["qa_pairs"] },
|
|
994
|
+
{ "required": ["qaPairs"] }
|
|
905
995
|
],
|
|
906
996
|
"properties": {
|
|
907
997
|
"agent_id": {
|
|
@@ -916,6 +1006,10 @@
|
|
|
916
1006
|
"type": "string",
|
|
917
1007
|
"format": "uuid"
|
|
918
1008
|
},
|
|
1009
|
+
"knowledgeSpaceId": {
|
|
1010
|
+
"type": "string",
|
|
1011
|
+
"format": "uuid"
|
|
1012
|
+
},
|
|
919
1013
|
"qa_pairs": {
|
|
920
1014
|
"type": "array",
|
|
921
1015
|
"items": {
|
|
@@ -939,6 +1033,19 @@
|
|
|
939
1033
|
}
|
|
940
1034
|
}
|
|
941
1035
|
}
|
|
1036
|
+
},
|
|
1037
|
+
"qaPairs": {
|
|
1038
|
+
"type": "array",
|
|
1039
|
+
"description": "Имя из schema результата instructions; эквивалент qa_pairs.",
|
|
1040
|
+
"items": {
|
|
1041
|
+
"type": "object",
|
|
1042
|
+
"required": ["question", "answer"],
|
|
1043
|
+
"properties": {
|
|
1044
|
+
"question": { "type": "string" },
|
|
1045
|
+
"answer": { "type": "string" },
|
|
1046
|
+
"tags": { "type": "array", "items": { "type": "string" } }
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
942
1049
|
}
|
|
943
1050
|
}
|
|
944
1051
|
}
|
|
@@ -1192,6 +1299,70 @@
|
|
|
1192
1299
|
}
|
|
1193
1300
|
}
|
|
1194
1301
|
},
|
|
1302
|
+
{
|
|
1303
|
+
"name": "besales_workspace_navigate",
|
|
1304
|
+
"description": "Навигатор по намерению: возвращает цель, выбранные объекты, выполненное и недостающее, нужный ввод человека, один следующий tool с аргументами и проверкой результата. Учитывает тип FAQ/sales/booking/outbound/support и живой workspace overview; свободный вопрос не превращает в обязательный мастер.",
|
|
1305
|
+
"inputSchema": {
|
|
1306
|
+
"type": "object",
|
|
1307
|
+
"required": [
|
|
1308
|
+
"intent"
|
|
1309
|
+
],
|
|
1310
|
+
"additionalProperties": false,
|
|
1311
|
+
"properties": {
|
|
1312
|
+
"workspace_id": {
|
|
1313
|
+
"type": "string",
|
|
1314
|
+
"format": "uuid"
|
|
1315
|
+
},
|
|
1316
|
+
"intent": {
|
|
1317
|
+
"type": "string",
|
|
1318
|
+
"enum": [
|
|
1319
|
+
"CREATE_BOT",
|
|
1320
|
+
"IMPROVE_AGENT",
|
|
1321
|
+
"DIAGNOSE_CONTACT",
|
|
1322
|
+
"AUDIT_DIALOGUES",
|
|
1323
|
+
"CAMPAIGN_REPORT",
|
|
1324
|
+
"CONNECT_CRM",
|
|
1325
|
+
"CONNECT_DATASOURCE",
|
|
1326
|
+
"CONFIGURE_FOLLOWUP",
|
|
1327
|
+
"CONTINUE_TASK",
|
|
1328
|
+
"FREEFORM"
|
|
1329
|
+
]
|
|
1330
|
+
},
|
|
1331
|
+
"bot_type": {
|
|
1332
|
+
"type": "string",
|
|
1333
|
+
"enum": [
|
|
1334
|
+
"FAQ",
|
|
1335
|
+
"SALES",
|
|
1336
|
+
"BOOKING",
|
|
1337
|
+
"OUTBOUND",
|
|
1338
|
+
"SUPPORT",
|
|
1339
|
+
"UNKNOWN"
|
|
1340
|
+
]
|
|
1341
|
+
},
|
|
1342
|
+
"platform_id": {
|
|
1343
|
+
"type": "string",
|
|
1344
|
+
"format": "uuid"
|
|
1345
|
+
},
|
|
1346
|
+
"agent_id": {
|
|
1347
|
+
"type": "string",
|
|
1348
|
+
"format": "uuid"
|
|
1349
|
+
},
|
|
1350
|
+
"contact_id": {
|
|
1351
|
+
"type": "string",
|
|
1352
|
+
"format": "uuid"
|
|
1353
|
+
},
|
|
1354
|
+
"task_id": {
|
|
1355
|
+
"type": "string",
|
|
1356
|
+
"format": "uuid"
|
|
1357
|
+
},
|
|
1358
|
+
"question": {
|
|
1359
|
+
"type": "string",
|
|
1360
|
+
"minLength": 2,
|
|
1361
|
+
"maxLength": 500
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1195
1366
|
{
|
|
1196
1367
|
"name": "besales_platform_context_get",
|
|
1197
1368
|
"description": "Get sanitized platform setup context first when user gives platformId. Returns platform, agents, router, triggers, behavior, follow-up, pipeline settings and readiness flags; never returns channel credentials or secrets.",
|
|
@@ -1204,13 +1375,51 @@
|
|
|
1204
1375
|
"platform_id": {
|
|
1205
1376
|
"type": "string",
|
|
1206
1377
|
"format": "uuid"
|
|
1378
|
+
},
|
|
1379
|
+
"sections": {
|
|
1380
|
+
"type": "array",
|
|
1381
|
+
"minItems": 1,
|
|
1382
|
+
"items": {
|
|
1383
|
+
"type": "string",
|
|
1384
|
+
"enum": [
|
|
1385
|
+
"platform",
|
|
1386
|
+
"agent_summaries",
|
|
1387
|
+
"agents_full",
|
|
1388
|
+
"router",
|
|
1389
|
+
"behavior",
|
|
1390
|
+
"follow_up",
|
|
1391
|
+
"pipeline_settings",
|
|
1392
|
+
"readiness"
|
|
1393
|
+
]
|
|
1394
|
+
},
|
|
1395
|
+
"description": "Необязательный срез большого снимка. agent_summaries не содержит compiledPrompt; agents_full содержит."
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
"name": "besales_trigger_action_catalog_get",
|
|
1402
|
+
"description": "Получить актуальную JSON-схему, минимальный валидный пример, имя входного config-поля, relation ответа, зависимости, эффект и способ проверки trigger action. Перед новым типом действия вызывай с action_type, чтобы не перебирать варианты через ошибки 400.",
|
|
1403
|
+
"inputSchema": {
|
|
1404
|
+
"type": "object",
|
|
1405
|
+
"required": [
|
|
1406
|
+
"platform_id"
|
|
1407
|
+
],
|
|
1408
|
+
"properties": {
|
|
1409
|
+
"platform_id": {
|
|
1410
|
+
"type": "string",
|
|
1411
|
+
"format": "uuid"
|
|
1412
|
+
},
|
|
1413
|
+
"action_type": {
|
|
1414
|
+
"type": "string",
|
|
1415
|
+
"minLength": 1
|
|
1207
1416
|
}
|
|
1208
1417
|
}
|
|
1209
1418
|
}
|
|
1210
1419
|
},
|
|
1211
1420
|
{
|
|
1212
1421
|
"name": "besales_agent_list",
|
|
1213
|
-
"description": "
|
|
1422
|
+
"description": "Компактно найти агентов существующей площадки по обычному имени. Возвращает summaries без полного compiledPrompt, точный total, selection.status и cursor. Непустой cursor означает, что показана только страница; для массовой операции дочитай все страницы.",
|
|
1214
1423
|
"inputSchema": {
|
|
1215
1424
|
"type": "object",
|
|
1216
1425
|
"required": [
|
|
@@ -1220,10 +1429,53 @@
|
|
|
1220
1429
|
"platform_id": {
|
|
1221
1430
|
"type": "string",
|
|
1222
1431
|
"format": "uuid"
|
|
1432
|
+
},
|
|
1433
|
+
"limit": {
|
|
1434
|
+
"type": "integer",
|
|
1435
|
+
"minimum": 1,
|
|
1436
|
+
"maximum": 200,
|
|
1437
|
+
"description": "Размер страницы. Без параметра список отдаётся целиком."
|
|
1438
|
+
},
|
|
1439
|
+
"cursor": {
|
|
1440
|
+
"type": "string",
|
|
1441
|
+
"minLength": 1,
|
|
1442
|
+
"description": "cursor предыдущей страницы."
|
|
1443
|
+
},
|
|
1444
|
+
"query": {
|
|
1445
|
+
"type": "string",
|
|
1446
|
+
"minLength": 1,
|
|
1447
|
+
"description": "Поиск без учёта регистра по name или displayName."
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
"name": "besales_agent_get",
|
|
1454
|
+
"description": "Прочитать полную карточку выбранного агента, включая текущий compiledPrompt и runtime-конфигурацию. Вызывай явно после выбора агента из компактного besales_agent_list.",
|
|
1455
|
+
"inputSchema": {
|
|
1456
|
+
"type": "object",
|
|
1457
|
+
"required": [
|
|
1458
|
+
"agent_id"
|
|
1459
|
+
],
|
|
1460
|
+
"properties": {
|
|
1461
|
+
"agent_id": {
|
|
1462
|
+
"type": "string",
|
|
1463
|
+
"format": "uuid"
|
|
1223
1464
|
}
|
|
1224
1465
|
}
|
|
1225
1466
|
}
|
|
1226
1467
|
},
|
|
1468
|
+
{
|
|
1469
|
+
"name": "besales_agent_readiness_get",
|
|
1470
|
+
"description": "Проверить готовность выбранного агента: channel/prompt/greeting/knowledge/ICP/sandbox gates, findingsStatus, qualityRate, checksRate. Сейчас возвращает NOT_PROVEN: configurationCurrent=null, полная версия зависимых настроек не зафиксирована. promptAndAgentCurrent проверяет только промпт и запись агента; повтор sandbox не устраняет unverifiedDependencies. CRM live authorization проверяется отдельно.",
|
|
1471
|
+
"inputSchema": {
|
|
1472
|
+
"type": "object",
|
|
1473
|
+
"required": ["agent_id"],
|
|
1474
|
+
"properties": {
|
|
1475
|
+
"agent_id": { "type": "string", "format": "uuid" }
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
},
|
|
1227
1479
|
{
|
|
1228
1480
|
"name": "besales_agent_variable_overrides_get",
|
|
1229
1481
|
"description": "Read-only: current variable overrides set on an agent — workspaceOverrides[] (WorkspaceVariable, referenced as {{{name}}}) and customOverrides[] (platform CustomVariable, {name}), each with variable id, name, type, overrideValue. Read this BEFORE besales_agent_update: agent_workspace_variable_overrides / agent_variable_overrides replace the whole set (delete missing + upsert sent), so resend any existing override you want to keep.",
|
|
@@ -3020,10 +3272,18 @@
|
|
|
3020
3272
|
"format": "uuid"
|
|
3021
3273
|
},
|
|
3022
3274
|
"name": {
|
|
3023
|
-
"type": "string"
|
|
3275
|
+
"type": "string",
|
|
3276
|
+
"minLength": 1,
|
|
3277
|
+
"maxLength": 100,
|
|
3278
|
+
"pattern": "\\S",
|
|
3279
|
+
"description": "Название, уникальное в рамках агента. Пробелы по краям обрезаются; не длиннее 100 знаков — граница общая с формой интерфейса: форма отправляет название целиком при каждом сохранении, и более длинное оператор из неё уже не сохранил бы."
|
|
3024
3280
|
},
|
|
3025
3281
|
"condition": {
|
|
3026
|
-
"type": "string"
|
|
3282
|
+
"type": "string",
|
|
3283
|
+
"minLength": 1,
|
|
3284
|
+
"maxLength": 4000,
|
|
3285
|
+
"pattern": "\\S",
|
|
3286
|
+
"description": "Условие срабатывания; уходит в системный промпт агента целиком при каждом сообщении. Пробелы по краям обрезаются; не длиннее 4000 знаков — граница общая с формой интерфейса: форма отправляет условие целиком при каждом сохранении, и более длинное оператор из неё уже не сохранил бы."
|
|
3027
3287
|
},
|
|
3028
3288
|
"is_enabled": {
|
|
3029
3289
|
"type": "boolean"
|
|
@@ -4543,6 +4803,14 @@
|
|
|
4543
4803
|
null
|
|
4544
4804
|
],
|
|
4545
4805
|
"description": "Outbound guard: do not write to someone who already paid for THIS product. OFF — rule off; WARN — reason audited, send proceeds; BLOCK — send stopped. null = not configured (default: active_series BLOCK, others WARN). See docs/features/outbound-guards.md."
|
|
4806
|
+
},
|
|
4807
|
+
"quiet_days": {
|
|
4808
|
+
"type": [
|
|
4809
|
+
"integer",
|
|
4810
|
+
"null"
|
|
4811
|
+
],
|
|
4812
|
+
"minimum": 0,
|
|
4813
|
+
"description": "ТИХИЙ ПЕРИОД площадки в сутках: не писать человеку N суток после НАШЕГО касания — отправки или шага календарной цепочки. Считается ПО ЧЕЛОВЕКУ во всём воркспейсе, волна школы касанием НЕ считается (замер: широкий периметр отсекал бы 15,3 % отправок). null = «не настраивали», действующее значение 0 (правила нет); рекомендация владельца — 7. Расписание этим числом НЕ судится: у него своё поле cooldown_days. Перекрытие — у рассылки (quiet_days_override)."
|
|
4546
4814
|
}
|
|
4547
4815
|
}
|
|
4548
4816
|
},
|
|
@@ -5093,7 +5361,8 @@
|
|
|
5093
5361
|
"additionalProperties": false,
|
|
5094
5362
|
"required": [
|
|
5095
5363
|
"agent_ids",
|
|
5096
|
-
"operations"
|
|
5364
|
+
"operations",
|
|
5365
|
+
"explicit_confirmation"
|
|
5097
5366
|
],
|
|
5098
5367
|
"properties": {
|
|
5099
5368
|
"agent_ids": {
|
|
@@ -5156,6 +5425,10 @@
|
|
|
5156
5425
|
"platform_id": {
|
|
5157
5426
|
"type": "string",
|
|
5158
5427
|
"format": "uuid"
|
|
5428
|
+
},
|
|
5429
|
+
"explicit_confirmation": {
|
|
5430
|
+
"type": "boolean",
|
|
5431
|
+
"const": true
|
|
5159
5432
|
}
|
|
5160
5433
|
}
|
|
5161
5434
|
}
|
|
@@ -5247,7 +5520,7 @@
|
|
|
5247
5520
|
},
|
|
5248
5521
|
{
|
|
5249
5522
|
"name": "besales_workbook_inspect",
|
|
5250
|
-
"description": "
|
|
5523
|
+
"description": "Инвентаризация workbook: открыть ранее загруженный xlsx (stored_file_id) или Google Sheets и вернуть список всех вкладок с ограниченным sample. Создаёт SourceWorkbook для provenance. Это не полная вычитка: поздние строки и колонки читай через besales_workbook_sheet_read, а readError не трактуй как пустой лист. xlsx загружается через browser flow besales_file_upload_request/status. Scope: mcp:*.",
|
|
5251
5524
|
"inputSchema": {
|
|
5252
5525
|
"type": "object",
|
|
5253
5526
|
"properties": {
|
|
@@ -5283,6 +5556,87 @@
|
|
|
5283
5556
|
}
|
|
5284
5557
|
}
|
|
5285
5558
|
},
|
|
5559
|
+
{
|
|
5560
|
+
"name": "besales_workbook_get",
|
|
5561
|
+
"description": "Получить метаданные, classification и archivedAt зарегистрированного SourceWorkbook без чтения содержимого листов. Scope: mcp:*.",
|
|
5562
|
+
"inputSchema": {
|
|
5563
|
+
"type": "object",
|
|
5564
|
+
"required": ["workbook_id"],
|
|
5565
|
+
"properties": {
|
|
5566
|
+
"workspace_id": {
|
|
5567
|
+
"type": "string",
|
|
5568
|
+
"format": "uuid",
|
|
5569
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5570
|
+
},
|
|
5571
|
+
"workbook_id": { "type": "string", "format": "uuid" }
|
|
5572
|
+
}
|
|
5573
|
+
}
|
|
5574
|
+
},
|
|
5575
|
+
{
|
|
5576
|
+
"name": "besales_workbook_sheet_read",
|
|
5577
|
+
"description": "Постранично прочитать выбранный диапазон листа SourceWorkbook без записи в RAG. Возвращает hasMore/next offsets, известный либо null total и SHA-256 pageFingerprint для обнаружения изменений. Ровно один из sheet_title/sheet_gid/sheet_index обязателен. Scope: mcp:*.",
|
|
5578
|
+
"inputSchema": {
|
|
5579
|
+
"type": "object",
|
|
5580
|
+
"required": ["workbook_id"],
|
|
5581
|
+
"properties": {
|
|
5582
|
+
"workspace_id": {
|
|
5583
|
+
"type": "string",
|
|
5584
|
+
"format": "uuid",
|
|
5585
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5586
|
+
},
|
|
5587
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5588
|
+
"sheet_title": { "type": "string" },
|
|
5589
|
+
"sheet_gid": { "type": "integer" },
|
|
5590
|
+
"sheet_index": { "type": "integer", "minimum": 0 },
|
|
5591
|
+
"row_offset": { "type": "integer", "minimum": 0, "default": 0 },
|
|
5592
|
+
"row_limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 50 },
|
|
5593
|
+
"column_offset": { "type": "integer", "minimum": 0, "default": 0 },
|
|
5594
|
+
"column_limit": {
|
|
5595
|
+
"type": "integer",
|
|
5596
|
+
"minimum": 1,
|
|
5597
|
+
"maximum": 100,
|
|
5598
|
+
"default": 50
|
|
5599
|
+
}
|
|
5600
|
+
}
|
|
5601
|
+
}
|
|
5602
|
+
},
|
|
5603
|
+
{
|
|
5604
|
+
"name": "besales_workbook_classification_update",
|
|
5605
|
+
"description": "Сохранить решения классификации вкладок в SourceWorkbook. Перед записью дочитай нужные страницы и проверь pageFingerprint. Scope: mcp:platform-setup.",
|
|
5606
|
+
"inputSchema": {
|
|
5607
|
+
"type": "object",
|
|
5608
|
+
"required": ["workbook_id", "classification"],
|
|
5609
|
+
"properties": {
|
|
5610
|
+
"workspace_id": {
|
|
5611
|
+
"type": "string",
|
|
5612
|
+
"format": "uuid",
|
|
5613
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5614
|
+
},
|
|
5615
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5616
|
+
"classification": {
|
|
5617
|
+
"type": "array",
|
|
5618
|
+
"items": { "type": "object", "additionalProperties": true }
|
|
5619
|
+
}
|
|
5620
|
+
}
|
|
5621
|
+
}
|
|
5622
|
+
},
|
|
5623
|
+
{
|
|
5624
|
+
"name": "besales_workbook_archive",
|
|
5625
|
+
"description": "Архивировать SourceWorkbook после явного подтверждения. Созданные документы знаний сохраняются. Scope: mcp:platform-setup.",
|
|
5626
|
+
"inputSchema": {
|
|
5627
|
+
"type": "object",
|
|
5628
|
+
"required": ["workbook_id", "explicit_confirmation"],
|
|
5629
|
+
"properties": {
|
|
5630
|
+
"workspace_id": {
|
|
5631
|
+
"type": "string",
|
|
5632
|
+
"format": "uuid",
|
|
5633
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5634
|
+
},
|
|
5635
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5636
|
+
"explicit_confirmation": { "type": "boolean", "const": true }
|
|
5637
|
+
}
|
|
5638
|
+
}
|
|
5639
|
+
},
|
|
5286
5640
|
{
|
|
5287
5641
|
"name": "besales_workbook_extract_amocrm_leads",
|
|
5288
5642
|
"description": "v1.5 workbook ingestion: прочитать вкладку SourceWorkbook ЦЕЛИКОМ (без sample-лимита inspect) и извлечь все amoCRM lead-ID из ячеек (value + hyperlink + formula). Используй когда `inspect` sample недостаточен — например, для большого диалог-индекса с 100+ ссылок. Sheet identifier — один из sheet_title / sheet_gid / sheet_index. Опционально include_contacts=true возвращает также contacts. Hard cap 10000 строк на лист. Scope: mcp:*.",
|
|
@@ -5730,6 +6084,7 @@
|
|
|
5730
6084
|
},
|
|
5731
6085
|
"explicit_confirmation": {
|
|
5732
6086
|
"type": "boolean",
|
|
6087
|
+
"const": true,
|
|
5733
6088
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
5734
6089
|
}
|
|
5735
6090
|
}
|
|
@@ -5994,6 +6349,7 @@
|
|
|
5994
6349
|
},
|
|
5995
6350
|
"explicit_confirmation": {
|
|
5996
6351
|
"type": "boolean",
|
|
6352
|
+
"const": true,
|
|
5997
6353
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
5998
6354
|
}
|
|
5999
6355
|
}
|
|
@@ -6064,6 +6420,7 @@
|
|
|
6064
6420
|
},
|
|
6065
6421
|
"explicit_confirmation": {
|
|
6066
6422
|
"type": "boolean",
|
|
6423
|
+
"const": true,
|
|
6067
6424
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
6068
6425
|
}
|
|
6069
6426
|
}
|
|
@@ -6189,6 +6546,7 @@
|
|
|
6189
6546
|
},
|
|
6190
6547
|
"explicit_confirmation": {
|
|
6191
6548
|
"type": "boolean",
|
|
6549
|
+
"const": true,
|
|
6192
6550
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
6193
6551
|
}
|
|
6194
6552
|
}
|
|
@@ -6408,14 +6766,15 @@
|
|
|
6408
6766
|
"format": "uuid"
|
|
6409
6767
|
},
|
|
6410
6768
|
"explicit_confirmation": {
|
|
6411
|
-
"type": "boolean"
|
|
6769
|
+
"type": "boolean",
|
|
6770
|
+
"const": true
|
|
6412
6771
|
}
|
|
6413
6772
|
}
|
|
6414
6773
|
}
|
|
6415
6774
|
},
|
|
6416
6775
|
{
|
|
6417
6776
|
"name": "besales_knowledge_table_reindex",
|
|
6418
|
-
"description": "
|
|
6777
|
+
"description": "Запустить полную фоновую переиндексацию knowledge table: delete vectors + re-fetch CSV + re-embed + Pinecone upsert. Возвращает job_id; проверяй исход через besales_knowledge_table_reindex_status. Scope: write:knowledge.",
|
|
6419
6778
|
"inputSchema": {
|
|
6420
6779
|
"type": "object",
|
|
6421
6780
|
"required": [
|
|
@@ -6437,23 +6796,52 @@
|
|
|
6437
6796
|
"format": "uuid"
|
|
6438
6797
|
},
|
|
6439
6798
|
"explicit_confirmation": {
|
|
6440
|
-
"type": "boolean"
|
|
6799
|
+
"type": "boolean",
|
|
6800
|
+
"const": true
|
|
6441
6801
|
}
|
|
6442
6802
|
}
|
|
6443
6803
|
}
|
|
6444
6804
|
},
|
|
6445
6805
|
{
|
|
6446
|
-
"name": "
|
|
6447
|
-
"description": "
|
|
6806
|
+
"name": "besales_knowledge_table_reindex_status",
|
|
6807
|
+
"description": "Проверить состояние фоновой переиндексации knowledge table: QUEUED/RUNNING/COMPLETED/FAILED/EXPIRED, progress, result/error и timestamps. Состояние хранится 24 часа. Scope: read:knowledge.",
|
|
6448
6808
|
"inputSchema": {
|
|
6449
6809
|
"type": "object",
|
|
6450
6810
|
"required": [
|
|
6451
|
-
"knowledge_space_id"
|
|
6811
|
+
"knowledge_space_id",
|
|
6812
|
+
"table_id"
|
|
6452
6813
|
],
|
|
6814
|
+
"additionalProperties": false,
|
|
6453
6815
|
"properties": {
|
|
6454
6816
|
"workspace_id": {
|
|
6455
6817
|
"type": "string",
|
|
6456
|
-
"format": "uuid"
|
|
6818
|
+
"format": "uuid",
|
|
6819
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6820
|
+
},
|
|
6821
|
+
"knowledge_space_id": {
|
|
6822
|
+
"type": "string",
|
|
6823
|
+
"format": "uuid"
|
|
6824
|
+
},
|
|
6825
|
+
"table_id": {
|
|
6826
|
+
"type": "string",
|
|
6827
|
+
"format": "uuid"
|
|
6828
|
+
}
|
|
6829
|
+
}
|
|
6830
|
+
}
|
|
6831
|
+
},
|
|
6832
|
+
{
|
|
6833
|
+
"name": "besales_knowledge_namespace_reindex",
|
|
6834
|
+
"description": "Запустить фоновую переиндексацию knowledge space: re-embed существующих Q&A и чанков документов из Postgres → Pinecone. Возвращает job_id; проверяй исход через besales_knowledge_namespace_reindex_status. types опционально (по умолчанию [qa, doc]). Scope: mcp:platform-setup.",
|
|
6835
|
+
"inputSchema": {
|
|
6836
|
+
"type": "object",
|
|
6837
|
+
"required": [
|
|
6838
|
+
"knowledge_space_id",
|
|
6839
|
+
"explicit_confirmation"
|
|
6840
|
+
],
|
|
6841
|
+
"properties": {
|
|
6842
|
+
"workspace_id": {
|
|
6843
|
+
"type": "string",
|
|
6844
|
+
"format": "uuid"
|
|
6457
6845
|
},
|
|
6458
6846
|
"knowledge_space_id": {
|
|
6459
6847
|
"type": "string",
|
|
@@ -6469,13 +6857,39 @@
|
|
|
6469
6857
|
]
|
|
6470
6858
|
},
|
|
6471
6859
|
"description": "Какие типы переиндексировать; default [qa, doc]"
|
|
6860
|
+
},
|
|
6861
|
+
"explicit_confirmation": {
|
|
6862
|
+
"type": "boolean",
|
|
6863
|
+
"const": true
|
|
6864
|
+
}
|
|
6865
|
+
}
|
|
6866
|
+
}
|
|
6867
|
+
},
|
|
6868
|
+
{
|
|
6869
|
+
"name": "besales_knowledge_namespace_reindex_status",
|
|
6870
|
+
"description": "Проверить состояние фоновой переиндексации knowledge space: QUEUED/RUNNING/COMPLETED/FAILED/EXPIRED, progress, result/error и timestamps. Состояние хранится 24 часа. Scope: read:knowledge.",
|
|
6871
|
+
"inputSchema": {
|
|
6872
|
+
"type": "object",
|
|
6873
|
+
"required": [
|
|
6874
|
+
"knowledge_space_id"
|
|
6875
|
+
],
|
|
6876
|
+
"additionalProperties": false,
|
|
6877
|
+
"properties": {
|
|
6878
|
+
"workspace_id": {
|
|
6879
|
+
"type": "string",
|
|
6880
|
+
"format": "uuid",
|
|
6881
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6882
|
+
},
|
|
6883
|
+
"knowledge_space_id": {
|
|
6884
|
+
"type": "string",
|
|
6885
|
+
"format": "uuid"
|
|
6472
6886
|
}
|
|
6473
6887
|
}
|
|
6474
6888
|
}
|
|
6475
6889
|
},
|
|
6476
6890
|
{
|
|
6477
6891
|
"name": "besales_variable_list",
|
|
6478
|
-
"description": "
|
|
6892
|
+
"description": "Список переменных workspace или платформы. scope=WORKSPACE возвращает глобальные WorkspaceVariable; scope=CHANNEL требует platform_id и возвращает CustomVariable одной платформы (filter: all|variables|constants). Постраничная выдача: сервер ограничивает страницу, до 200 по limit. Если показана не вся выборка, ответ содержит nextCursor, а вызов без явных limit/cursor откажется возвращать неполный снимок. Дочитывайте страницы, пока nextCursor не опустеет. Референс: WORKSPACE → {{{name}}}, CHANNEL-константа → {{name}}. Scope: mcp:platform-setup.",
|
|
6479
6893
|
"inputSchema": {
|
|
6480
6894
|
"type": "object",
|
|
6481
6895
|
"required": [
|
|
@@ -6507,6 +6921,17 @@
|
|
|
6507
6921
|
"constants"
|
|
6508
6922
|
],
|
|
6509
6923
|
"description": "Filter для CHANNEL scope; default=all"
|
|
6924
|
+
},
|
|
6925
|
+
"limit": {
|
|
6926
|
+
"type": "integer",
|
|
6927
|
+
"minimum": 1,
|
|
6928
|
+
"maximum": 200,
|
|
6929
|
+
"description": "Размер страницы. Умолчания у аргумента НЕТ намеренно: молча усечённый перечень настройки хуже отказа."
|
|
6930
|
+
},
|
|
6931
|
+
"cursor": {
|
|
6932
|
+
"type": "string",
|
|
6933
|
+
"minLength": 1,
|
|
6934
|
+
"description": "nextCursor предыдущей страницы."
|
|
6510
6935
|
}
|
|
6511
6936
|
}
|
|
6512
6937
|
}
|
|
@@ -7986,7 +8411,8 @@
|
|
|
7986
8411
|
"required": [
|
|
7987
8412
|
"data_source_id",
|
|
7988
8413
|
"catalog_external_code",
|
|
7989
|
-
"enabled"
|
|
8414
|
+
"enabled",
|
|
8415
|
+
"explicit_confirmation"
|
|
7990
8416
|
],
|
|
7991
8417
|
"additionalProperties": false,
|
|
7992
8418
|
"properties": {
|
|
@@ -8008,13 +8434,17 @@
|
|
|
8008
8434
|
"name": {
|
|
8009
8435
|
"type": "string",
|
|
8010
8436
|
"description": "Опц. имя векторной таблицы при включении."
|
|
8437
|
+
},
|
|
8438
|
+
"explicit_confirmation": {
|
|
8439
|
+
"type": "boolean",
|
|
8440
|
+
"const": true
|
|
8011
8441
|
}
|
|
8012
8442
|
}
|
|
8013
8443
|
}
|
|
8014
8444
|
},
|
|
8015
8445
|
{
|
|
8016
8446
|
"name": "besales_workspace_use",
|
|
8017
|
-
"description": "Привязать ТЕКУЩУЮ Claude-сессию к
|
|
8447
|
+
"description": "Привязать ТЕКУЩУЮ Claude-сессию к выбранному workspace (in-memory, до конца сессии). Сначала вызови besales_workspace_current и покажи человеку названия компаний и безопасные подписи аккаунтов; UUID передай сам. Запрещён, если сессия запиннена через BESALES_WORKSPACE_ID.",
|
|
8018
8448
|
"inputSchema": {
|
|
8019
8449
|
"type": "object",
|
|
8020
8450
|
"required": [
|
|
@@ -8024,20 +8454,117 @@
|
|
|
8024
8454
|
"workspace_id": {
|
|
8025
8455
|
"type": "string",
|
|
8026
8456
|
"format": "uuid",
|
|
8027
|
-
"description": "UUID подключённого
|
|
8457
|
+
"description": "UUID подключённого workspace из besales_workspace_current.connected[].workspace_id; человек выбирает по workspace_name/account_label, а не ищет UUID сам."
|
|
8028
8458
|
}
|
|
8029
8459
|
}
|
|
8030
8460
|
}
|
|
8031
8461
|
},
|
|
8032
8462
|
{
|
|
8033
8463
|
"name": "besales_workspace_current",
|
|
8034
|
-
"description": "Показать
|
|
8464
|
+
"description": "Показать выбранный workspace, источник выбора (env/session/sole/ambiguous/none) и все подключения с workspace_name, безопасной account_label и свежестью подписи. Для неизвестных/устаревших подписей делает лёгкий scoped refresh без workspace overview. current/cached/stale/unknown и label_refresh_error различают свежесть, старый backend, ключ и scope. При ambiguous покажи названия человеку и сам передай UUID в besales_workspace_use.",
|
|
8035
8465
|
"inputSchema": {
|
|
8036
8466
|
"type": "object",
|
|
8037
8467
|
"required": [],
|
|
8038
8468
|
"properties": {}
|
|
8039
8469
|
}
|
|
8040
8470
|
},
|
|
8471
|
+
{
|
|
8472
|
+
"name": "besales_task_create",
|
|
8473
|
+
"description": "Сохранить цель и минимальный прогресс работы между MCP-сессиями на этой машине. Состояние workspace-scoped, не содержит credentials и не заменяет свежую проверку объектов/прав. Возвращает task_id и version для CAS-обновлений.",
|
|
8474
|
+
"inputSchema": {
|
|
8475
|
+
"type": "object",
|
|
8476
|
+
"required": ["goal"],
|
|
8477
|
+
"additionalProperties": false,
|
|
8478
|
+
"properties": {
|
|
8479
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8480
|
+
"goal": { "type": "string", "minLength": 3, "maxLength": 500 },
|
|
8481
|
+
"context": { "type": "string", "minLength": 1, "maxLength": 2000 },
|
|
8482
|
+
"constraints": { "type": "array", "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 500 }, "default": [] },
|
|
8483
|
+
"object_refs": { "type": "array", "maxItems": 100, "items": { "type": "object", "required": ["type", "id"], "additionalProperties": false, "properties": { "type": { "type": "string", "minLength": 1, "maxLength": 80 }, "id": { "type": "string", "minLength": 1, "maxLength": 200 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 } } }, "default": [] },
|
|
8484
|
+
"checkpoints": { "type": "array", "maxItems": 100, "items": { "type": "object", "required": ["key", "label", "status"], "additionalProperties": false, "properties": { "key": { "type": "string", "minLength": 1, "maxLength": 80 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 }, "status": { "type": "string", "enum": ["PENDING", "COMPLETED", "BLOCKED"] }, "evidence": { "type": "string", "minLength": 1, "maxLength": 500 } } }, "default": [] },
|
|
8485
|
+
"pending_operations": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": ["operation", "status"], "additionalProperties": false, "properties": { "operation": { "type": "string", "minLength": 1, "maxLength": 120 }, "object_ref": { "type": "object", "required": ["type", "id"], "additionalProperties": false, "properties": { "type": { "type": "string", "minLength": 1, "maxLength": 80 }, "id": { "type": "string", "minLength": 1, "maxLength": 200 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 } } }, "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 200 }, "verify_with": { "type": "string", "minLength": 1, "maxLength": 120 }, "status": { "type": "string", "enum": ["PLANNED", "AWAITING_USER", "OUTCOME_UNKNOWN"] } } }, "default": [] },
|
|
8486
|
+
"expected_user_action": { "type": ["string", "null"], "minLength": 1, "maxLength": 1000 },
|
|
8487
|
+
"retention_days": { "type": "integer", "minimum": 1, "maximum": 180 }
|
|
8488
|
+
}
|
|
8489
|
+
}
|
|
8490
|
+
},
|
|
8491
|
+
{
|
|
8492
|
+
"name": "besales_task_list",
|
|
8493
|
+
"description": "Список сохранённых задач только выбранного workspace. При нескольких задачах возвращает selection_required=true: выбери task_id явно, не продолжай самую новую автоматически.",
|
|
8494
|
+
"inputSchema": {
|
|
8495
|
+
"type": "object",
|
|
8496
|
+
"required": [],
|
|
8497
|
+
"additionalProperties": false,
|
|
8498
|
+
"properties": {
|
|
8499
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8500
|
+
"status": { "type": "string", "enum": ["ACTIVE", "COMPLETED", "CANCELLED", "EXPIRED"] }
|
|
8501
|
+
}
|
|
8502
|
+
}
|
|
8503
|
+
},
|
|
8504
|
+
{
|
|
8505
|
+
"name": "besales_task_get",
|
|
8506
|
+
"description": "Прочитать сохранённую задачу по task_id в выбранном workspace. Перед продолжением перечитай актуальные объекты и besales_workspace_current: сохранённое состояние не доказывает текущую конфигурацию или права.",
|
|
8507
|
+
"inputSchema": {
|
|
8508
|
+
"type": "object",
|
|
8509
|
+
"required": ["task_id"],
|
|
8510
|
+
"additionalProperties": false,
|
|
8511
|
+
"properties": {
|
|
8512
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8513
|
+
"task_id": { "type": "string", "format": "uuid" }
|
|
8514
|
+
}
|
|
8515
|
+
}
|
|
8516
|
+
},
|
|
8517
|
+
{
|
|
8518
|
+
"name": "besales_task_update",
|
|
8519
|
+
"description": "Обновить сохранённую ACTIVE-задачу с compare-and-swap по expected_version. При TASK_VERSION_CONFLICT перечитай задачу и согласуй изменения; не повторяй pending mutation автоматически.",
|
|
8520
|
+
"inputSchema": {
|
|
8521
|
+
"type": "object",
|
|
8522
|
+
"required": ["task_id", "expected_version"],
|
|
8523
|
+
"additionalProperties": false,
|
|
8524
|
+
"properties": {
|
|
8525
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8526
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8527
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8528
|
+
"goal": { "type": "string", "minLength": 3, "maxLength": 500 },
|
|
8529
|
+
"context": { "type": "string", "minLength": 1, "maxLength": 2000 },
|
|
8530
|
+
"constraints": { "type": "array", "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 500 } },
|
|
8531
|
+
"object_refs": { "type": "array", "maxItems": 100, "items": { "type": "object", "required": ["type", "id"], "additionalProperties": false, "properties": { "type": { "type": "string", "minLength": 1, "maxLength": 80 }, "id": { "type": "string", "minLength": 1, "maxLength": 200 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 } } } },
|
|
8532
|
+
"checkpoints": { "type": "array", "maxItems": 100, "items": { "type": "object", "required": ["key", "label", "status"], "additionalProperties": false, "properties": { "key": { "type": "string", "minLength": 1, "maxLength": 80 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 }, "status": { "type": "string", "enum": ["PENDING", "COMPLETED", "BLOCKED"] }, "evidence": { "type": "string", "minLength": 1, "maxLength": 500 } } } },
|
|
8533
|
+
"pending_operations": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": ["operation", "status"], "additionalProperties": false, "properties": { "operation": { "type": "string", "minLength": 1, "maxLength": 120 }, "object_ref": { "type": "object", "required": ["type", "id"], "additionalProperties": false, "properties": { "type": { "type": "string", "minLength": 1, "maxLength": 80 }, "id": { "type": "string", "minLength": 1, "maxLength": 200 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 } } }, "idempotency_key": { "type": "string", "minLength": 1, "maxLength": 200 }, "verify_with": { "type": "string", "minLength": 1, "maxLength": 120 }, "status": { "type": "string", "enum": ["PLANNED", "AWAITING_USER", "OUTCOME_UNKNOWN"] } } } },
|
|
8534
|
+
"expected_user_action": { "type": ["string", "null"], "minLength": 1, "maxLength": 1000 }
|
|
8535
|
+
}
|
|
8536
|
+
}
|
|
8537
|
+
},
|
|
8538
|
+
{
|
|
8539
|
+
"name": "besales_task_close",
|
|
8540
|
+
"description": "Закрыть ACTIVE-задачу как COMPLETED или CANCELLED с проверкой expected_version. Закрытая задача не возобновляется автоматически.",
|
|
8541
|
+
"inputSchema": {
|
|
8542
|
+
"type": "object",
|
|
8543
|
+
"required": ["task_id", "expected_version", "outcome"],
|
|
8544
|
+
"additionalProperties": false,
|
|
8545
|
+
"properties": {
|
|
8546
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8547
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8548
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8549
|
+
"outcome": { "type": "string", "enum": ["COMPLETED", "CANCELLED"] }
|
|
8550
|
+
}
|
|
8551
|
+
}
|
|
8552
|
+
},
|
|
8553
|
+
{
|
|
8554
|
+
"name": "besales_task_delete",
|
|
8555
|
+
"description": "Безвозвратно удалить локальное состояние задачи. Требует точную expected_version и explicit_confirmation=true; не удаляет созданные объекты Besales.",
|
|
8556
|
+
"inputSchema": {
|
|
8557
|
+
"type": "object",
|
|
8558
|
+
"required": ["task_id", "expected_version", "explicit_confirmation"],
|
|
8559
|
+
"additionalProperties": false,
|
|
8560
|
+
"properties": {
|
|
8561
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8562
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8563
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8564
|
+
"explicit_confirmation": { "type": "boolean", "const": true }
|
|
8565
|
+
}
|
|
8566
|
+
}
|
|
8567
|
+
},
|
|
8041
8568
|
{
|
|
8042
8569
|
"name": "besales_model_catalog_list",
|
|
8043
8570
|
"description": "Каталог моделей для сравнения промпта (model bake-off): id, label, tier (budget/balanced/premium), bestFor-теги «когда что лучше», notes, viaOpenRouter, defaultSelected, available (доступен ли провайдер сейчас) + лимиты. По этим тегам ИИ выбирает ~5 моделей под use-case агента. Read-only.",
|
|
@@ -8176,7 +8703,7 @@
|
|
|
8176
8703
|
},
|
|
8177
8704
|
{
|
|
8178
8705
|
"name": "besales_external_api_channel_create",
|
|
8179
|
-
"description": "v1.5: создать канал External API
|
|
8706
|
+
"description": "v1.5: создать канал External API. Ответ { channelId, ingestPath, revealUrl, revealExpiresAt }; секреты через MCP не проходят. Человек открывает revealUrl, входит и получает ключ с webhook-подписью один раз. Scope: mcp:platform-setup.",
|
|
8180
8707
|
"inputSchema": {
|
|
8181
8708
|
"type": "object",
|
|
8182
8709
|
"required": [
|
|
@@ -8211,7 +8738,7 @@
|
|
|
8211
8738
|
},
|
|
8212
8739
|
{
|
|
8213
8740
|
"name": "besales_external_api_channel_rotate_key",
|
|
8214
|
-
"description": "v1.5:
|
|
8741
|
+
"description": "v1.5: выдать browser-handoff ссылку на перевыпуск bsl-ключа. До открытия ссылки прежний ключ продолжает работать; новый ключ показывается вошедшему человеку один раз. Scope: mcp:platform-setup.",
|
|
8215
8742
|
"inputSchema": {
|
|
8216
8743
|
"type": "object",
|
|
8217
8744
|
"required": [
|
|
@@ -8233,7 +8760,7 @@
|
|
|
8233
8760
|
},
|
|
8234
8761
|
{
|
|
8235
8762
|
"name": "besales_external_api_channel_rotate_secret",
|
|
8236
|
-
"description": "v1.5:
|
|
8763
|
+
"description": "v1.5: выдать browser-handoff ссылку на замену webhook-secret. До открытия ссылки прежняя подпись действует; новая показывается вошедшему человеку один раз. Scope: mcp:platform-setup.",
|
|
8237
8764
|
"inputSchema": {
|
|
8238
8765
|
"type": "object",
|
|
8239
8766
|
"required": [
|
|
@@ -9671,6 +10198,14 @@
|
|
|
9671
10198
|
"ADD"
|
|
9672
10199
|
],
|
|
9673
10200
|
"description": "⚠️ УСТАРЕЛО и на поведение НЕ влияет (с 23.08.2026). Список channels значит «слать сюда», а судьбу КАЖДОГО канала решает сервер: мессенджер (Telegram/VK/MAX) уходит, только если школа подтвердила его наличие у контакта; SMS — только при известном телефоне; Email, WhatsApp, Viber, Сайт, Chatium уходят вслепую всем выбранным. Просят «написать ещё и на почту» — добавь Email в channels и перечисли мессенджеры явно, иначе уедет только письмо. Поле принимается ради обратной совместимости и игнорируется."
|
|
10201
|
+
},
|
|
10202
|
+
"quiet_days_override": {
|
|
10203
|
+
"type": [
|
|
10204
|
+
"integer",
|
|
10205
|
+
"null"
|
|
10206
|
+
],
|
|
10207
|
+
"minimum": 0,
|
|
10208
|
+
"description": "ПЕРЕКРЫТИЕ тихого периода этой рассылкой, в сутках. 0 = «этот текст можно слать внутри тихого периода» — это и есть разрешение. null = рассылка не перекрывает, действует настройка площадки, затем воркспейса, затем 0. ⚠️ null и 0 — РАЗНЫЕ значения: не подставляй ноль вместо «не задано»."
|
|
9674
10209
|
}
|
|
9675
10210
|
}
|
|
9676
10211
|
}
|
|
@@ -9835,6 +10370,14 @@
|
|
|
9835
10370
|
"ADD"
|
|
9836
10371
|
],
|
|
9837
10372
|
"description": "⚠️ УСТАРЕЛО и на поведение НЕ влияет (с 23.08.2026). Список channels значит «слать сюда», а судьбу КАЖДОГО канала решает сервер: мессенджер (Telegram/VK/MAX) уходит, только если школа подтвердила его наличие у контакта; SMS — только при известном телефоне; Email, WhatsApp, Viber, Сайт, Chatium уходят вслепую всем выбранным. Просят «написать ещё и на почту» — добавь Email в channels и перечисли мессенджеры явно, иначе уедет только письмо. Поле принимается ради обратной совместимости и игнорируется."
|
|
10373
|
+
},
|
|
10374
|
+
"quiet_days_override": {
|
|
10375
|
+
"type": [
|
|
10376
|
+
"integer",
|
|
10377
|
+
"null"
|
|
10378
|
+
],
|
|
10379
|
+
"minimum": 0,
|
|
10380
|
+
"description": "ПЕРЕКРЫТИЕ тихого периода этой рассылкой, в сутках. 0 = «этот текст можно слать внутри тихого периода» — это и есть разрешение. null = рассылка не перекрывает, действует настройка площадки, затем воркспейса, затем 0. ⚠️ null и 0 — РАЗНЫЕ значения: не подставляй ноль вместо «не задано»."
|
|
9838
10381
|
}
|
|
9839
10382
|
},
|
|
9840
10383
|
"if": {
|
|
@@ -9882,6 +10425,72 @@
|
|
|
9882
10425
|
}
|
|
9883
10426
|
}
|
|
9884
10427
|
},
|
|
10428
|
+
{
|
|
10429
|
+
"name": "besales_contact_search",
|
|
10430
|
+
"description": "Найти контакты по имени, email, телефону, внешнему ID или каналу / Search contacts by name, email, phone, external ID or channel. Возвращает cursor; страница не равна всему workspace.",
|
|
10431
|
+
"inputSchema": {
|
|
10432
|
+
"type": "object",
|
|
10433
|
+
"additionalProperties": false,
|
|
10434
|
+
"properties": {
|
|
10435
|
+
"workspace_id": { "type": "string", "format": "uuid", "description": "Подставляется из выбранного подключения." },
|
|
10436
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 50 },
|
|
10437
|
+
"cursor": { "type": "string", "minLength": 1 },
|
|
10438
|
+
"search": { "type": "string", "minLength": 1 },
|
|
10439
|
+
"external_id": { "type": "string", "minLength": 1, "description": "CSV provider:value, например getcourse:123." },
|
|
10440
|
+
"phone": { "type": "string", "minLength": 1, "description": "Один телефон или CSV." },
|
|
10441
|
+
"email": { "type": "string", "minLength": 1, "description": "Один email или CSV." },
|
|
10442
|
+
"channel_id": { "type": "string", "format": "uuid" }
|
|
10443
|
+
}
|
|
10444
|
+
}
|
|
10445
|
+
},
|
|
10446
|
+
{
|
|
10447
|
+
"name": "besales_contact_get",
|
|
10448
|
+
"description": "Прочитать карточку контакта и безопасный текущий снимок / Read one contact detail and safe current snapshot. Текст недавних сообщений зависит от effective scope read:conversations.",
|
|
10449
|
+
"inputSchema": {
|
|
10450
|
+
"type": "object",
|
|
10451
|
+
"required": ["contact_id"],
|
|
10452
|
+
"additionalProperties": false,
|
|
10453
|
+
"properties": {
|
|
10454
|
+
"contact_id": { "type": "string", "format": "uuid" }
|
|
10455
|
+
}
|
|
10456
|
+
}
|
|
10457
|
+
},
|
|
10458
|
+
{
|
|
10459
|
+
"name": "besales_contact_diagnostics_get",
|
|
10460
|
+
"description": "Объяснить, почему бот молчит, не передал оператору, не вызвал действие или не доставил ответ / Diagnose silence, operator handoff, actions and delivery from stored evidence. Не возвращает тексты сообщений, аргументы, результаты и raw errors; отсутствие RAG trace честно помечает unknown.",
|
|
10461
|
+
"inputSchema": {
|
|
10462
|
+
"type": "object",
|
|
10463
|
+
"required": ["contact_id"],
|
|
10464
|
+
"additionalProperties": false,
|
|
10465
|
+
"properties": {
|
|
10466
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
10467
|
+
"message_id": { "type": "string", "format": "uuid", "description": "Если не задан, берётся последнее сообщение контакта." }
|
|
10468
|
+
}
|
|
10469
|
+
}
|
|
10470
|
+
},
|
|
10471
|
+
{
|
|
10472
|
+
"name": "besales_contact_touch_history",
|
|
10473
|
+
"description": "ИСТОРИЯ КАСАНИЙ человека школы: что мы ему отправляли и по какому праву. Сводит ТРИ источника с разными ключами: touches (журнал касаний — ПРАВО, взятое ДО отправки; строка есть и у попытки, которая никуда не ушла), sends (реестр получателей — пишется ПОСЛЕ доставки и best-effort, его отсутствие неотправки НЕ доказывает) и firstWelcomeAt (самая ранняя метка по карточкам). Складывать touches и sends нельзя — это ответы на разные вопросы. Инструмент только читает.",
|
|
10474
|
+
"inputSchema": {
|
|
10475
|
+
"type": "object",
|
|
10476
|
+
"required": [
|
|
10477
|
+
"getcourse_user_id"
|
|
10478
|
+
],
|
|
10479
|
+
"additionalProperties": false,
|
|
10480
|
+
"properties": {
|
|
10481
|
+
"workspace_id": {
|
|
10482
|
+
"type": "string",
|
|
10483
|
+
"format": "uuid",
|
|
10484
|
+
"description": "Рабочее пространство. Подставляется из подключения, если не задано."
|
|
10485
|
+
},
|
|
10486
|
+
"getcourse_user_id": {
|
|
10487
|
+
"type": "integer",
|
|
10488
|
+
"minimum": 1,
|
|
10489
|
+
"description": "Идентификатор человека в школе GetCourse (getcourse_user_id). Ключ — ЧЕЛОВЕК, а не карточка: история включает касания со всех площадок воркспейса."
|
|
10490
|
+
}
|
|
10491
|
+
}
|
|
10492
|
+
}
|
|
10493
|
+
},
|
|
9885
10494
|
{
|
|
9886
10495
|
"name": "besales_getcourse_cold_welcome_preview",
|
|
9887
10496
|
"description": "Охват рассылки «Первое сообщение» БЕЗ отправки: totalContacts (ещё могут получить), alreadyWelcomed (уже получали — первое сообщение одноразово на контакт), foundContacts.",
|
|
@@ -9960,6 +10569,16 @@
|
|
|
9960
10569
|
"format": "uuid",
|
|
9961
10570
|
"description": "Рассылка — источник каналов по умолчанию и «Платформы по умолчанию»."
|
|
9962
10571
|
},
|
|
10572
|
+
"segment": {
|
|
10573
|
+
"type": "string",
|
|
10574
|
+
"maxLength": 200,
|
|
10575
|
+
"description": "Метка сегмента запуска. Ею считается правило «этим сегментом человеку уже уходило»: без неё прогноз правил (policyForecast) по этому правилу структурно пуст, и ноль читается как «проверили, никого». Аудиторию метка не отбирает."
|
|
10576
|
+
},
|
|
10577
|
+
"message": {
|
|
10578
|
+
"type": "string",
|
|
10579
|
+
"maxLength": 4000,
|
|
10580
|
+
"description": "Разовый текст запуска — им считается правило «тот же текст не дважды» (журнал касаний ключуется отпечатком шаблона). Для запуска с сохранённой рассылкой не нужен: текст берётся из неё тем же резолвером, что на старте."
|
|
10581
|
+
},
|
|
9963
10582
|
"channels_mode": {
|
|
9964
10583
|
"type": "string",
|
|
9965
10584
|
"enum": [
|
|
@@ -9973,7 +10592,7 @@
|
|
|
9973
10592
|
},
|
|
9974
10593
|
{
|
|
9975
10594
|
"name": "besales_getcourse_cold_welcome_start",
|
|
9976
|
-
"description": "Запустить рассылку «Первое сообщение» (мы пишем первыми
|
|
10595
|
+
"description": "Запустить рассылку «Первое сообщение» (мы пишем первыми тем, кому НАШЕГО исходящего ещё не было; человек, написавший школе и оставшийся без ответа, — законный адресат, исключать его не надо). НЕОБРАТИМО: у GetCourse нет идемпотентности, отправку нельзя отозвать. Всегда сначала preview и подтверждение пользователя. Аудитория: по дате (created_after) или по файлу (contacts). Поля сделки штампуются после отправки. Если у рассылки заданы тексты по сегментам, значение segment ВЫБИРАЕТ текст: назови пользователю выбранный текст ДО подтверждения и не запускай посегментный текст по created_after. Фоновый job проверяй через besales_getcourse_contact_import_status.",
|
|
9977
10596
|
"inputSchema": {
|
|
9978
10597
|
"type": "object",
|
|
9979
10598
|
"required": [
|
|
@@ -10372,7 +10991,7 @@
|
|
|
10372
10991
|
},
|
|
10373
10992
|
{
|
|
10374
10993
|
"name": "besales_getcourse_contacts_import",
|
|
10375
|
-
"description": "Импорт контактов GetCourse СПИСКОМ (без файла): заводит или обновляет их в базе платформы, чтобы по ним можно было запускать «Нашу отправку». НИЧЕГО НЕ ОТПРАВЛЯЕТ. Нужен ровно тогда, когда preview показал notInBase > 0: отправке нужен ChatUser, иначе контакт получает исход SKIPPED_NOT_IN_BASE. Матчинг существующих — по contact_id. Идёт фоном, вернётся jobId. Гейт «один активный импорт на воркспейс» общий с волнами и пакетами: 409 = идёт другой импорт, а не сбой. Максимум 5000 контактов. Scope: launch:campaigns.",
|
|
10994
|
+
"description": "Импорт контактов GetCourse СПИСКОМ (без файла): заводит или обновляет их в базе платформы, чтобы по ним можно было запускать «Нашу отправку». НИЧЕГО НЕ ОТПРАВЛЯЕТ. Нужен ровно тогда, когда preview показал notInBase > 0: отправке нужен ChatUser, иначе контакт получает исход SKIPPED_NOT_IN_BASE. Матчинг существующих — по contact_id. Идёт фоном, вернётся jobId; проверяй его через besales_getcourse_contact_import_status. Гейт «один активный импорт на воркспейс» общий с волнами и пакетами: 409 = идёт другой импорт, а не сбой. Максимум 5000 контактов. Scope: launch:campaigns.",
|
|
10376
10995
|
"inputSchema": {
|
|
10377
10996
|
"type": "object",
|
|
10378
10997
|
"required": [
|
|
@@ -10450,6 +11069,29 @@
|
|
|
10450
11069
|
}
|
|
10451
11070
|
}
|
|
10452
11071
|
},
|
|
11072
|
+
{
|
|
11073
|
+
"name": "besales_getcourse_contact_import_status",
|
|
11074
|
+
"description": "Статус фонового импорта контактов GetCourse и одиночного запуска «Первого сообщения» по jobId. Terminal states: COMPLETED, PARTIAL, FAILED; PARTIAL требует сверить successCount, failedCount и errors. Retained по правилам ImportJob. Scope: launch:campaigns.",
|
|
11075
|
+
"inputSchema": {
|
|
11076
|
+
"type": "object",
|
|
11077
|
+
"required": [
|
|
11078
|
+
"job_id"
|
|
11079
|
+
],
|
|
11080
|
+
"additionalProperties": false,
|
|
11081
|
+
"properties": {
|
|
11082
|
+
"workspace_id": {
|
|
11083
|
+
"type": "string",
|
|
11084
|
+
"format": "uuid",
|
|
11085
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
11086
|
+
},
|
|
11087
|
+
"job_id": {
|
|
11088
|
+
"type": "string",
|
|
11089
|
+
"format": "uuid",
|
|
11090
|
+
"description": "jobId из besales_getcourse_contacts_import или besales_getcourse_cold_welcome_start."
|
|
11091
|
+
}
|
|
11092
|
+
}
|
|
11093
|
+
}
|
|
11094
|
+
},
|
|
10453
11095
|
{
|
|
10454
11096
|
"name": "besales_getcourse_anchor_refresh_preview",
|
|
10455
11097
|
"description": "Что перепишет перечитывание календарных якорей (даты эфира) — БЕЗ обращений к школе: сколько контактов в отборе, скольким откажет отсутствие пина сделки и какие значения они несут сейчас.",
|
|
@@ -10506,7 +11148,7 @@
|
|
|
10506
11148
|
},
|
|
10507
11149
|
{
|
|
10508
11150
|
"name": "besales_getcourse_anchor_refresh_start",
|
|
10509
|
-
"description": "Перечитать календарные якоря контактов из ЗАПИНЁННОЙ сделки GetCourse. Единственный способ донести ПЕРЕНЕСЁННУЮ дату эфира: автоматический добор — set-if-absent и к заполненному значению не возвращается. Прогресс цепочек НЕ откатывается.",
|
|
11151
|
+
"description": "Перечитать календарные якоря контактов из ЗАПИНЁННОЙ сделки GetCourse. Единственный способ донести ПЕРЕНЕСЁННУЮ дату эфира: автоматический добор — set-if-absent и к заполненному значению не возвращается. Прогресс цепочек НЕ откатывается. Фоновый correlationId проверяй через besales_getcourse_anchor_refresh_status.",
|
|
10510
11152
|
"inputSchema": {
|
|
10511
11153
|
"type": "object",
|
|
10512
11154
|
"required": [
|
|
@@ -10564,6 +11206,29 @@
|
|
|
10564
11206
|
}
|
|
10565
11207
|
}
|
|
10566
11208
|
},
|
|
11209
|
+
{
|
|
11210
|
+
"name": "besales_getcourse_anchor_refresh_status",
|
|
11211
|
+
"description": "Статус фонового перечитывания календарных якорей по correlationId. Terminal states: COMPLETED, FAILED, STALLED. STALLED означает потерю lock без terminal status: часть дат могла быть переписана, поэтому перед повтором нужен аудит. Retained 24 часа. Отмены нет: частичные перезаписи необратимы. Scope: read:campaigns.",
|
|
11212
|
+
"inputSchema": {
|
|
11213
|
+
"type": "object",
|
|
11214
|
+
"required": [
|
|
11215
|
+
"correlation_id"
|
|
11216
|
+
],
|
|
11217
|
+
"additionalProperties": false,
|
|
11218
|
+
"properties": {
|
|
11219
|
+
"workspace_id": {
|
|
11220
|
+
"type": "string",
|
|
11221
|
+
"format": "uuid",
|
|
11222
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
11223
|
+
},
|
|
11224
|
+
"correlation_id": {
|
|
11225
|
+
"type": "string",
|
|
11226
|
+
"pattern": "^anchor-refresh:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
|
|
11227
|
+
"description": "correlationId из besales_getcourse_anchor_refresh_start."
|
|
11228
|
+
}
|
|
11229
|
+
}
|
|
11230
|
+
}
|
|
11231
|
+
},
|
|
10567
11232
|
{
|
|
10568
11233
|
"name": "besales_broadcast_launches_list",
|
|
10569
11234
|
"description": "История запусков рассылок одним списком: наша отправка (cold_welcome, со снимком текста и разбивкой исходов) и волны по файлу (wave).",
|
|
@@ -10629,7 +11294,7 @@
|
|
|
10629
11294
|
},
|
|
10630
11295
|
"cursor": {
|
|
10631
11296
|
"type": "string",
|
|
10632
|
-
"description": "nextCursor
|
|
11297
|
+
"description": "ID последнего показанного прогона (UUID из nextCursor предыдущего ответа). Курсор, а не offset."
|
|
10633
11298
|
},
|
|
10634
11299
|
"limit": {
|
|
10635
11300
|
"type": "integer",
|
|
@@ -10680,11 +11345,28 @@
|
|
|
10680
11345
|
},
|
|
10681
11346
|
"category": {
|
|
10682
11347
|
"type": "string",
|
|
10683
|
-
"
|
|
11348
|
+
"enum": [
|
|
11349
|
+
"HALLUCINATION",
|
|
11350
|
+
"WRONG_ACTION",
|
|
11351
|
+
"WRONG_ROUTING",
|
|
11352
|
+
"BAD_TONE",
|
|
11353
|
+
"MISSED_CONTEXT",
|
|
11354
|
+
"RAG_MISS",
|
|
11355
|
+
"SCRIPT_DEVIATION",
|
|
11356
|
+
"PROMPT_VIOLATION",
|
|
11357
|
+
"CUSTOM_RULE_CONFLICT",
|
|
11358
|
+
"OTHER"
|
|
11359
|
+
],
|
|
11360
|
+
"description": "Категория находки. Закрытый набор бэкенда: чужое значение отвергается с 400."
|
|
10684
11361
|
},
|
|
10685
11362
|
"severity": {
|
|
10686
11363
|
"type": "string",
|
|
10687
|
-
"
|
|
11364
|
+
"enum": [
|
|
11365
|
+
"LOW",
|
|
11366
|
+
"MEDIUM",
|
|
11367
|
+
"CRITICAL"
|
|
11368
|
+
],
|
|
11369
|
+
"description": "Важность находки. Значений ТРИ, «HIGH» среди них нет."
|
|
10688
11370
|
},
|
|
10689
11371
|
"status": {
|
|
10690
11372
|
"type": "string",
|
|
@@ -10700,7 +11382,7 @@
|
|
|
10700
11382
|
},
|
|
10701
11383
|
{
|
|
10702
11384
|
"name": "besales_dialogue_audit_run_start",
|
|
10703
|
-
"description": "Запустить разбор сейчас. Durable: ответ приходит сразу с runId, работа идёт в
|
|
11385
|
+
"description": "Запустить разбор сейчас. Durable: ответ приходит сразу с runId, работа идёт в очереди; проверяй через besales_dialogue_audit_run_get. Уже разобранное заново не оплачивается. 409 — на канале уже идёт прогон. Scope: mcp:platform-setup.",
|
|
10704
11386
|
"inputSchema": {
|
|
10705
11387
|
"type": "object",
|
|
10706
11388
|
"required": [
|
|
@@ -11307,6 +11989,10 @@
|
|
|
11307
11989
|
"maximum": 365,
|
|
11308
11990
|
"description": "Не писать контакту, если он получал любую нашу рассылку за N дней"
|
|
11309
11991
|
},
|
|
11992
|
+
"handoff_from_school_platforms": {
|
|
11993
|
+
"type": "boolean",
|
|
11994
|
+
"description": "ПЕРЕДАЧА: забирать людей с ДРУГИХ площадок GetCourse той же школы. Включённый флаг меняет смысл отбора: берутся ТОЛЬКО люди, чья карточка живёт на других площадках школы (и те, кого прошлая попытка уже перевезла, но сообщение не ушло), а перед отправкой карточка переносится сюда — с перепином на заказ сегмента и остановкой цепочек прежней площадки. Площадки-источники считает сам отбор («вся школа минус своя»), поэтому новая площадка школы подхватывается без правки расписания. Требует сегмента-ПРОДОЛЖЕНИЯ (снят «только нетронутым», без правила повтора): у человека с соседней площадки право первого сообщения уже сожжено. Ещё требует заполненного домена школы у площадки расписания и хотя бы одной другой площадки GetCourse в школе. Выключено — передачи нет."
|
|
11995
|
+
},
|
|
11310
11996
|
"is_enabled": {
|
|
11311
11997
|
"type": "boolean",
|
|
11312
11998
|
"description": "Включено ли расписание. Создавай выключенным и включай после предпросмотра"
|
|
@@ -11487,6 +12173,10 @@
|
|
|
11487
12173
|
"maximum": 365,
|
|
11488
12174
|
"description": "Не писать контакту, если он получал любую нашу рассылку за N дней"
|
|
11489
12175
|
},
|
|
12176
|
+
"handoff_from_school_platforms": {
|
|
12177
|
+
"type": "boolean",
|
|
12178
|
+
"description": "ПЕРЕДАЧА: забирать людей с ДРУГИХ площадок GetCourse той же школы. Включённый флаг меняет смысл отбора: берутся ТОЛЬКО люди, чья карточка живёт на других площадках школы (и те, кого прошлая попытка уже перевезла, но сообщение не ушло), а перед отправкой карточка переносится сюда — с перепином на заказ сегмента и остановкой цепочек прежней площадки. Площадки-источники считает сам отбор («вся школа минус своя»), поэтому новая площадка школы подхватывается без правки расписания. Требует сегмента-ПРОДОЛЖЕНИЯ (снят «только нетронутым», без правила повтора): у человека с соседней площадки право первого сообщения уже сожжено. Ещё требует заполненного домена школы у площадки расписания и хотя бы одной другой площадки GetCourse в школе. Выключено — передачи нет."
|
|
12179
|
+
},
|
|
11490
12180
|
"is_enabled": {
|
|
11491
12181
|
"type": "boolean",
|
|
11492
12182
|
"description": "Включено ли расписание. Создавай выключенным и включай после предпросмотра"
|
|
@@ -11609,6 +12299,101 @@
|
|
|
11609
12299
|
]
|
|
11610
12300
|
}
|
|
11611
12301
|
},
|
|
12302
|
+
{
|
|
12303
|
+
"name": "besales_broadcast_pool_today",
|
|
12304
|
+
"description": "«Пул сегодня»: сегменты с правилом на площадке — сколько сейчас в пуле и сколько уйдёт. Scope: read:campaigns. Расчёт идёт на сервере фоном, одной выкачкой источника фактов на площадку: вызов заказывает его и сразу отдаёт последний посчитанный (run); activeRun не пуст — вызови ещё раз через минуту с теми же параметрами, это опрос. Строки с расписанием считаются как его тик — параметры вызова на них не действуют; строки без расписания — по параметрам вызова (окно по умолчанию 3 суток), это верхняя граница. local_day — утренний расчёт того дня (история), без фильтров.",
|
|
12305
|
+
"inputSchema": {
|
|
12306
|
+
"type": "object",
|
|
12307
|
+
"properties": {
|
|
12308
|
+
"workspace_id": {
|
|
12309
|
+
"type": "string",
|
|
12310
|
+
"description": "UUID воркспейса. Подставляется MCP-сервером из подключения — спрашивать у пользователя не нужно."
|
|
12311
|
+
},
|
|
12312
|
+
"platform_id": {
|
|
12313
|
+
"type": "string",
|
|
12314
|
+
"description": "GetCourse-площадка. Не передан — первая активная площадка с расписанием."
|
|
12315
|
+
},
|
|
12316
|
+
"window_days": {
|
|
12317
|
+
"type": "integer",
|
|
12318
|
+
"minimum": 1,
|
|
12319
|
+
"maximum": 16,
|
|
12320
|
+
"description": "Окно свежести строк БЕЗ расписания, в сутках (по умолчанию 3). Потолок 16: окно регистраций строки (окно + 14 суток) обязано уложиться в общую выборку 30 суток."
|
|
12321
|
+
},
|
|
12322
|
+
"funnels": {
|
|
12323
|
+
"description": "Коды воронок источника для строк без расписания, либо \"all\" (без фильтра)",
|
|
12324
|
+
"oneOf": [
|
|
12325
|
+
{
|
|
12326
|
+
"type": "string",
|
|
12327
|
+
"enum": [
|
|
12328
|
+
"all"
|
|
12329
|
+
]
|
|
12330
|
+
},
|
|
12331
|
+
{
|
|
12332
|
+
"type": "array",
|
|
12333
|
+
"items": {
|
|
12334
|
+
"type": "string"
|
|
12335
|
+
},
|
|
12336
|
+
"maxItems": 100
|
|
12337
|
+
}
|
|
12338
|
+
]
|
|
12339
|
+
},
|
|
12340
|
+
"product_codes": {
|
|
12341
|
+
"description": "Канонические коды продуктов для строк без расписания, либо \"all\" (без фильтра)",
|
|
12342
|
+
"oneOf": [
|
|
12343
|
+
{
|
|
12344
|
+
"type": "string",
|
|
12345
|
+
"enum": [
|
|
12346
|
+
"all"
|
|
12347
|
+
]
|
|
12348
|
+
},
|
|
12349
|
+
{
|
|
12350
|
+
"type": "array",
|
|
12351
|
+
"items": {
|
|
12352
|
+
"type": "string"
|
|
12353
|
+
},
|
|
12354
|
+
"maxItems": 50
|
|
12355
|
+
}
|
|
12356
|
+
]
|
|
12357
|
+
},
|
|
12358
|
+
"channels": {
|
|
12359
|
+
"type": "array",
|
|
12360
|
+
"maxItems": 10,
|
|
12361
|
+
"items": {
|
|
12362
|
+
"type": "string",
|
|
12363
|
+
"enum": [
|
|
12364
|
+
"Site",
|
|
12365
|
+
"Email",
|
|
12366
|
+
"SMS",
|
|
12367
|
+
"Telegram",
|
|
12368
|
+
"Facebook",
|
|
12369
|
+
"VK",
|
|
12370
|
+
"Chatium",
|
|
12371
|
+
"WhatsApp",
|
|
12372
|
+
"Viber",
|
|
12373
|
+
"MAX"
|
|
12374
|
+
]
|
|
12375
|
+
},
|
|
12376
|
+
"description": "Каналы для строк без расписания (GetCourseTransport). Пусто — без ограничения. Канал, который площадка не обслуживает, отвергается 400: школа отвергает набор целиком."
|
|
12377
|
+
},
|
|
12378
|
+
"cooldown_days": {
|
|
12379
|
+
"type": "integer",
|
|
12380
|
+
"minimum": 0,
|
|
12381
|
+
"maximum": 365,
|
|
12382
|
+
"description": "Тихий период строк без расписания, в сутках; 0 — правило выключено."
|
|
12383
|
+
},
|
|
12384
|
+
"local_day": {
|
|
12385
|
+
"type": "string",
|
|
12386
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
12387
|
+
"description": "Локальный день ПЛОЩАДКИ ГГГГ-ММ-ДД: вернуть утренний расчёт этого дня (история «сегмент × день»). С окном, воронками, продуктами, каналами, кулдауном и force не сочетается."
|
|
12388
|
+
},
|
|
12389
|
+
"force": {
|
|
12390
|
+
"type": "boolean",
|
|
12391
|
+
"description": "Посчитать в обход свежего (до 5 минут) расчёта — только после своей правки расписания, правила сегмента или запуска."
|
|
12392
|
+
}
|
|
12393
|
+
},
|
|
12394
|
+
"required": []
|
|
12395
|
+
}
|
|
12396
|
+
},
|
|
11612
12397
|
{
|
|
11613
12398
|
"name": "besales_broadcast_segment_rule_set",
|
|
11614
12399
|
"description": "Задать правило отбора сегмента: фасеты поведения, якорь свежести, окно ожидания и приоритет. Scope: launch:campaigns. ⚠️⚠️ 409 означает, что сегментом уже отправляли и правило заморожено — заведи НОВЫЙ сегмент, правка задним числом сделала бы разрез отчёта несопоставимым. Секунды, а не минуты: «от 120 минут» — это activeSecondsMin=7200.",
|
|
@@ -11713,7 +12498,11 @@
|
|
|
11713
12498
|
"key",
|
|
11714
12499
|
"minDaysSince"
|
|
11715
12500
|
],
|
|
11716
|
-
"description": "ПОВТОРНОЕ касание: сегмент уходит тем, у кого названный сегмент был ПОСЛЕДНИМ
|
|
12501
|
+
"description": "ПОВТОРНОЕ касание: сегмент уходит тем, у кого названный сегмент был ПОСЛЕДНИМ касанием — нашей отправкой или волной школы на этой площадке — и кто нам не ответил; нужна живая карточка человека на этой площадке. Снимает вечный одноразовый claim приветствия — единственную защиту от второго сообщения живому человеку"
|
|
12502
|
+
},
|
|
12503
|
+
"untouchedOnly": {
|
|
12504
|
+
"type": "boolean",
|
|
12505
|
+
"description": "Право первого касания: сегмент уходит только тем, кому мы ещё НИКОГДА не писали. Молчание значит true — сегодняшнее поведение платформы. Ставьте false осознанно: это разрешает второе первое сообщение человеку, уже получившему холодное приветствие."
|
|
11717
12506
|
}
|
|
11718
12507
|
},
|
|
11719
12508
|
"required": [
|
|
@@ -11801,6 +12590,215 @@
|
|
|
11801
12590
|
}
|
|
11802
12591
|
}
|
|
11803
12592
|
}
|
|
12593
|
+
},
|
|
12594
|
+
{
|
|
12595
|
+
"name": "besales_inbound_analytics_get",
|
|
12596
|
+
"description": "Входящая аналитика: органические диалоги, темы, скорость ответа, деньги, цикл сделки и качество данных. Не заменяется исходящей аналитикой рассылок. Scope: read:analytics.",
|
|
12597
|
+
"inputSchema": {
|
|
12598
|
+
"type": "object",
|
|
12599
|
+
"required": ["report"],
|
|
12600
|
+
"additionalProperties": false,
|
|
12601
|
+
"properties": {
|
|
12602
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12603
|
+
"report": { "type": "string", "enum": ["summary", "topics", "speed", "money", "cycle", "quality"] },
|
|
12604
|
+
"platform_id": { "type": "string", "format": "uuid" },
|
|
12605
|
+
"channels": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "maxItems": 20 },
|
|
12606
|
+
"mode": { "type": "string", "enum": ["all", "days", "range"], "default": "days" },
|
|
12607
|
+
"days": { "type": "integer", "minimum": 1 },
|
|
12608
|
+
"from": { "type": "string", "format": "date-time" },
|
|
12609
|
+
"to": { "type": "string", "format": "date-time" }
|
|
12610
|
+
}
|
|
12611
|
+
}
|
|
12612
|
+
},
|
|
12613
|
+
{
|
|
12614
|
+
"name": "besales_funnel_analytics_get",
|
|
12615
|
+
"description": "Аналитика воронки площадки: meta принимает только platform_id/workspace_id; summary/cohorts требуют from/to; view доступен только summary, cohorts всегда считает cohort. manager_id доступен summary/cohorts. Scope: read:analytics.",
|
|
12616
|
+
"inputSchema": {
|
|
12617
|
+
"type": "object",
|
|
12618
|
+
"required": ["report", "platform_id"],
|
|
12619
|
+
"additionalProperties": false,
|
|
12620
|
+
"properties": {
|
|
12621
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12622
|
+
"report": { "type": "string", "enum": ["meta", "summary", "cohorts"] },
|
|
12623
|
+
"platform_id": { "type": "string", "format": "uuid" },
|
|
12624
|
+
"from": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12625
|
+
"to": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12626
|
+
"view": { "type": "string", "enum": ["cohort", "period"] },
|
|
12627
|
+
"manager_id": { "type": "integer" }
|
|
12628
|
+
}
|
|
12629
|
+
}
|
|
12630
|
+
},
|
|
12631
|
+
{
|
|
12632
|
+
"name": "besales_ai_costs_get",
|
|
12633
|
+
"description": "Фактические AI-затраты из immutable usage ledger: summary, tasks и breakdown. group_by/page/limit доступны только breakdown; для него group_by обязателен. unpricedEvents остаются неизвестной стоимостью, а не нулём. Scope: read:analytics.",
|
|
12634
|
+
"inputSchema": {
|
|
12635
|
+
"type": "object",
|
|
12636
|
+
"required": ["report"],
|
|
12637
|
+
"additionalProperties": false,
|
|
12638
|
+
"properties": {
|
|
12639
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12640
|
+
"report": { "type": "string", "enum": ["summary", "tasks", "breakdown"] },
|
|
12641
|
+
"mode": { "type": "string", "enum": ["all", "days", "range"], "default": "all" },
|
|
12642
|
+
"days": { "type": "integer", "minimum": 1 },
|
|
12643
|
+
"from": { "type": "string", "format": "date-time" },
|
|
12644
|
+
"to": { "type": "string", "format": "date-time" },
|
|
12645
|
+
"scope": { "type": "string", "enum": ["production", "with_tests"], "default": "production" },
|
|
12646
|
+
"group_by": { "type": "string", "enum": ["customer", "platform", "tag", "operation", "provider"] },
|
|
12647
|
+
"page": { "type": "integer", "minimum": 1 },
|
|
12648
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
|
|
12649
|
+
}
|
|
12650
|
+
}
|
|
12651
|
+
},
|
|
12652
|
+
{
|
|
12653
|
+
"name": "besales_custom_report_list",
|
|
12654
|
+
"description": "Список сохранённых кастомных аналитических таблиц воркспейса без архивных. Scope: read:analytics.",
|
|
12655
|
+
"inputSchema": {
|
|
12656
|
+
"type": "object",
|
|
12657
|
+
"additionalProperties": false,
|
|
12658
|
+
"properties": { "workspace_id": { "type": "string", "format": "uuid" } }
|
|
12659
|
+
}
|
|
12660
|
+
},
|
|
12661
|
+
{
|
|
12662
|
+
"name": "besales_custom_report_get",
|
|
12663
|
+
"description": "Получить определение кастомного отчёта: источник, view, фильтры, оси, метрики и updatedAt. Scope: read:analytics.",
|
|
12664
|
+
"inputSchema": {
|
|
12665
|
+
"type": "object",
|
|
12666
|
+
"required": ["report_id"],
|
|
12667
|
+
"additionalProperties": false,
|
|
12668
|
+
"properties": {
|
|
12669
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12670
|
+
"report_id": { "type": "string", "format": "uuid" }
|
|
12671
|
+
}
|
|
12672
|
+
}
|
|
12673
|
+
},
|
|
12674
|
+
{
|
|
12675
|
+
"name": "besales_custom_report_run",
|
|
12676
|
+
"description": "Рассчитать сохранённый кастомный отчёт за период с его каноническими source/view/grain. Scope: read:analytics.",
|
|
12677
|
+
"inputSchema": {
|
|
12678
|
+
"type": "object",
|
|
12679
|
+
"required": ["report_id", "from", "to"],
|
|
12680
|
+
"additionalProperties": false,
|
|
12681
|
+
"properties": {
|
|
12682
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12683
|
+
"report_id": { "type": "string", "format": "uuid" },
|
|
12684
|
+
"from": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12685
|
+
"to": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12686
|
+
"granularity": { "type": "string", "enum": ["day", "week", "month", "total"] }
|
|
12687
|
+
}
|
|
12688
|
+
}
|
|
12689
|
+
},
|
|
12690
|
+
{
|
|
12691
|
+
"name": "besales_workspace_operational_overview",
|
|
12692
|
+
"description": "Эксплуатационная сводка: цепочки, расписания, ожидаемые и фактические запуски, durable jobs, ошибки действий и доступная очередь операторов. Scope: read:analytics; строки очереди требуют read:conversations.",
|
|
12693
|
+
"inputSchema": {
|
|
12694
|
+
"type": "object",
|
|
12695
|
+
"additionalProperties": false,
|
|
12696
|
+
"properties": {
|
|
12697
|
+
"workspace_id": { "type": "string", "format": "uuid" }
|
|
12698
|
+
}
|
|
12699
|
+
}
|
|
12700
|
+
},
|
|
12701
|
+
{
|
|
12702
|
+
"name": "besales_workspace_operator_list",
|
|
12703
|
+
"description": "Системные workspace operators Besales для фильтра и назначения. CRM operators не входят; assignable показывает текущую пригодность. Scope: read:conversations.",
|
|
12704
|
+
"inputSchema": {
|
|
12705
|
+
"type": "object",
|
|
12706
|
+
"additionalProperties": false,
|
|
12707
|
+
"properties": { "workspace_id": { "type": "string", "format": "uuid" } }
|
|
12708
|
+
}
|
|
12709
|
+
},
|
|
12710
|
+
{
|
|
12711
|
+
"name": "besales_workspace_operator_queue_list",
|
|
12712
|
+
"description": "Пагинированная очередь операторов с каноническим status, назначением и последним доказательством PlatformWorkLog. Scope: read:conversations.",
|
|
12713
|
+
"inputSchema": {
|
|
12714
|
+
"type": "object",
|
|
12715
|
+
"additionalProperties": false,
|
|
12716
|
+
"properties": {
|
|
12717
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12718
|
+
"status": { "type": "string", "enum": ["WAITING_OPERATOR", "IN_PROGRESS", "WAITING_CUSTOMER", "RESOLVED"] },
|
|
12719
|
+
"workspace_operator_id": { "type": "string", "format": "uuid" },
|
|
12720
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
12721
|
+
"page": { "type": "integer", "minimum": 1, "default": 1 },
|
|
12722
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }
|
|
12723
|
+
}
|
|
12724
|
+
}
|
|
12725
|
+
},
|
|
12726
|
+
{
|
|
12727
|
+
"name": "besales_workspace_operator_assignment_get",
|
|
12728
|
+
"description": "Текущее назначение workspace operator, operator status, CAS-версия assignedAt и workflow evidence конкретного чата. Scope: read:conversations.",
|
|
12729
|
+
"inputSchema": {
|
|
12730
|
+
"type": "object",
|
|
12731
|
+
"required": ["contact_id"],
|
|
12732
|
+
"additionalProperties": false,
|
|
12733
|
+
"properties": {
|
|
12734
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12735
|
+
"contact_id": { "type": "string", "format": "uuid" }
|
|
12736
|
+
}
|
|
12737
|
+
}
|
|
12738
|
+
},
|
|
12739
|
+
{
|
|
12740
|
+
"name": "besales_workspace_operator_assignment_set",
|
|
12741
|
+
"description": "CAS-защищённо назначить, переназначить или снять workspace operator. Не меняет CRM, статус очереди и не отправляет сообщения. Требует explicit_confirmation и scope write:operators.",
|
|
12742
|
+
"inputSchema": {
|
|
12743
|
+
"type": "object",
|
|
12744
|
+
"required": ["contact_id", "workspace_operator_id", "expected_workspace_operator_id", "expected_assigned_operator_at", "explicit_confirmation"],
|
|
12745
|
+
"additionalProperties": false,
|
|
12746
|
+
"properties": {
|
|
12747
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12748
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
12749
|
+
"workspace_operator_id": { "type": ["string", "null"], "format": "uuid" },
|
|
12750
|
+
"expected_workspace_operator_id": { "type": ["string", "null"], "format": "uuid" },
|
|
12751
|
+
"expected_assigned_operator_at": { "type": ["string", "null"], "format": "date-time" },
|
|
12752
|
+
"explicit_confirmation": { "type": "boolean", "enum": [true] }
|
|
12753
|
+
}
|
|
12754
|
+
}
|
|
12755
|
+
},
|
|
12756
|
+
{
|
|
12757
|
+
"name": "besales_help_search",
|
|
12758
|
+
"description": "Найти актуальную справку Besales по обычному русскому или английскому описанию задачи. Возвращает URI и подходящие разделы; работает даже когда MCP resources не показаны модели хостом.",
|
|
12759
|
+
"inputSchema": {
|
|
12760
|
+
"type": "object",
|
|
12761
|
+
"required": ["query"],
|
|
12762
|
+
"properties": {
|
|
12763
|
+
"query": {
|
|
12764
|
+
"type": "string",
|
|
12765
|
+
"minLength": 2,
|
|
12766
|
+
"description": "Задача своими словами, например: настроить дожимы или бот молчит"
|
|
12767
|
+
},
|
|
12768
|
+
"limit": {
|
|
12769
|
+
"type": "integer",
|
|
12770
|
+
"minimum": 1,
|
|
12771
|
+
"maximum": 10,
|
|
12772
|
+
"default": 5
|
|
12773
|
+
}
|
|
12774
|
+
},
|
|
12775
|
+
"additionalProperties": false
|
|
12776
|
+
}
|
|
12777
|
+
},
|
|
12778
|
+
{
|
|
12779
|
+
"name": "besales_help_get",
|
|
12780
|
+
"description": "Прочитать индекс, один раздел или полную версию документа Besales из того же источника, что MCP resource. Сначала используй besales_help_search, если URI неизвестен.",
|
|
12781
|
+
"inputSchema": {
|
|
12782
|
+
"type": "object",
|
|
12783
|
+
"required": ["uri"],
|
|
12784
|
+
"properties": {
|
|
12785
|
+
"uri": {
|
|
12786
|
+
"type": "string",
|
|
12787
|
+
"pattern": "^besales://"
|
|
12788
|
+
},
|
|
12789
|
+
"section": {
|
|
12790
|
+
"type": "string",
|
|
12791
|
+
"minLength": 1,
|
|
12792
|
+
"description": "Точный или однозначный фрагмент заголовка раздела"
|
|
12793
|
+
},
|
|
12794
|
+
"full": {
|
|
12795
|
+
"type": "boolean",
|
|
12796
|
+
"default": false,
|
|
12797
|
+
"description": "Вернуть документ целиком; без section/full возвращается компактный индекс"
|
|
12798
|
+
}
|
|
12799
|
+
},
|
|
12800
|
+
"additionalProperties": false
|
|
12801
|
+
}
|
|
11804
12802
|
}
|
|
11805
12803
|
],
|
|
11806
12804
|
"resources": [
|
|
@@ -11989,55 +12987,63 @@
|
|
|
11989
12987
|
"name": "Workflow: Compare models (model bake-off)",
|
|
11990
12988
|
"description": "Маршрут прогона сравнения промпта на нескольких моделях: читай besales_model_catalog_list → выбери ~5 по bestFor под use-case агента → besales_model_comparison_run_start (по умолчанию 5 диалогов) → поллируй besales_model_comparison_get → суди по метрикам + диалогам → ответь оператору с аргументами и выдержками → besales_model_comparison_eval_submit. По запросу, дорого, НЕ после каждого фикса.",
|
|
11991
12989
|
"mimeType": "text/markdown"
|
|
12990
|
+
},
|
|
12991
|
+
{
|
|
12992
|
+
"uri": "besales://docs/tools-catalog",
|
|
12993
|
+
"name": "Каталог инструментов",
|
|
12994
|
+
"description": "Динамический список фактически опубликованных tools по категориям с версией и точным количеством.",
|
|
12995
|
+
"mimeType": "text/markdown"
|
|
12996
|
+
},
|
|
12997
|
+
{
|
|
12998
|
+
"uri": "besales://docs/trigger-actions",
|
|
12999
|
+
"name": "Триггеры и действия",
|
|
13000
|
+
"description": "Чтение, конфигурация, полная замена и проверка trigger actions.",
|
|
13001
|
+
"mimeType": "text/markdown"
|
|
13002
|
+
},
|
|
13003
|
+
{
|
|
13004
|
+
"uri": "besales://docs/variables",
|
|
13005
|
+
"name": "Переменные",
|
|
13006
|
+
"description": "Workspace/channel variables и полные overrides агента.",
|
|
13007
|
+
"mimeType": "text/markdown"
|
|
13008
|
+
},
|
|
13009
|
+
{
|
|
13010
|
+
"uri": "besales://docs/routing",
|
|
13011
|
+
"name": "Маршрутизация агентов",
|
|
13012
|
+
"description": "Правила routing, router state и проверка multi-agent workflow.",
|
|
13013
|
+
"mimeType": "text/markdown"
|
|
13014
|
+
},
|
|
13015
|
+
{
|
|
13016
|
+
"uri": "besales://docs/follow-up",
|
|
13017
|
+
"name": "Follow-up и дожимы",
|
|
13018
|
+
"description": "Цепочки, статистика, реакции и безопасный funnel-test.",
|
|
13019
|
+
"mimeType": "text/markdown"
|
|
13020
|
+
},
|
|
13021
|
+
{
|
|
13022
|
+
"uri": "besales://docs/campaigns",
|
|
13023
|
+
"name": "Рассылки и кампании",
|
|
13024
|
+
"description": "Mailing variants, schedules, launches и каноническая аналитика рассылок.",
|
|
13025
|
+
"mimeType": "text/markdown"
|
|
13026
|
+
},
|
|
13027
|
+
{
|
|
13028
|
+
"uri": "besales://docs/task-state",
|
|
13029
|
+
"name": "Состояние длительной задачи",
|
|
13030
|
+
"description": "Как сохранить, выбрать, безопасно продолжить, закрыть или удалить длительную задачу между MCP-сессиями.",
|
|
13031
|
+
"mimeType": "text/markdown"
|
|
11992
13032
|
}
|
|
11993
13033
|
],
|
|
11994
13034
|
"summary": {
|
|
11995
|
-
"total_tools":
|
|
13035
|
+
"total_tools": 253,
|
|
11996
13036
|
"tools_by_category": {
|
|
11997
|
-
"
|
|
11998
|
-
"
|
|
11999
|
-
"
|
|
12000
|
-
"
|
|
12001
|
-
"
|
|
12002
|
-
"
|
|
12003
|
-
"
|
|
12004
|
-
"
|
|
12005
|
-
"
|
|
12006
|
-
"
|
|
12007
|
-
"prompt_generation_external": 2,
|
|
12008
|
-
"prompt_analysis_external": 2,
|
|
12009
|
-
"prompt_finalize": 1,
|
|
12010
|
-
"sandbox_run_start": 1,
|
|
12011
|
-
"sandbox_findings_external": 2,
|
|
12012
|
-
"simulation_findings_external": 2,
|
|
12013
|
-
"qa_generation_external": 2,
|
|
12014
|
-
"platform_setup_bridge": 15,
|
|
12015
|
-
"feedback_sheets": 5,
|
|
12016
|
-
"facts_management": 2,
|
|
12017
|
-
"prompt_lint_standalone": 1,
|
|
12018
|
-
"prompt_drafts": 7,
|
|
12019
|
-
"workbook_ingestion": 3,
|
|
12020
|
-
"knowledge_spaces": 6,
|
|
12021
|
-
"knowledge_documents": 4,
|
|
12022
|
-
"knowledge_qa": 7,
|
|
12023
|
-
"knowledge_websites": 4,
|
|
12024
|
-
"knowledge_tables": 6,
|
|
12025
|
-
"variables": 5,
|
|
12026
|
-
"crm_pipelines": 11,
|
|
12027
|
-
"platform_clone": 3,
|
|
12028
|
-
"session_workspace": 2,
|
|
12029
|
-
"model_comparison": 4,
|
|
12030
|
-
"dialog_script": 2,
|
|
12031
|
-
"broadcast_analytics": 2,
|
|
12032
|
-
"scheduled_tasks": 2,
|
|
12033
|
-
"follow_up_read": 3,
|
|
12034
|
-
"follow_up_funnel_test": 4,
|
|
12035
|
-
"dialogue_audit": 6,
|
|
12036
|
-
"link_tracking": 6,
|
|
12037
|
-
"dialogue_audit_external": 2,
|
|
12038
|
-
"link_tracking_domain": 2,
|
|
12039
|
-
"broadcast_scheduler": 6,
|
|
12040
|
-
"trigger_contact_claims": 2
|
|
13037
|
+
"workspace_and_help": 18,
|
|
13038
|
+
"agent_configuration": 14,
|
|
13039
|
+
"prompt_and_testing": 33,
|
|
13040
|
+
"icp": 9,
|
|
13041
|
+
"knowledge_and_content": 50,
|
|
13042
|
+
"crm_and_data_sources": 27,
|
|
13043
|
+
"channels_and_credentials": 14,
|
|
13044
|
+
"dialogues_and_contacts": 16,
|
|
13045
|
+
"automation": 5,
|
|
13046
|
+
"outbound_and_analytics": 67
|
|
12041
13047
|
},
|
|
12042
13048
|
"external_execution_pairs": [
|
|
12043
13049
|
"besales_icp_analysis_get_instructions / submit",
|
|
@@ -12062,6 +13068,7 @@
|
|
|
12062
13068
|
],
|
|
12063
13069
|
"newly_added_in_p3_x_platform_setup_bridge": [
|
|
12064
13070
|
"besales_platform_context_get",
|
|
13071
|
+
"besales_trigger_action_catalog_get",
|
|
12065
13072
|
"besales_agent_list",
|
|
12066
13073
|
"besales_agent_variable_overrides_get",
|
|
12067
13074
|
"besales_getcourse_departments_list",
|
|
@@ -12104,6 +13111,10 @@
|
|
|
12104
13111
|
],
|
|
12105
13112
|
"newly_added_in_v1_5_workbook_ingestion": [
|
|
12106
13113
|
"besales_workbook_inspect",
|
|
13114
|
+
"besales_workbook_get",
|
|
13115
|
+
"besales_workbook_sheet_read",
|
|
13116
|
+
"besales_workbook_classification_update",
|
|
13117
|
+
"besales_workbook_archive",
|
|
12107
13118
|
"besales_workbook_extract_amocrm_leads",
|
|
12108
13119
|
"besales_workbook_to_knowledge_document"
|
|
12109
13120
|
],
|
|
@@ -12125,7 +13136,8 @@
|
|
|
12125
13136
|
"besales_knowledge_table_get",
|
|
12126
13137
|
"besales_knowledge_table_patch",
|
|
12127
13138
|
"besales_knowledge_table_delete",
|
|
12128
|
-
"besales_knowledge_table_reindex"
|
|
13139
|
+
"besales_knowledge_table_reindex",
|
|
13140
|
+
"besales_knowledge_table_reindex_status"
|
|
12129
13141
|
],
|
|
12130
13142
|
"modified_in_v1_5_increment_3": [
|
|
12131
13143
|
"besales_agent_update",
|
|
@@ -12262,6 +13274,37 @@
|
|
|
12262
13274
|
"newly_added_in_trigger_contact_claims": [
|
|
12263
13275
|
"besales_trigger_claim_list",
|
|
12264
13276
|
"besales_trigger_claim_reset"
|
|
13277
|
+
],
|
|
13278
|
+
"newly_added_in_broadcast_pool_today": [
|
|
13279
|
+
"besales_broadcast_pool_today"
|
|
13280
|
+
],
|
|
13281
|
+
"removed_in_broadcast_pool_today_2026_09_11": [
|
|
13282
|
+
"besales_broadcast_schedule_pool_snapshots"
|
|
13283
|
+
],
|
|
13284
|
+
"newly_added_in_task_state": [
|
|
13285
|
+
"besales_task_create",
|
|
13286
|
+
"besales_task_list",
|
|
13287
|
+
"besales_task_get",
|
|
13288
|
+
"besales_task_update",
|
|
13289
|
+
"besales_task_close",
|
|
13290
|
+
"besales_task_delete"
|
|
13291
|
+
],
|
|
13292
|
+
"newly_added_in_analytics": [
|
|
13293
|
+
"besales_inbound_analytics_get",
|
|
13294
|
+
"besales_funnel_analytics_get",
|
|
13295
|
+
"besales_ai_costs_get",
|
|
13296
|
+
"besales_custom_report_list",
|
|
13297
|
+
"besales_custom_report_get",
|
|
13298
|
+
"besales_custom_report_run"
|
|
13299
|
+
],
|
|
13300
|
+
"newly_added_in_operational_overview": [
|
|
13301
|
+
"besales_workspace_operational_overview"
|
|
13302
|
+
],
|
|
13303
|
+
"newly_added_in_operator_workflow": [
|
|
13304
|
+
"besales_workspace_operator_list",
|
|
13305
|
+
"besales_workspace_operator_queue_list",
|
|
13306
|
+
"besales_workspace_operator_assignment_get",
|
|
13307
|
+
"besales_workspace_operator_assignment_set"
|
|
12265
13308
|
]
|
|
12266
13309
|
}
|
|
12267
13310
|
}
|