@besales/mcp 0.46.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +68 -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 +1058 -99
- 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 +7 -1
- package/dist/tools/definitions/broadcast-scheduler.js +71 -4
- 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 +1 -1
- package/dist/tools/definitions/follow-up.js +4 -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 +25 -3
- package/dist/tools/definitions/platform-setup.js +198 -5
- 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 +153 -11
- package/dist/tools/definitions/shared.js +59 -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 +265 -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 +111 -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 +1421 -80
- 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 +24 -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.",
|
|
@@ -4543,6 +4795,14 @@
|
|
|
4543
4795
|
null
|
|
4544
4796
|
],
|
|
4545
4797
|
"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."
|
|
4798
|
+
},
|
|
4799
|
+
"quiet_days": {
|
|
4800
|
+
"type": [
|
|
4801
|
+
"integer",
|
|
4802
|
+
"null"
|
|
4803
|
+
],
|
|
4804
|
+
"minimum": 0,
|
|
4805
|
+
"description": "ТИХИЙ ПЕРИОД площадки в сутках: не писать человеку N суток после НАШЕГО касания — отправки или шага календарной цепочки. Считается ПО ЧЕЛОВЕКУ во всём воркспейсе, волна школы касанием НЕ считается (замер: широкий периметр отсекал бы 15,3 % отправок). null = «не настраивали», действующее значение 0 (правила нет); рекомендация владельца — 7. Расписание этим числом НЕ судится: у него своё поле cooldown_days. Перекрытие — у рассылки (quiet_days_override)."
|
|
4546
4806
|
}
|
|
4547
4807
|
}
|
|
4548
4808
|
},
|
|
@@ -5093,7 +5353,8 @@
|
|
|
5093
5353
|
"additionalProperties": false,
|
|
5094
5354
|
"required": [
|
|
5095
5355
|
"agent_ids",
|
|
5096
|
-
"operations"
|
|
5356
|
+
"operations",
|
|
5357
|
+
"explicit_confirmation"
|
|
5097
5358
|
],
|
|
5098
5359
|
"properties": {
|
|
5099
5360
|
"agent_ids": {
|
|
@@ -5156,6 +5417,10 @@
|
|
|
5156
5417
|
"platform_id": {
|
|
5157
5418
|
"type": "string",
|
|
5158
5419
|
"format": "uuid"
|
|
5420
|
+
},
|
|
5421
|
+
"explicit_confirmation": {
|
|
5422
|
+
"type": "boolean",
|
|
5423
|
+
"const": true
|
|
5159
5424
|
}
|
|
5160
5425
|
}
|
|
5161
5426
|
}
|
|
@@ -5247,7 +5512,7 @@
|
|
|
5247
5512
|
},
|
|
5248
5513
|
{
|
|
5249
5514
|
"name": "besales_workbook_inspect",
|
|
5250
|
-
"description": "
|
|
5515
|
+
"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
5516
|
"inputSchema": {
|
|
5252
5517
|
"type": "object",
|
|
5253
5518
|
"properties": {
|
|
@@ -5283,6 +5548,87 @@
|
|
|
5283
5548
|
}
|
|
5284
5549
|
}
|
|
5285
5550
|
},
|
|
5551
|
+
{
|
|
5552
|
+
"name": "besales_workbook_get",
|
|
5553
|
+
"description": "Получить метаданные, classification и archivedAt зарегистрированного SourceWorkbook без чтения содержимого листов. Scope: mcp:*.",
|
|
5554
|
+
"inputSchema": {
|
|
5555
|
+
"type": "object",
|
|
5556
|
+
"required": ["workbook_id"],
|
|
5557
|
+
"properties": {
|
|
5558
|
+
"workspace_id": {
|
|
5559
|
+
"type": "string",
|
|
5560
|
+
"format": "uuid",
|
|
5561
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5562
|
+
},
|
|
5563
|
+
"workbook_id": { "type": "string", "format": "uuid" }
|
|
5564
|
+
}
|
|
5565
|
+
}
|
|
5566
|
+
},
|
|
5567
|
+
{
|
|
5568
|
+
"name": "besales_workbook_sheet_read",
|
|
5569
|
+
"description": "Постранично прочитать выбранный диапазон листа SourceWorkbook без записи в RAG. Возвращает hasMore/next offsets, известный либо null total и SHA-256 pageFingerprint для обнаружения изменений. Ровно один из sheet_title/sheet_gid/sheet_index обязателен. Scope: mcp:*.",
|
|
5570
|
+
"inputSchema": {
|
|
5571
|
+
"type": "object",
|
|
5572
|
+
"required": ["workbook_id"],
|
|
5573
|
+
"properties": {
|
|
5574
|
+
"workspace_id": {
|
|
5575
|
+
"type": "string",
|
|
5576
|
+
"format": "uuid",
|
|
5577
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5578
|
+
},
|
|
5579
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5580
|
+
"sheet_title": { "type": "string" },
|
|
5581
|
+
"sheet_gid": { "type": "integer" },
|
|
5582
|
+
"sheet_index": { "type": "integer", "minimum": 0 },
|
|
5583
|
+
"row_offset": { "type": "integer", "minimum": 0, "default": 0 },
|
|
5584
|
+
"row_limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 50 },
|
|
5585
|
+
"column_offset": { "type": "integer", "minimum": 0, "default": 0 },
|
|
5586
|
+
"column_limit": {
|
|
5587
|
+
"type": "integer",
|
|
5588
|
+
"minimum": 1,
|
|
5589
|
+
"maximum": 100,
|
|
5590
|
+
"default": 50
|
|
5591
|
+
}
|
|
5592
|
+
}
|
|
5593
|
+
}
|
|
5594
|
+
},
|
|
5595
|
+
{
|
|
5596
|
+
"name": "besales_workbook_classification_update",
|
|
5597
|
+
"description": "Сохранить решения классификации вкладок в SourceWorkbook. Перед записью дочитай нужные страницы и проверь pageFingerprint. Scope: mcp:platform-setup.",
|
|
5598
|
+
"inputSchema": {
|
|
5599
|
+
"type": "object",
|
|
5600
|
+
"required": ["workbook_id", "classification"],
|
|
5601
|
+
"properties": {
|
|
5602
|
+
"workspace_id": {
|
|
5603
|
+
"type": "string",
|
|
5604
|
+
"format": "uuid",
|
|
5605
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5606
|
+
},
|
|
5607
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5608
|
+
"classification": {
|
|
5609
|
+
"type": "array",
|
|
5610
|
+
"items": { "type": "object", "additionalProperties": true }
|
|
5611
|
+
}
|
|
5612
|
+
}
|
|
5613
|
+
}
|
|
5614
|
+
},
|
|
5615
|
+
{
|
|
5616
|
+
"name": "besales_workbook_archive",
|
|
5617
|
+
"description": "Архивировать SourceWorkbook после явного подтверждения. Созданные документы знаний сохраняются. Scope: mcp:platform-setup.",
|
|
5618
|
+
"inputSchema": {
|
|
5619
|
+
"type": "object",
|
|
5620
|
+
"required": ["workbook_id", "explicit_confirmation"],
|
|
5621
|
+
"properties": {
|
|
5622
|
+
"workspace_id": {
|
|
5623
|
+
"type": "string",
|
|
5624
|
+
"format": "uuid",
|
|
5625
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5626
|
+
},
|
|
5627
|
+
"workbook_id": { "type": "string", "format": "uuid" },
|
|
5628
|
+
"explicit_confirmation": { "type": "boolean", "const": true }
|
|
5629
|
+
}
|
|
5630
|
+
}
|
|
5631
|
+
},
|
|
5286
5632
|
{
|
|
5287
5633
|
"name": "besales_workbook_extract_amocrm_leads",
|
|
5288
5634
|
"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 +6076,7 @@
|
|
|
5730
6076
|
},
|
|
5731
6077
|
"explicit_confirmation": {
|
|
5732
6078
|
"type": "boolean",
|
|
6079
|
+
"const": true,
|
|
5733
6080
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
5734
6081
|
}
|
|
5735
6082
|
}
|
|
@@ -5994,6 +6341,7 @@
|
|
|
5994
6341
|
},
|
|
5995
6342
|
"explicit_confirmation": {
|
|
5996
6343
|
"type": "boolean",
|
|
6344
|
+
"const": true,
|
|
5997
6345
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
5998
6346
|
}
|
|
5999
6347
|
}
|
|
@@ -6064,6 +6412,7 @@
|
|
|
6064
6412
|
},
|
|
6065
6413
|
"explicit_confirmation": {
|
|
6066
6414
|
"type": "boolean",
|
|
6415
|
+
"const": true,
|
|
6067
6416
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
6068
6417
|
}
|
|
6069
6418
|
}
|
|
@@ -6189,6 +6538,7 @@
|
|
|
6189
6538
|
},
|
|
6190
6539
|
"explicit_confirmation": {
|
|
6191
6540
|
"type": "boolean",
|
|
6541
|
+
"const": true,
|
|
6192
6542
|
"description": "Должен быть true. False → 400 BadRequest."
|
|
6193
6543
|
}
|
|
6194
6544
|
}
|
|
@@ -6408,14 +6758,15 @@
|
|
|
6408
6758
|
"format": "uuid"
|
|
6409
6759
|
},
|
|
6410
6760
|
"explicit_confirmation": {
|
|
6411
|
-
"type": "boolean"
|
|
6761
|
+
"type": "boolean",
|
|
6762
|
+
"const": true
|
|
6412
6763
|
}
|
|
6413
6764
|
}
|
|
6414
6765
|
}
|
|
6415
6766
|
},
|
|
6416
6767
|
{
|
|
6417
6768
|
"name": "besales_knowledge_table_reindex",
|
|
6418
|
-
"description": "
|
|
6769
|
+
"description": "Запустить полную фоновую переиндексацию knowledge table: delete vectors + re-fetch CSV + re-embed + Pinecone upsert. Возвращает job_id; проверяй исход через besales_knowledge_table_reindex_status. Scope: write:knowledge.",
|
|
6419
6770
|
"inputSchema": {
|
|
6420
6771
|
"type": "object",
|
|
6421
6772
|
"required": [
|
|
@@ -6437,45 +6788,100 @@
|
|
|
6437
6788
|
"format": "uuid"
|
|
6438
6789
|
},
|
|
6439
6790
|
"explicit_confirmation": {
|
|
6440
|
-
"type": "boolean"
|
|
6791
|
+
"type": "boolean",
|
|
6792
|
+
"const": true
|
|
6441
6793
|
}
|
|
6442
6794
|
}
|
|
6443
6795
|
}
|
|
6444
6796
|
},
|
|
6445
6797
|
{
|
|
6446
|
-
"name": "
|
|
6447
|
-
"description": "
|
|
6798
|
+
"name": "besales_knowledge_table_reindex_status",
|
|
6799
|
+
"description": "Проверить состояние фоновой переиндексации knowledge table: QUEUED/RUNNING/COMPLETED/FAILED/EXPIRED, progress, result/error и timestamps. Состояние хранится 24 часа. Scope: read:knowledge.",
|
|
6448
6800
|
"inputSchema": {
|
|
6449
6801
|
"type": "object",
|
|
6450
6802
|
"required": [
|
|
6451
|
-
"knowledge_space_id"
|
|
6803
|
+
"knowledge_space_id",
|
|
6804
|
+
"table_id"
|
|
6452
6805
|
],
|
|
6806
|
+
"additionalProperties": false,
|
|
6453
6807
|
"properties": {
|
|
6454
6808
|
"workspace_id": {
|
|
6455
6809
|
"type": "string",
|
|
6456
|
-
"format": "uuid"
|
|
6810
|
+
"format": "uuid",
|
|
6811
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6457
6812
|
},
|
|
6458
6813
|
"knowledge_space_id": {
|
|
6459
6814
|
"type": "string",
|
|
6460
6815
|
"format": "uuid"
|
|
6461
6816
|
},
|
|
6462
|
-
"
|
|
6463
|
-
"type": "
|
|
6464
|
-
"
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
6817
|
+
"table_id": {
|
|
6818
|
+
"type": "string",
|
|
6819
|
+
"format": "uuid"
|
|
6820
|
+
}
|
|
6821
|
+
}
|
|
6822
|
+
}
|
|
6823
|
+
},
|
|
6824
|
+
{
|
|
6825
|
+
"name": "besales_knowledge_namespace_reindex",
|
|
6826
|
+
"description": "Запустить фоновую переиндексацию knowledge space: re-embed существующих Q&A и чанков документов из Postgres → Pinecone. Возвращает job_id; проверяй исход через besales_knowledge_namespace_reindex_status. types опционально (по умолчанию [qa, doc]). Scope: mcp:platform-setup.",
|
|
6827
|
+
"inputSchema": {
|
|
6828
|
+
"type": "object",
|
|
6829
|
+
"required": [
|
|
6830
|
+
"knowledge_space_id",
|
|
6831
|
+
"explicit_confirmation"
|
|
6832
|
+
],
|
|
6833
|
+
"properties": {
|
|
6834
|
+
"workspace_id": {
|
|
6835
|
+
"type": "string",
|
|
6836
|
+
"format": "uuid"
|
|
6837
|
+
},
|
|
6838
|
+
"knowledge_space_id": {
|
|
6839
|
+
"type": "string",
|
|
6840
|
+
"format": "uuid"
|
|
6841
|
+
},
|
|
6842
|
+
"types": {
|
|
6843
|
+
"type": "array",
|
|
6844
|
+
"items": {
|
|
6845
|
+
"type": "string",
|
|
6846
|
+
"enum": [
|
|
6847
|
+
"qa",
|
|
6468
6848
|
"doc"
|
|
6469
6849
|
]
|
|
6470
6850
|
},
|
|
6471
6851
|
"description": "Какие типы переиндексировать; default [qa, doc]"
|
|
6852
|
+
},
|
|
6853
|
+
"explicit_confirmation": {
|
|
6854
|
+
"type": "boolean",
|
|
6855
|
+
"const": true
|
|
6856
|
+
}
|
|
6857
|
+
}
|
|
6858
|
+
}
|
|
6859
|
+
},
|
|
6860
|
+
{
|
|
6861
|
+
"name": "besales_knowledge_namespace_reindex_status",
|
|
6862
|
+
"description": "Проверить состояние фоновой переиндексации knowledge space: QUEUED/RUNNING/COMPLETED/FAILED/EXPIRED, progress, result/error и timestamps. Состояние хранится 24 часа. Scope: read:knowledge.",
|
|
6863
|
+
"inputSchema": {
|
|
6864
|
+
"type": "object",
|
|
6865
|
+
"required": [
|
|
6866
|
+
"knowledge_space_id"
|
|
6867
|
+
],
|
|
6868
|
+
"additionalProperties": false,
|
|
6869
|
+
"properties": {
|
|
6870
|
+
"workspace_id": {
|
|
6871
|
+
"type": "string",
|
|
6872
|
+
"format": "uuid",
|
|
6873
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6874
|
+
},
|
|
6875
|
+
"knowledge_space_id": {
|
|
6876
|
+
"type": "string",
|
|
6877
|
+
"format": "uuid"
|
|
6472
6878
|
}
|
|
6473
6879
|
}
|
|
6474
6880
|
}
|
|
6475
6881
|
},
|
|
6476
6882
|
{
|
|
6477
6883
|
"name": "besales_variable_list",
|
|
6478
|
-
"description": "
|
|
6884
|
+
"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
6885
|
"inputSchema": {
|
|
6480
6886
|
"type": "object",
|
|
6481
6887
|
"required": [
|
|
@@ -6507,6 +6913,17 @@
|
|
|
6507
6913
|
"constants"
|
|
6508
6914
|
],
|
|
6509
6915
|
"description": "Filter для CHANNEL scope; default=all"
|
|
6916
|
+
},
|
|
6917
|
+
"limit": {
|
|
6918
|
+
"type": "integer",
|
|
6919
|
+
"minimum": 1,
|
|
6920
|
+
"maximum": 200,
|
|
6921
|
+
"description": "Размер страницы. Умолчания у аргумента НЕТ намеренно: молча усечённый перечень настройки хуже отказа."
|
|
6922
|
+
},
|
|
6923
|
+
"cursor": {
|
|
6924
|
+
"type": "string",
|
|
6925
|
+
"minLength": 1,
|
|
6926
|
+
"description": "nextCursor предыдущей страницы."
|
|
6510
6927
|
}
|
|
6511
6928
|
}
|
|
6512
6929
|
}
|
|
@@ -7986,7 +8403,8 @@
|
|
|
7986
8403
|
"required": [
|
|
7987
8404
|
"data_source_id",
|
|
7988
8405
|
"catalog_external_code",
|
|
7989
|
-
"enabled"
|
|
8406
|
+
"enabled",
|
|
8407
|
+
"explicit_confirmation"
|
|
7990
8408
|
],
|
|
7991
8409
|
"additionalProperties": false,
|
|
7992
8410
|
"properties": {
|
|
@@ -8008,13 +8426,17 @@
|
|
|
8008
8426
|
"name": {
|
|
8009
8427
|
"type": "string",
|
|
8010
8428
|
"description": "Опц. имя векторной таблицы при включении."
|
|
8429
|
+
},
|
|
8430
|
+
"explicit_confirmation": {
|
|
8431
|
+
"type": "boolean",
|
|
8432
|
+
"const": true
|
|
8011
8433
|
}
|
|
8012
8434
|
}
|
|
8013
8435
|
}
|
|
8014
8436
|
},
|
|
8015
8437
|
{
|
|
8016
8438
|
"name": "besales_workspace_use",
|
|
8017
|
-
"description": "Привязать ТЕКУЩУЮ Claude-сессию к
|
|
8439
|
+
"description": "Привязать ТЕКУЩУЮ Claude-сессию к выбранному workspace (in-memory, до конца сессии). Сначала вызови besales_workspace_current и покажи человеку названия компаний и безопасные подписи аккаунтов; UUID передай сам. Запрещён, если сессия запиннена через BESALES_WORKSPACE_ID.",
|
|
8018
8440
|
"inputSchema": {
|
|
8019
8441
|
"type": "object",
|
|
8020
8442
|
"required": [
|
|
@@ -8024,20 +8446,117 @@
|
|
|
8024
8446
|
"workspace_id": {
|
|
8025
8447
|
"type": "string",
|
|
8026
8448
|
"format": "uuid",
|
|
8027
|
-
"description": "UUID подключённого
|
|
8449
|
+
"description": "UUID подключённого workspace из besales_workspace_current.connected[].workspace_id; человек выбирает по workspace_name/account_label, а не ищет UUID сам."
|
|
8028
8450
|
}
|
|
8029
8451
|
}
|
|
8030
8452
|
}
|
|
8031
8453
|
},
|
|
8032
8454
|
{
|
|
8033
8455
|
"name": "besales_workspace_current",
|
|
8034
|
-
"description": "Показать
|
|
8456
|
+
"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
8457
|
"inputSchema": {
|
|
8036
8458
|
"type": "object",
|
|
8037
8459
|
"required": [],
|
|
8038
8460
|
"properties": {}
|
|
8039
8461
|
}
|
|
8040
8462
|
},
|
|
8463
|
+
{
|
|
8464
|
+
"name": "besales_task_create",
|
|
8465
|
+
"description": "Сохранить цель и минимальный прогресс работы между MCP-сессиями на этой машине. Состояние workspace-scoped, не содержит credentials и не заменяет свежую проверку объектов/прав. Возвращает task_id и version для CAS-обновлений.",
|
|
8466
|
+
"inputSchema": {
|
|
8467
|
+
"type": "object",
|
|
8468
|
+
"required": ["goal"],
|
|
8469
|
+
"additionalProperties": false,
|
|
8470
|
+
"properties": {
|
|
8471
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8472
|
+
"goal": { "type": "string", "minLength": 3, "maxLength": 500 },
|
|
8473
|
+
"context": { "type": "string", "minLength": 1, "maxLength": 2000 },
|
|
8474
|
+
"constraints": { "type": "array", "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 500 }, "default": [] },
|
|
8475
|
+
"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": [] },
|
|
8476
|
+
"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": [] },
|
|
8477
|
+
"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": [] },
|
|
8478
|
+
"expected_user_action": { "type": ["string", "null"], "minLength": 1, "maxLength": 1000 },
|
|
8479
|
+
"retention_days": { "type": "integer", "minimum": 1, "maximum": 180 }
|
|
8480
|
+
}
|
|
8481
|
+
}
|
|
8482
|
+
},
|
|
8483
|
+
{
|
|
8484
|
+
"name": "besales_task_list",
|
|
8485
|
+
"description": "Список сохранённых задач только выбранного workspace. При нескольких задачах возвращает selection_required=true: выбери task_id явно, не продолжай самую новую автоматически.",
|
|
8486
|
+
"inputSchema": {
|
|
8487
|
+
"type": "object",
|
|
8488
|
+
"required": [],
|
|
8489
|
+
"additionalProperties": false,
|
|
8490
|
+
"properties": {
|
|
8491
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8492
|
+
"status": { "type": "string", "enum": ["ACTIVE", "COMPLETED", "CANCELLED", "EXPIRED"] }
|
|
8493
|
+
}
|
|
8494
|
+
}
|
|
8495
|
+
},
|
|
8496
|
+
{
|
|
8497
|
+
"name": "besales_task_get",
|
|
8498
|
+
"description": "Прочитать сохранённую задачу по task_id в выбранном workspace. Перед продолжением перечитай актуальные объекты и besales_workspace_current: сохранённое состояние не доказывает текущую конфигурацию или права.",
|
|
8499
|
+
"inputSchema": {
|
|
8500
|
+
"type": "object",
|
|
8501
|
+
"required": ["task_id"],
|
|
8502
|
+
"additionalProperties": false,
|
|
8503
|
+
"properties": {
|
|
8504
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8505
|
+
"task_id": { "type": "string", "format": "uuid" }
|
|
8506
|
+
}
|
|
8507
|
+
}
|
|
8508
|
+
},
|
|
8509
|
+
{
|
|
8510
|
+
"name": "besales_task_update",
|
|
8511
|
+
"description": "Обновить сохранённую ACTIVE-задачу с compare-and-swap по expected_version. При TASK_VERSION_CONFLICT перечитай задачу и согласуй изменения; не повторяй pending mutation автоматически.",
|
|
8512
|
+
"inputSchema": {
|
|
8513
|
+
"type": "object",
|
|
8514
|
+
"required": ["task_id", "expected_version"],
|
|
8515
|
+
"additionalProperties": false,
|
|
8516
|
+
"properties": {
|
|
8517
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8518
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8519
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8520
|
+
"goal": { "type": "string", "minLength": 3, "maxLength": 500 },
|
|
8521
|
+
"context": { "type": "string", "minLength": 1, "maxLength": 2000 },
|
|
8522
|
+
"constraints": { "type": "array", "maxItems": 20, "items": { "type": "string", "minLength": 1, "maxLength": 500 } },
|
|
8523
|
+
"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 } } } },
|
|
8524
|
+
"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 } } } },
|
|
8525
|
+
"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"] } } } },
|
|
8526
|
+
"expected_user_action": { "type": ["string", "null"], "minLength": 1, "maxLength": 1000 }
|
|
8527
|
+
}
|
|
8528
|
+
}
|
|
8529
|
+
},
|
|
8530
|
+
{
|
|
8531
|
+
"name": "besales_task_close",
|
|
8532
|
+
"description": "Закрыть ACTIVE-задачу как COMPLETED или CANCELLED с проверкой expected_version. Закрытая задача не возобновляется автоматически.",
|
|
8533
|
+
"inputSchema": {
|
|
8534
|
+
"type": "object",
|
|
8535
|
+
"required": ["task_id", "expected_version", "outcome"],
|
|
8536
|
+
"additionalProperties": false,
|
|
8537
|
+
"properties": {
|
|
8538
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8539
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8540
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8541
|
+
"outcome": { "type": "string", "enum": ["COMPLETED", "CANCELLED"] }
|
|
8542
|
+
}
|
|
8543
|
+
}
|
|
8544
|
+
},
|
|
8545
|
+
{
|
|
8546
|
+
"name": "besales_task_delete",
|
|
8547
|
+
"description": "Безвозвратно удалить локальное состояние задачи. Требует точную expected_version и explicit_confirmation=true; не удаляет созданные объекты Besales.",
|
|
8548
|
+
"inputSchema": {
|
|
8549
|
+
"type": "object",
|
|
8550
|
+
"required": ["task_id", "expected_version", "explicit_confirmation"],
|
|
8551
|
+
"additionalProperties": false,
|
|
8552
|
+
"properties": {
|
|
8553
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
8554
|
+
"task_id": { "type": "string", "format": "uuid" },
|
|
8555
|
+
"expected_version": { "type": "integer", "minimum": 1 },
|
|
8556
|
+
"explicit_confirmation": { "type": "boolean", "const": true }
|
|
8557
|
+
}
|
|
8558
|
+
}
|
|
8559
|
+
},
|
|
8041
8560
|
{
|
|
8042
8561
|
"name": "besales_model_catalog_list",
|
|
8043
8562
|
"description": "Каталог моделей для сравнения промпта (model bake-off): id, label, tier (budget/balanced/premium), bestFor-теги «когда что лучше», notes, viaOpenRouter, defaultSelected, available (доступен ли провайдер сейчас) + лимиты. По этим тегам ИИ выбирает ~5 моделей под use-case агента. Read-only.",
|
|
@@ -8176,7 +8695,7 @@
|
|
|
8176
8695
|
},
|
|
8177
8696
|
{
|
|
8178
8697
|
"name": "besales_external_api_channel_create",
|
|
8179
|
-
"description": "v1.5: создать канал External API
|
|
8698
|
+
"description": "v1.5: создать канал External API. Ответ { channelId, ingestPath, revealUrl, revealExpiresAt }; секреты через MCP не проходят. Человек открывает revealUrl, входит и получает ключ с webhook-подписью один раз. Scope: mcp:platform-setup.",
|
|
8180
8699
|
"inputSchema": {
|
|
8181
8700
|
"type": "object",
|
|
8182
8701
|
"required": [
|
|
@@ -8211,7 +8730,7 @@
|
|
|
8211
8730
|
},
|
|
8212
8731
|
{
|
|
8213
8732
|
"name": "besales_external_api_channel_rotate_key",
|
|
8214
|
-
"description": "v1.5:
|
|
8733
|
+
"description": "v1.5: выдать browser-handoff ссылку на перевыпуск bsl-ключа. До открытия ссылки прежний ключ продолжает работать; новый ключ показывается вошедшему человеку один раз. Scope: mcp:platform-setup.",
|
|
8215
8734
|
"inputSchema": {
|
|
8216
8735
|
"type": "object",
|
|
8217
8736
|
"required": [
|
|
@@ -8233,7 +8752,7 @@
|
|
|
8233
8752
|
},
|
|
8234
8753
|
{
|
|
8235
8754
|
"name": "besales_external_api_channel_rotate_secret",
|
|
8236
|
-
"description": "v1.5:
|
|
8755
|
+
"description": "v1.5: выдать browser-handoff ссылку на замену webhook-secret. До открытия ссылки прежняя подпись действует; новая показывается вошедшему человеку один раз. Scope: mcp:platform-setup.",
|
|
8237
8756
|
"inputSchema": {
|
|
8238
8757
|
"type": "object",
|
|
8239
8758
|
"required": [
|
|
@@ -9671,6 +10190,14 @@
|
|
|
9671
10190
|
"ADD"
|
|
9672
10191
|
],
|
|
9673
10192
|
"description": "⚠️ УСТАРЕЛО и на поведение НЕ влияет (с 23.08.2026). Список channels значит «слать сюда», а судьбу КАЖДОГО канала решает сервер: мессенджер (Telegram/VK/MAX) уходит, только если школа подтвердила его наличие у контакта; SMS — только при известном телефоне; Email, WhatsApp, Viber, Сайт, Chatium уходят вслепую всем выбранным. Просят «написать ещё и на почту» — добавь Email в channels и перечисли мессенджеры явно, иначе уедет только письмо. Поле принимается ради обратной совместимости и игнорируется."
|
|
10193
|
+
},
|
|
10194
|
+
"quiet_days_override": {
|
|
10195
|
+
"type": [
|
|
10196
|
+
"integer",
|
|
10197
|
+
"null"
|
|
10198
|
+
],
|
|
10199
|
+
"minimum": 0,
|
|
10200
|
+
"description": "ПЕРЕКРЫТИЕ тихого периода этой рассылкой, в сутках. 0 = «этот текст можно слать внутри тихого периода» — это и есть разрешение. null = рассылка не перекрывает, действует настройка площадки, затем воркспейса, затем 0. ⚠️ null и 0 — РАЗНЫЕ значения: не подставляй ноль вместо «не задано»."
|
|
9674
10201
|
}
|
|
9675
10202
|
}
|
|
9676
10203
|
}
|
|
@@ -9835,6 +10362,14 @@
|
|
|
9835
10362
|
"ADD"
|
|
9836
10363
|
],
|
|
9837
10364
|
"description": "⚠️ УСТАРЕЛО и на поведение НЕ влияет (с 23.08.2026). Список channels значит «слать сюда», а судьбу КАЖДОГО канала решает сервер: мессенджер (Telegram/VK/MAX) уходит, только если школа подтвердила его наличие у контакта; SMS — только при известном телефоне; Email, WhatsApp, Viber, Сайт, Chatium уходят вслепую всем выбранным. Просят «написать ещё и на почту» — добавь Email в channels и перечисли мессенджеры явно, иначе уедет только письмо. Поле принимается ради обратной совместимости и игнорируется."
|
|
10365
|
+
},
|
|
10366
|
+
"quiet_days_override": {
|
|
10367
|
+
"type": [
|
|
10368
|
+
"integer",
|
|
10369
|
+
"null"
|
|
10370
|
+
],
|
|
10371
|
+
"minimum": 0,
|
|
10372
|
+
"description": "ПЕРЕКРЫТИЕ тихого периода этой рассылкой, в сутках. 0 = «этот текст можно слать внутри тихого периода» — это и есть разрешение. null = рассылка не перекрывает, действует настройка площадки, затем воркспейса, затем 0. ⚠️ null и 0 — РАЗНЫЕ значения: не подставляй ноль вместо «не задано»."
|
|
9838
10373
|
}
|
|
9839
10374
|
},
|
|
9840
10375
|
"if": {
|
|
@@ -9882,6 +10417,72 @@
|
|
|
9882
10417
|
}
|
|
9883
10418
|
}
|
|
9884
10419
|
},
|
|
10420
|
+
{
|
|
10421
|
+
"name": "besales_contact_search",
|
|
10422
|
+
"description": "Найти контакты по имени, email, телефону, внешнему ID или каналу / Search contacts by name, email, phone, external ID or channel. Возвращает cursor; страница не равна всему workspace.",
|
|
10423
|
+
"inputSchema": {
|
|
10424
|
+
"type": "object",
|
|
10425
|
+
"additionalProperties": false,
|
|
10426
|
+
"properties": {
|
|
10427
|
+
"workspace_id": { "type": "string", "format": "uuid", "description": "Подставляется из выбранного подключения." },
|
|
10428
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 50 },
|
|
10429
|
+
"cursor": { "type": "string", "minLength": 1 },
|
|
10430
|
+
"search": { "type": "string", "minLength": 1 },
|
|
10431
|
+
"external_id": { "type": "string", "minLength": 1, "description": "CSV provider:value, например getcourse:123." },
|
|
10432
|
+
"phone": { "type": "string", "minLength": 1, "description": "Один телефон или CSV." },
|
|
10433
|
+
"email": { "type": "string", "minLength": 1, "description": "Один email или CSV." },
|
|
10434
|
+
"channel_id": { "type": "string", "format": "uuid" }
|
|
10435
|
+
}
|
|
10436
|
+
}
|
|
10437
|
+
},
|
|
10438
|
+
{
|
|
10439
|
+
"name": "besales_contact_get",
|
|
10440
|
+
"description": "Прочитать карточку контакта и безопасный текущий снимок / Read one contact detail and safe current snapshot. Текст недавних сообщений зависит от effective scope read:conversations.",
|
|
10441
|
+
"inputSchema": {
|
|
10442
|
+
"type": "object",
|
|
10443
|
+
"required": ["contact_id"],
|
|
10444
|
+
"additionalProperties": false,
|
|
10445
|
+
"properties": {
|
|
10446
|
+
"contact_id": { "type": "string", "format": "uuid" }
|
|
10447
|
+
}
|
|
10448
|
+
}
|
|
10449
|
+
},
|
|
10450
|
+
{
|
|
10451
|
+
"name": "besales_contact_diagnostics_get",
|
|
10452
|
+
"description": "Объяснить, почему бот молчит, не передал оператору, не вызвал действие или не доставил ответ / Diagnose silence, operator handoff, actions and delivery from stored evidence. Не возвращает тексты сообщений, аргументы, результаты и raw errors; отсутствие RAG trace честно помечает unknown.",
|
|
10453
|
+
"inputSchema": {
|
|
10454
|
+
"type": "object",
|
|
10455
|
+
"required": ["contact_id"],
|
|
10456
|
+
"additionalProperties": false,
|
|
10457
|
+
"properties": {
|
|
10458
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
10459
|
+
"message_id": { "type": "string", "format": "uuid", "description": "Если не задан, берётся последнее сообщение контакта." }
|
|
10460
|
+
}
|
|
10461
|
+
}
|
|
10462
|
+
},
|
|
10463
|
+
{
|
|
10464
|
+
"name": "besales_contact_touch_history",
|
|
10465
|
+
"description": "ИСТОРИЯ КАСАНИЙ человека школы: что мы ему отправляли и по какому праву. Сводит ТРИ источника с разными ключами: touches (журнал касаний — ПРАВО, взятое ДО отправки; строка есть и у попытки, которая никуда не ушла), sends (реестр получателей — пишется ПОСЛЕ доставки и best-effort, его отсутствие неотправки НЕ доказывает) и firstWelcomeAt (самая ранняя метка по карточкам). Складывать touches и sends нельзя — это ответы на разные вопросы. Инструмент только читает.",
|
|
10466
|
+
"inputSchema": {
|
|
10467
|
+
"type": "object",
|
|
10468
|
+
"required": [
|
|
10469
|
+
"getcourse_user_id"
|
|
10470
|
+
],
|
|
10471
|
+
"additionalProperties": false,
|
|
10472
|
+
"properties": {
|
|
10473
|
+
"workspace_id": {
|
|
10474
|
+
"type": "string",
|
|
10475
|
+
"format": "uuid",
|
|
10476
|
+
"description": "Рабочее пространство. Подставляется из подключения, если не задано."
|
|
10477
|
+
},
|
|
10478
|
+
"getcourse_user_id": {
|
|
10479
|
+
"type": "integer",
|
|
10480
|
+
"minimum": 1,
|
|
10481
|
+
"description": "Идентификатор человека в школе GetCourse (getcourse_user_id). Ключ — ЧЕЛОВЕК, а не карточка: история включает касания со всех площадок воркспейса."
|
|
10482
|
+
}
|
|
10483
|
+
}
|
|
10484
|
+
}
|
|
10485
|
+
},
|
|
9885
10486
|
{
|
|
9886
10487
|
"name": "besales_getcourse_cold_welcome_preview",
|
|
9887
10488
|
"description": "Охват рассылки «Первое сообщение» БЕЗ отправки: totalContacts (ещё могут получить), alreadyWelcomed (уже получали — первое сообщение одноразово на контакт), foundContacts.",
|
|
@@ -9960,6 +10561,16 @@
|
|
|
9960
10561
|
"format": "uuid",
|
|
9961
10562
|
"description": "Рассылка — источник каналов по умолчанию и «Платформы по умолчанию»."
|
|
9962
10563
|
},
|
|
10564
|
+
"segment": {
|
|
10565
|
+
"type": "string",
|
|
10566
|
+
"maxLength": 200,
|
|
10567
|
+
"description": "Метка сегмента запуска. Ею считается правило «этим сегментом человеку уже уходило»: без неё прогноз правил (policyForecast) по этому правилу структурно пуст, и ноль читается как «проверили, никого». Аудиторию метка не отбирает."
|
|
10568
|
+
},
|
|
10569
|
+
"message": {
|
|
10570
|
+
"type": "string",
|
|
10571
|
+
"maxLength": 4000,
|
|
10572
|
+
"description": "Разовый текст запуска — им считается правило «тот же текст не дважды» (журнал касаний ключуется отпечатком шаблона). Для запуска с сохранённой рассылкой не нужен: текст берётся из неё тем же резолвером, что на старте."
|
|
10573
|
+
},
|
|
9963
10574
|
"channels_mode": {
|
|
9964
10575
|
"type": "string",
|
|
9965
10576
|
"enum": [
|
|
@@ -9973,7 +10584,7 @@
|
|
|
9973
10584
|
},
|
|
9974
10585
|
{
|
|
9975
10586
|
"name": "besales_getcourse_cold_welcome_start",
|
|
9976
|
-
"description": "Запустить рассылку «Первое сообщение» (мы пишем первыми
|
|
10587
|
+
"description": "Запустить рассылку «Первое сообщение» (мы пишем первыми тем, кому НАШЕГО исходящего ещё не было; человек, написавший школе и оставшийся без ответа, — законный адресат, исключать его не надо). НЕОБРАТИМО: у GetCourse нет идемпотентности, отправку нельзя отозвать. Всегда сначала preview и подтверждение пользователя. Аудитория: по дате (created_after) или по файлу (contacts). Поля сделки штампуются после отправки. Если у рассылки заданы тексты по сегментам, значение segment ВЫБИРАЕТ текст: назови пользователю выбранный текст ДО подтверждения и не запускай посегментный текст по created_after. Фоновый job проверяй через besales_getcourse_contact_import_status.",
|
|
9977
10588
|
"inputSchema": {
|
|
9978
10589
|
"type": "object",
|
|
9979
10590
|
"required": [
|
|
@@ -10372,7 +10983,7 @@
|
|
|
10372
10983
|
},
|
|
10373
10984
|
{
|
|
10374
10985
|
"name": "besales_getcourse_contacts_import",
|
|
10375
|
-
"description": "Импорт контактов GetCourse СПИСКОМ (без файла): заводит или обновляет их в базе платформы, чтобы по ним можно было запускать «Нашу отправку». НИЧЕГО НЕ ОТПРАВЛЯЕТ. Нужен ровно тогда, когда preview показал notInBase > 0: отправке нужен ChatUser, иначе контакт получает исход SKIPPED_NOT_IN_BASE. Матчинг существующих — по contact_id. Идёт фоном, вернётся jobId. Гейт «один активный импорт на воркспейс» общий с волнами и пакетами: 409 = идёт другой импорт, а не сбой. Максимум 5000 контактов. Scope: launch:campaigns.",
|
|
10986
|
+
"description": "Импорт контактов GetCourse СПИСКОМ (без файла): заводит или обновляет их в базе платформы, чтобы по ним можно было запускать «Нашу отправку». НИЧЕГО НЕ ОТПРАВЛЯЕТ. Нужен ровно тогда, когда preview показал notInBase > 0: отправке нужен ChatUser, иначе контакт получает исход SKIPPED_NOT_IN_BASE. Матчинг существующих — по contact_id. Идёт фоном, вернётся jobId; проверяй его через besales_getcourse_contact_import_status. Гейт «один активный импорт на воркспейс» общий с волнами и пакетами: 409 = идёт другой импорт, а не сбой. Максимум 5000 контактов. Scope: launch:campaigns.",
|
|
10376
10987
|
"inputSchema": {
|
|
10377
10988
|
"type": "object",
|
|
10378
10989
|
"required": [
|
|
@@ -10450,6 +11061,29 @@
|
|
|
10450
11061
|
}
|
|
10451
11062
|
}
|
|
10452
11063
|
},
|
|
11064
|
+
{
|
|
11065
|
+
"name": "besales_getcourse_contact_import_status",
|
|
11066
|
+
"description": "Статус фонового импорта контактов GetCourse и одиночного запуска «Первого сообщения» по jobId. Terminal states: COMPLETED, PARTIAL, FAILED; PARTIAL требует сверить successCount, failedCount и errors. Retained по правилам ImportJob. Scope: launch:campaigns.",
|
|
11067
|
+
"inputSchema": {
|
|
11068
|
+
"type": "object",
|
|
11069
|
+
"required": [
|
|
11070
|
+
"job_id"
|
|
11071
|
+
],
|
|
11072
|
+
"additionalProperties": false,
|
|
11073
|
+
"properties": {
|
|
11074
|
+
"workspace_id": {
|
|
11075
|
+
"type": "string",
|
|
11076
|
+
"format": "uuid",
|
|
11077
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
11078
|
+
},
|
|
11079
|
+
"job_id": {
|
|
11080
|
+
"type": "string",
|
|
11081
|
+
"format": "uuid",
|
|
11082
|
+
"description": "jobId из besales_getcourse_contacts_import или besales_getcourse_cold_welcome_start."
|
|
11083
|
+
}
|
|
11084
|
+
}
|
|
11085
|
+
}
|
|
11086
|
+
},
|
|
10453
11087
|
{
|
|
10454
11088
|
"name": "besales_getcourse_anchor_refresh_preview",
|
|
10455
11089
|
"description": "Что перепишет перечитывание календарных якорей (даты эфира) — БЕЗ обращений к школе: сколько контактов в отборе, скольким откажет отсутствие пина сделки и какие значения они несут сейчас.",
|
|
@@ -10506,7 +11140,7 @@
|
|
|
10506
11140
|
},
|
|
10507
11141
|
{
|
|
10508
11142
|
"name": "besales_getcourse_anchor_refresh_start",
|
|
10509
|
-
"description": "Перечитать календарные якоря контактов из ЗАПИНЁННОЙ сделки GetCourse. Единственный способ донести ПЕРЕНЕСЁННУЮ дату эфира: автоматический добор — set-if-absent и к заполненному значению не возвращается. Прогресс цепочек НЕ откатывается.",
|
|
11143
|
+
"description": "Перечитать календарные якоря контактов из ЗАПИНЁННОЙ сделки GetCourse. Единственный способ донести ПЕРЕНЕСЁННУЮ дату эфира: автоматический добор — set-if-absent и к заполненному значению не возвращается. Прогресс цепочек НЕ откатывается. Фоновый correlationId проверяй через besales_getcourse_anchor_refresh_status.",
|
|
10510
11144
|
"inputSchema": {
|
|
10511
11145
|
"type": "object",
|
|
10512
11146
|
"required": [
|
|
@@ -10564,6 +11198,29 @@
|
|
|
10564
11198
|
}
|
|
10565
11199
|
}
|
|
10566
11200
|
},
|
|
11201
|
+
{
|
|
11202
|
+
"name": "besales_getcourse_anchor_refresh_status",
|
|
11203
|
+
"description": "Статус фонового перечитывания календарных якорей по correlationId. Terminal states: COMPLETED, FAILED, STALLED. STALLED означает потерю lock без terminal status: часть дат могла быть переписана, поэтому перед повтором нужен аудит. Retained 24 часа. Отмены нет: частичные перезаписи необратимы. Scope: read:campaigns.",
|
|
11204
|
+
"inputSchema": {
|
|
11205
|
+
"type": "object",
|
|
11206
|
+
"required": [
|
|
11207
|
+
"correlation_id"
|
|
11208
|
+
],
|
|
11209
|
+
"additionalProperties": false,
|
|
11210
|
+
"properties": {
|
|
11211
|
+
"workspace_id": {
|
|
11212
|
+
"type": "string",
|
|
11213
|
+
"format": "uuid",
|
|
11214
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
11215
|
+
},
|
|
11216
|
+
"correlation_id": {
|
|
11217
|
+
"type": "string",
|
|
11218
|
+
"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}$",
|
|
11219
|
+
"description": "correlationId из besales_getcourse_anchor_refresh_start."
|
|
11220
|
+
}
|
|
11221
|
+
}
|
|
11222
|
+
}
|
|
11223
|
+
},
|
|
10567
11224
|
{
|
|
10568
11225
|
"name": "besales_broadcast_launches_list",
|
|
10569
11226
|
"description": "История запусков рассылок одним списком: наша отправка (cold_welcome, со снимком текста и разбивкой исходов) и волны по файлу (wave).",
|
|
@@ -10629,7 +11286,7 @@
|
|
|
10629
11286
|
},
|
|
10630
11287
|
"cursor": {
|
|
10631
11288
|
"type": "string",
|
|
10632
|
-
"description": "nextCursor
|
|
11289
|
+
"description": "ID последнего показанного прогона (UUID из nextCursor предыдущего ответа). Курсор, а не offset."
|
|
10633
11290
|
},
|
|
10634
11291
|
"limit": {
|
|
10635
11292
|
"type": "integer",
|
|
@@ -10680,11 +11337,28 @@
|
|
|
10680
11337
|
},
|
|
10681
11338
|
"category": {
|
|
10682
11339
|
"type": "string",
|
|
10683
|
-
"
|
|
11340
|
+
"enum": [
|
|
11341
|
+
"HALLUCINATION",
|
|
11342
|
+
"WRONG_ACTION",
|
|
11343
|
+
"WRONG_ROUTING",
|
|
11344
|
+
"BAD_TONE",
|
|
11345
|
+
"MISSED_CONTEXT",
|
|
11346
|
+
"RAG_MISS",
|
|
11347
|
+
"SCRIPT_DEVIATION",
|
|
11348
|
+
"PROMPT_VIOLATION",
|
|
11349
|
+
"CUSTOM_RULE_CONFLICT",
|
|
11350
|
+
"OTHER"
|
|
11351
|
+
],
|
|
11352
|
+
"description": "Категория находки. Закрытый набор бэкенда: чужое значение отвергается с 400."
|
|
10684
11353
|
},
|
|
10685
11354
|
"severity": {
|
|
10686
11355
|
"type": "string",
|
|
10687
|
-
"
|
|
11356
|
+
"enum": [
|
|
11357
|
+
"LOW",
|
|
11358
|
+
"MEDIUM",
|
|
11359
|
+
"CRITICAL"
|
|
11360
|
+
],
|
|
11361
|
+
"description": "Важность находки. Значений ТРИ, «HIGH» среди них нет."
|
|
10688
11362
|
},
|
|
10689
11363
|
"status": {
|
|
10690
11364
|
"type": "string",
|
|
@@ -10700,7 +11374,7 @@
|
|
|
10700
11374
|
},
|
|
10701
11375
|
{
|
|
10702
11376
|
"name": "besales_dialogue_audit_run_start",
|
|
10703
|
-
"description": "Запустить разбор сейчас. Durable: ответ приходит сразу с runId, работа идёт в
|
|
11377
|
+
"description": "Запустить разбор сейчас. Durable: ответ приходит сразу с runId, работа идёт в очереди; проверяй через besales_dialogue_audit_run_get. Уже разобранное заново не оплачивается. 409 — на канале уже идёт прогон. Scope: mcp:platform-setup.",
|
|
10704
11378
|
"inputSchema": {
|
|
10705
11379
|
"type": "object",
|
|
10706
11380
|
"required": [
|
|
@@ -11609,6 +12283,36 @@
|
|
|
11609
12283
|
]
|
|
11610
12284
|
}
|
|
11611
12285
|
},
|
|
12286
|
+
{
|
|
12287
|
+
"name": "besales_broadcast_schedule_pool_snapshots",
|
|
12288
|
+
"description": "Суточные снимки пула отбора по всем расписаниям воркспейса. Scope: read:campaigns. Строка на «расписание × локальный день площадки», включая дни без запуска и выключенные расписания. Три состояния РАЗНЫЕ: строки нет — не считали; status=FAILED — считали и не смогли (poolSize/selectedCount = null, причина в error); truncated — снимок упёрся в бюджет строк источника, показано начало окна, а не окно. Читается мгновенно, в отличие от besales_broadcast_schedule_preview.",
|
|
12289
|
+
"inputSchema": {
|
|
12290
|
+
"type": "object",
|
|
12291
|
+
"properties": {
|
|
12292
|
+
"workspace_id": {
|
|
12293
|
+
"type": "string",
|
|
12294
|
+
"description": "UUID воркспейса. Подставляется MCP-сервером из подключения — спрашивать у пользователя не нужно."
|
|
12295
|
+
},
|
|
12296
|
+
"from": {
|
|
12297
|
+
"type": "string",
|
|
12298
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
12299
|
+
"description": "Начало периода включительно: локальный день ПЛОЩАДКИ в формате ГГГГ-ММ-ДД. Проверяется форма; существование даты сверяет сервер."
|
|
12300
|
+
},
|
|
12301
|
+
"to": {
|
|
12302
|
+
"type": "string",
|
|
12303
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
12304
|
+
"description": "Конец периода включительно: локальный день ПЛОЩАДКИ в формате ГГГГ-ММ-ДД."
|
|
12305
|
+
},
|
|
12306
|
+
"limit": {
|
|
12307
|
+
"type": "integer",
|
|
12308
|
+
"minimum": 1,
|
|
12309
|
+
"maximum": 2000,
|
|
12310
|
+
"description": "Сколько строк вернуть, считая от самого свежего дня. По умолчанию 2000. Ответ печатается целиком, поэтому у полного периода это мегабайты текста — спрашивай окно, которое читаешь."
|
|
12311
|
+
}
|
|
12312
|
+
},
|
|
12313
|
+
"required": []
|
|
12314
|
+
}
|
|
12315
|
+
},
|
|
11612
12316
|
{
|
|
11613
12317
|
"name": "besales_broadcast_segment_rule_set",
|
|
11614
12318
|
"description": "Задать правило отбора сегмента: фасеты поведения, якорь свежести, окно ожидания и приоритет. Scope: launch:campaigns. ⚠️⚠️ 409 означает, что сегментом уже отправляли и правило заморожено — заведи НОВЫЙ сегмент, правка задним числом сделала бы разрез отчёта несопоставимым. Секунды, а не минуты: «от 120 минут» — это activeSecondsMin=7200.",
|
|
@@ -11714,6 +12418,10 @@
|
|
|
11714
12418
|
"minDaysSince"
|
|
11715
12419
|
],
|
|
11716
12420
|
"description": "ПОВТОРНОЕ касание: сегмент уходит тем, у кого названный сегмент был ПОСЛЕДНИМ нашим касанием и кто нам не ответил. Снимает вечный одноразовый claim приветствия — единственную защиту от второго сообщения живому человеку"
|
|
12421
|
+
},
|
|
12422
|
+
"untouchedOnly": {
|
|
12423
|
+
"type": "boolean",
|
|
12424
|
+
"description": "Право первого касания: сегмент уходит только тем, кому мы ещё НИКОГДА не писали. Молчание значит true — сегодняшнее поведение платформы. Ставьте false осознанно: это разрешает второе первое сообщение человеку, уже получившему холодное приветствие."
|
|
11717
12425
|
}
|
|
11718
12426
|
},
|
|
11719
12427
|
"required": [
|
|
@@ -11801,6 +12509,215 @@
|
|
|
11801
12509
|
}
|
|
11802
12510
|
}
|
|
11803
12511
|
}
|
|
12512
|
+
},
|
|
12513
|
+
{
|
|
12514
|
+
"name": "besales_inbound_analytics_get",
|
|
12515
|
+
"description": "Входящая аналитика: органические диалоги, темы, скорость ответа, деньги, цикл сделки и качество данных. Не заменяется исходящей аналитикой рассылок. Scope: read:analytics.",
|
|
12516
|
+
"inputSchema": {
|
|
12517
|
+
"type": "object",
|
|
12518
|
+
"required": ["report"],
|
|
12519
|
+
"additionalProperties": false,
|
|
12520
|
+
"properties": {
|
|
12521
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12522
|
+
"report": { "type": "string", "enum": ["summary", "topics", "speed", "money", "cycle", "quality"] },
|
|
12523
|
+
"platform_id": { "type": "string", "format": "uuid" },
|
|
12524
|
+
"channels": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "maxItems": 20 },
|
|
12525
|
+
"mode": { "type": "string", "enum": ["all", "days", "range"], "default": "days" },
|
|
12526
|
+
"days": { "type": "integer", "minimum": 1 },
|
|
12527
|
+
"from": { "type": "string", "format": "date-time" },
|
|
12528
|
+
"to": { "type": "string", "format": "date-time" }
|
|
12529
|
+
}
|
|
12530
|
+
}
|
|
12531
|
+
},
|
|
12532
|
+
{
|
|
12533
|
+
"name": "besales_funnel_analytics_get",
|
|
12534
|
+
"description": "Аналитика воронки площадки: meta принимает только platform_id/workspace_id; summary/cohorts требуют from/to; view доступен только summary, cohorts всегда считает cohort. manager_id доступен summary/cohorts. Scope: read:analytics.",
|
|
12535
|
+
"inputSchema": {
|
|
12536
|
+
"type": "object",
|
|
12537
|
+
"required": ["report", "platform_id"],
|
|
12538
|
+
"additionalProperties": false,
|
|
12539
|
+
"properties": {
|
|
12540
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12541
|
+
"report": { "type": "string", "enum": ["meta", "summary", "cohorts"] },
|
|
12542
|
+
"platform_id": { "type": "string", "format": "uuid" },
|
|
12543
|
+
"from": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12544
|
+
"to": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12545
|
+
"view": { "type": "string", "enum": ["cohort", "period"] },
|
|
12546
|
+
"manager_id": { "type": "integer" }
|
|
12547
|
+
}
|
|
12548
|
+
}
|
|
12549
|
+
},
|
|
12550
|
+
{
|
|
12551
|
+
"name": "besales_ai_costs_get",
|
|
12552
|
+
"description": "Фактические AI-затраты из immutable usage ledger: summary, tasks и breakdown. group_by/page/limit доступны только breakdown; для него group_by обязателен. unpricedEvents остаются неизвестной стоимостью, а не нулём. Scope: read:analytics.",
|
|
12553
|
+
"inputSchema": {
|
|
12554
|
+
"type": "object",
|
|
12555
|
+
"required": ["report"],
|
|
12556
|
+
"additionalProperties": false,
|
|
12557
|
+
"properties": {
|
|
12558
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12559
|
+
"report": { "type": "string", "enum": ["summary", "tasks", "breakdown"] },
|
|
12560
|
+
"mode": { "type": "string", "enum": ["all", "days", "range"], "default": "all" },
|
|
12561
|
+
"days": { "type": "integer", "minimum": 1 },
|
|
12562
|
+
"from": { "type": "string", "format": "date-time" },
|
|
12563
|
+
"to": { "type": "string", "format": "date-time" },
|
|
12564
|
+
"scope": { "type": "string", "enum": ["production", "with_tests"], "default": "production" },
|
|
12565
|
+
"group_by": { "type": "string", "enum": ["customer", "platform", "tag", "operation", "provider"] },
|
|
12566
|
+
"page": { "type": "integer", "minimum": 1 },
|
|
12567
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 100 }
|
|
12568
|
+
}
|
|
12569
|
+
}
|
|
12570
|
+
},
|
|
12571
|
+
{
|
|
12572
|
+
"name": "besales_custom_report_list",
|
|
12573
|
+
"description": "Список сохранённых кастомных аналитических таблиц воркспейса без архивных. Scope: read:analytics.",
|
|
12574
|
+
"inputSchema": {
|
|
12575
|
+
"type": "object",
|
|
12576
|
+
"additionalProperties": false,
|
|
12577
|
+
"properties": { "workspace_id": { "type": "string", "format": "uuid" } }
|
|
12578
|
+
}
|
|
12579
|
+
},
|
|
12580
|
+
{
|
|
12581
|
+
"name": "besales_custom_report_get",
|
|
12582
|
+
"description": "Получить определение кастомного отчёта: источник, view, фильтры, оси, метрики и updatedAt. Scope: read:analytics.",
|
|
12583
|
+
"inputSchema": {
|
|
12584
|
+
"type": "object",
|
|
12585
|
+
"required": ["report_id"],
|
|
12586
|
+
"additionalProperties": false,
|
|
12587
|
+
"properties": {
|
|
12588
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12589
|
+
"report_id": { "type": "string", "format": "uuid" }
|
|
12590
|
+
}
|
|
12591
|
+
}
|
|
12592
|
+
},
|
|
12593
|
+
{
|
|
12594
|
+
"name": "besales_custom_report_run",
|
|
12595
|
+
"description": "Рассчитать сохранённый кастомный отчёт за период с его каноническими source/view/grain. Scope: read:analytics.",
|
|
12596
|
+
"inputSchema": {
|
|
12597
|
+
"type": "object",
|
|
12598
|
+
"required": ["report_id", "from", "to"],
|
|
12599
|
+
"additionalProperties": false,
|
|
12600
|
+
"properties": {
|
|
12601
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12602
|
+
"report_id": { "type": "string", "format": "uuid" },
|
|
12603
|
+
"from": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12604
|
+
"to": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
12605
|
+
"granularity": { "type": "string", "enum": ["day", "week", "month", "total"] }
|
|
12606
|
+
}
|
|
12607
|
+
}
|
|
12608
|
+
},
|
|
12609
|
+
{
|
|
12610
|
+
"name": "besales_workspace_operational_overview",
|
|
12611
|
+
"description": "Эксплуатационная сводка: цепочки, расписания, ожидаемые и фактические запуски, durable jobs, ошибки действий и доступная очередь операторов. Scope: read:analytics; строки очереди требуют read:conversations.",
|
|
12612
|
+
"inputSchema": {
|
|
12613
|
+
"type": "object",
|
|
12614
|
+
"additionalProperties": false,
|
|
12615
|
+
"properties": {
|
|
12616
|
+
"workspace_id": { "type": "string", "format": "uuid" }
|
|
12617
|
+
}
|
|
12618
|
+
}
|
|
12619
|
+
},
|
|
12620
|
+
{
|
|
12621
|
+
"name": "besales_workspace_operator_list",
|
|
12622
|
+
"description": "Системные workspace operators Besales для фильтра и назначения. CRM operators не входят; assignable показывает текущую пригодность. Scope: read:conversations.",
|
|
12623
|
+
"inputSchema": {
|
|
12624
|
+
"type": "object",
|
|
12625
|
+
"additionalProperties": false,
|
|
12626
|
+
"properties": { "workspace_id": { "type": "string", "format": "uuid" } }
|
|
12627
|
+
}
|
|
12628
|
+
},
|
|
12629
|
+
{
|
|
12630
|
+
"name": "besales_workspace_operator_queue_list",
|
|
12631
|
+
"description": "Пагинированная очередь операторов с каноническим status, назначением и последним доказательством PlatformWorkLog. Scope: read:conversations.",
|
|
12632
|
+
"inputSchema": {
|
|
12633
|
+
"type": "object",
|
|
12634
|
+
"additionalProperties": false,
|
|
12635
|
+
"properties": {
|
|
12636
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12637
|
+
"status": { "type": "string", "enum": ["WAITING_OPERATOR", "IN_PROGRESS", "WAITING_CUSTOMER", "RESOLVED"] },
|
|
12638
|
+
"workspace_operator_id": { "type": "string", "format": "uuid" },
|
|
12639
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
12640
|
+
"page": { "type": "integer", "minimum": 1, "default": 1 },
|
|
12641
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }
|
|
12642
|
+
}
|
|
12643
|
+
}
|
|
12644
|
+
},
|
|
12645
|
+
{
|
|
12646
|
+
"name": "besales_workspace_operator_assignment_get",
|
|
12647
|
+
"description": "Текущее назначение workspace operator, operator status, CAS-версия assignedAt и workflow evidence конкретного чата. Scope: read:conversations.",
|
|
12648
|
+
"inputSchema": {
|
|
12649
|
+
"type": "object",
|
|
12650
|
+
"required": ["contact_id"],
|
|
12651
|
+
"additionalProperties": false,
|
|
12652
|
+
"properties": {
|
|
12653
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12654
|
+
"contact_id": { "type": "string", "format": "uuid" }
|
|
12655
|
+
}
|
|
12656
|
+
}
|
|
12657
|
+
},
|
|
12658
|
+
{
|
|
12659
|
+
"name": "besales_workspace_operator_assignment_set",
|
|
12660
|
+
"description": "CAS-защищённо назначить, переназначить или снять workspace operator. Не меняет CRM, статус очереди и не отправляет сообщения. Требует explicit_confirmation и scope write:operators.",
|
|
12661
|
+
"inputSchema": {
|
|
12662
|
+
"type": "object",
|
|
12663
|
+
"required": ["contact_id", "workspace_operator_id", "expected_workspace_operator_id", "expected_assigned_operator_at", "explicit_confirmation"],
|
|
12664
|
+
"additionalProperties": false,
|
|
12665
|
+
"properties": {
|
|
12666
|
+
"workspace_id": { "type": "string", "format": "uuid" },
|
|
12667
|
+
"contact_id": { "type": "string", "format": "uuid" },
|
|
12668
|
+
"workspace_operator_id": { "type": ["string", "null"], "format": "uuid" },
|
|
12669
|
+
"expected_workspace_operator_id": { "type": ["string", "null"], "format": "uuid" },
|
|
12670
|
+
"expected_assigned_operator_at": { "type": ["string", "null"], "format": "date-time" },
|
|
12671
|
+
"explicit_confirmation": { "type": "boolean", "enum": [true] }
|
|
12672
|
+
}
|
|
12673
|
+
}
|
|
12674
|
+
},
|
|
12675
|
+
{
|
|
12676
|
+
"name": "besales_help_search",
|
|
12677
|
+
"description": "Найти актуальную справку Besales по обычному русскому или английскому описанию задачи. Возвращает URI и подходящие разделы; работает даже когда MCP resources не показаны модели хостом.",
|
|
12678
|
+
"inputSchema": {
|
|
12679
|
+
"type": "object",
|
|
12680
|
+
"required": ["query"],
|
|
12681
|
+
"properties": {
|
|
12682
|
+
"query": {
|
|
12683
|
+
"type": "string",
|
|
12684
|
+
"minLength": 2,
|
|
12685
|
+
"description": "Задача своими словами, например: настроить дожимы или бот молчит"
|
|
12686
|
+
},
|
|
12687
|
+
"limit": {
|
|
12688
|
+
"type": "integer",
|
|
12689
|
+
"minimum": 1,
|
|
12690
|
+
"maximum": 10,
|
|
12691
|
+
"default": 5
|
|
12692
|
+
}
|
|
12693
|
+
},
|
|
12694
|
+
"additionalProperties": false
|
|
12695
|
+
}
|
|
12696
|
+
},
|
|
12697
|
+
{
|
|
12698
|
+
"name": "besales_help_get",
|
|
12699
|
+
"description": "Прочитать индекс, один раздел или полную версию документа Besales из того же источника, что MCP resource. Сначала используй besales_help_search, если URI неизвестен.",
|
|
12700
|
+
"inputSchema": {
|
|
12701
|
+
"type": "object",
|
|
12702
|
+
"required": ["uri"],
|
|
12703
|
+
"properties": {
|
|
12704
|
+
"uri": {
|
|
12705
|
+
"type": "string",
|
|
12706
|
+
"pattern": "^besales://"
|
|
12707
|
+
},
|
|
12708
|
+
"section": {
|
|
12709
|
+
"type": "string",
|
|
12710
|
+
"minLength": 1,
|
|
12711
|
+
"description": "Точный или однозначный фрагмент заголовка раздела"
|
|
12712
|
+
},
|
|
12713
|
+
"full": {
|
|
12714
|
+
"type": "boolean",
|
|
12715
|
+
"default": false,
|
|
12716
|
+
"description": "Вернуть документ целиком; без section/full возвращается компактный индекс"
|
|
12717
|
+
}
|
|
12718
|
+
},
|
|
12719
|
+
"additionalProperties": false
|
|
12720
|
+
}
|
|
11804
12721
|
}
|
|
11805
12722
|
],
|
|
11806
12723
|
"resources": [
|
|
@@ -11989,55 +12906,63 @@
|
|
|
11989
12906
|
"name": "Workflow: Compare models (model bake-off)",
|
|
11990
12907
|
"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
12908
|
"mimeType": "text/markdown"
|
|
12909
|
+
},
|
|
12910
|
+
{
|
|
12911
|
+
"uri": "besales://docs/tools-catalog",
|
|
12912
|
+
"name": "Каталог инструментов",
|
|
12913
|
+
"description": "Динамический список фактически опубликованных tools по категориям с версией и точным количеством.",
|
|
12914
|
+
"mimeType": "text/markdown"
|
|
12915
|
+
},
|
|
12916
|
+
{
|
|
12917
|
+
"uri": "besales://docs/trigger-actions",
|
|
12918
|
+
"name": "Триггеры и действия",
|
|
12919
|
+
"description": "Чтение, конфигурация, полная замена и проверка trigger actions.",
|
|
12920
|
+
"mimeType": "text/markdown"
|
|
12921
|
+
},
|
|
12922
|
+
{
|
|
12923
|
+
"uri": "besales://docs/variables",
|
|
12924
|
+
"name": "Переменные",
|
|
12925
|
+
"description": "Workspace/channel variables и полные overrides агента.",
|
|
12926
|
+
"mimeType": "text/markdown"
|
|
12927
|
+
},
|
|
12928
|
+
{
|
|
12929
|
+
"uri": "besales://docs/routing",
|
|
12930
|
+
"name": "Маршрутизация агентов",
|
|
12931
|
+
"description": "Правила routing, router state и проверка multi-agent workflow.",
|
|
12932
|
+
"mimeType": "text/markdown"
|
|
12933
|
+
},
|
|
12934
|
+
{
|
|
12935
|
+
"uri": "besales://docs/follow-up",
|
|
12936
|
+
"name": "Follow-up и дожимы",
|
|
12937
|
+
"description": "Цепочки, статистика, реакции и безопасный funnel-test.",
|
|
12938
|
+
"mimeType": "text/markdown"
|
|
12939
|
+
},
|
|
12940
|
+
{
|
|
12941
|
+
"uri": "besales://docs/campaigns",
|
|
12942
|
+
"name": "Рассылки и кампании",
|
|
12943
|
+
"description": "Mailing variants, schedules, launches и каноническая аналитика рассылок.",
|
|
12944
|
+
"mimeType": "text/markdown"
|
|
12945
|
+
},
|
|
12946
|
+
{
|
|
12947
|
+
"uri": "besales://docs/task-state",
|
|
12948
|
+
"name": "Состояние длительной задачи",
|
|
12949
|
+
"description": "Как сохранить, выбрать, безопасно продолжить, закрыть или удалить длительную задачу между MCP-сессиями.",
|
|
12950
|
+
"mimeType": "text/markdown"
|
|
11992
12951
|
}
|
|
11993
12952
|
],
|
|
11994
12953
|
"summary": {
|
|
11995
|
-
"total_tools":
|
|
12954
|
+
"total_tools": 253,
|
|
11996
12955
|
"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
|
|
12956
|
+
"workspace_and_help": 18,
|
|
12957
|
+
"agent_configuration": 14,
|
|
12958
|
+
"prompt_and_testing": 33,
|
|
12959
|
+
"icp": 9,
|
|
12960
|
+
"knowledge_and_content": 50,
|
|
12961
|
+
"crm_and_data_sources": 27,
|
|
12962
|
+
"channels_and_credentials": 14,
|
|
12963
|
+
"dialogues_and_contacts": 16,
|
|
12964
|
+
"automation": 5,
|
|
12965
|
+
"outbound_and_analytics": 67
|
|
12041
12966
|
},
|
|
12042
12967
|
"external_execution_pairs": [
|
|
12043
12968
|
"besales_icp_analysis_get_instructions / submit",
|
|
@@ -12062,6 +12987,7 @@
|
|
|
12062
12987
|
],
|
|
12063
12988
|
"newly_added_in_p3_x_platform_setup_bridge": [
|
|
12064
12989
|
"besales_platform_context_get",
|
|
12990
|
+
"besales_trigger_action_catalog_get",
|
|
12065
12991
|
"besales_agent_list",
|
|
12066
12992
|
"besales_agent_variable_overrides_get",
|
|
12067
12993
|
"besales_getcourse_departments_list",
|
|
@@ -12104,6 +13030,10 @@
|
|
|
12104
13030
|
],
|
|
12105
13031
|
"newly_added_in_v1_5_workbook_ingestion": [
|
|
12106
13032
|
"besales_workbook_inspect",
|
|
13033
|
+
"besales_workbook_get",
|
|
13034
|
+
"besales_workbook_sheet_read",
|
|
13035
|
+
"besales_workbook_classification_update",
|
|
13036
|
+
"besales_workbook_archive",
|
|
12107
13037
|
"besales_workbook_extract_amocrm_leads",
|
|
12108
13038
|
"besales_workbook_to_knowledge_document"
|
|
12109
13039
|
],
|
|
@@ -12125,7 +13055,8 @@
|
|
|
12125
13055
|
"besales_knowledge_table_get",
|
|
12126
13056
|
"besales_knowledge_table_patch",
|
|
12127
13057
|
"besales_knowledge_table_delete",
|
|
12128
|
-
"besales_knowledge_table_reindex"
|
|
13058
|
+
"besales_knowledge_table_reindex",
|
|
13059
|
+
"besales_knowledge_table_reindex_status"
|
|
12129
13060
|
],
|
|
12130
13061
|
"modified_in_v1_5_increment_3": [
|
|
12131
13062
|
"besales_agent_update",
|
|
@@ -12262,6 +13193,34 @@
|
|
|
12262
13193
|
"newly_added_in_trigger_contact_claims": [
|
|
12263
13194
|
"besales_trigger_claim_list",
|
|
12264
13195
|
"besales_trigger_claim_reset"
|
|
13196
|
+
],
|
|
13197
|
+
"newly_added_in_broadcast_pool_snapshots": [
|
|
13198
|
+
"besales_broadcast_schedule_pool_snapshots"
|
|
13199
|
+
],
|
|
13200
|
+
"newly_added_in_task_state": [
|
|
13201
|
+
"besales_task_create",
|
|
13202
|
+
"besales_task_list",
|
|
13203
|
+
"besales_task_get",
|
|
13204
|
+
"besales_task_update",
|
|
13205
|
+
"besales_task_close",
|
|
13206
|
+
"besales_task_delete"
|
|
13207
|
+
],
|
|
13208
|
+
"newly_added_in_analytics": [
|
|
13209
|
+
"besales_inbound_analytics_get",
|
|
13210
|
+
"besales_funnel_analytics_get",
|
|
13211
|
+
"besales_ai_costs_get",
|
|
13212
|
+
"besales_custom_report_list",
|
|
13213
|
+
"besales_custom_report_get",
|
|
13214
|
+
"besales_custom_report_run"
|
|
13215
|
+
],
|
|
13216
|
+
"newly_added_in_operational_overview": [
|
|
13217
|
+
"besales_workspace_operational_overview"
|
|
13218
|
+
],
|
|
13219
|
+
"newly_added_in_operator_workflow": [
|
|
13220
|
+
"besales_workspace_operator_list",
|
|
13221
|
+
"besales_workspace_operator_queue_list",
|
|
13222
|
+
"besales_workspace_operator_assignment_get",
|
|
13223
|
+
"besales_workspace_operator_assignment_set"
|
|
12265
13224
|
]
|
|
12266
13225
|
}
|
|
12267
13226
|
}
|