@besales/mcp 0.28.0 → 0.32.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 +6 -2
- package/dist/instructions/server-instructions.d.ts +1 -1
- package/dist/instructions/server-instructions.js +14 -0
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/resources/docs/crm-integration.md +2 -2
- package/dist/resources/workflows/audit-dialogues.md +12 -0
- package/dist/resources/workflows/compare-models.md +1 -1
- package/dist/schemas/mcp-tools.json +2315 -1251
- package/dist/tools/definitions/broadcast-analytics.d.ts +26 -0
- package/dist/tools/definitions/broadcast-analytics.js +89 -0
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -0
- package/dist/tools/definitions/dialogue-export.js +8 -1
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +84 -0
- package/dist/tools/definitions/follow-up.js +161 -0
- package/dist/tools/definitions/follow-up.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +2 -2
- package/dist/tools/definitions/model-comparison.js +1 -1
- package/dist/tools/definitions/platform-setup.d.ts +74 -0
- package/dist/tools/definitions/platform-setup.js +286 -1
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.d.ts +24 -0
- package/dist/tools/definitions/scheduled-tasks.js +124 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -0
- package/dist/tools/definitions/shared.d.ts +9 -0
- package/dist/tools/definitions/shared.js +34 -0
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions.d.ts +131 -2
- package/dist/tools/definitions.js +6 -0
- package/dist/tools/definitions.js.map +1 -1
- package/docs/host-setup.md +3 -3
- package/package.json +2 -2
- package/CHANGELOG.md +0 -531
|
@@ -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.2.0-draft",
|
|
5
|
-
"lastUpdated": "2026-
|
|
5
|
+
"lastUpdated": "2026-07-26",
|
|
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.",
|
|
@@ -1491,166 +1491,620 @@
|
|
|
1491
1491
|
}
|
|
1492
1492
|
},
|
|
1493
1493
|
{
|
|
1494
|
-
"name": "
|
|
1495
|
-
"description": "
|
|
1494
|
+
"name": "besales_getcourse_wave_run_start",
|
|
1495
|
+
"description": "Start a durable GetCourse status-mode wave run for up to 5000 contacts. The run chunks the cohort, waits for the import lock, processes chunks sequentially and survives service restarts; poll one run via besales_getcourse_wave_run_status instead of building waves manually. WITHOUT confirm=true this is a DRY-RUN and no run is created. A real run requires BOTH confirm=true and explicit_confirmation=true. Only launch_type=status is supported; use besales_getcourse_wave_import for board/group. HTTP 409 returns the already active runId for the platform. Scope: mcp:platform-setup.",
|
|
1496
1496
|
"inputSchema": {
|
|
1497
1497
|
"type": "object",
|
|
1498
1498
|
"required": [
|
|
1499
1499
|
"platform_id",
|
|
1500
|
-
"
|
|
1501
|
-
"
|
|
1500
|
+
"crm_id",
|
|
1501
|
+
"channels",
|
|
1502
|
+
"contacts"
|
|
1502
1503
|
],
|
|
1503
1504
|
"properties": {
|
|
1504
|
-
"
|
|
1505
|
+
"workspace_id": {
|
|
1505
1506
|
"type": "string",
|
|
1506
|
-
"format": "uuid"
|
|
1507
|
+
"format": "uuid",
|
|
1508
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1507
1509
|
},
|
|
1508
|
-
"
|
|
1509
|
-
"type": "string"
|
|
1510
|
+
"platform_id": {
|
|
1511
|
+
"type": "string",
|
|
1512
|
+
"format": "uuid",
|
|
1513
|
+
"description": "GetCourse PLATFORM uuid."
|
|
1510
1514
|
},
|
|
1511
|
-
"
|
|
1512
|
-
"type":
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
]
|
|
1515
|
+
"crm_id": {
|
|
1516
|
+
"type": "string",
|
|
1517
|
+
"format": "uuid",
|
|
1518
|
+
"description": "GetCourse CRM uuid."
|
|
1516
1519
|
},
|
|
1517
|
-
"
|
|
1520
|
+
"launch_type": {
|
|
1518
1521
|
"type": "string",
|
|
1519
1522
|
"enum": [
|
|
1520
|
-
"
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
]
|
|
1523
|
+
"status"
|
|
1524
|
+
],
|
|
1525
|
+
"description": "Only status mode is supported. For board/group use besales_getcourse_wave_import."
|
|
1524
1526
|
},
|
|
1525
|
-
"
|
|
1527
|
+
"channels": {
|
|
1528
|
+
"type": "array",
|
|
1529
|
+
"items": {
|
|
1530
|
+
"type": "string"
|
|
1531
|
+
},
|
|
1532
|
+
"minItems": 1,
|
|
1533
|
+
"description": "Wave channels (GetCourseTransport: VK|Telegram|MAX|SMS|Email|Site) for analytics."
|
|
1534
|
+
},
|
|
1535
|
+
"funnel": {
|
|
1526
1536
|
"type": "string",
|
|
1527
|
-
"
|
|
1537
|
+
"maxLength": 200,
|
|
1538
|
+
"description": "Canonical business-funnel key/name for analytics."
|
|
1528
1539
|
},
|
|
1529
|
-
"
|
|
1540
|
+
"segment": {
|
|
1530
1541
|
"type": "string",
|
|
1531
|
-
"
|
|
1542
|
+
"maxLength": 200,
|
|
1543
|
+
"description": "Wave segment label for analytics."
|
|
1532
1544
|
},
|
|
1533
|
-
"
|
|
1545
|
+
"cohort_label": {
|
|
1546
|
+
"type": "string",
|
|
1547
|
+
"maxLength": 200,
|
|
1548
|
+
"description": "Human-readable name of this concrete run."
|
|
1549
|
+
},
|
|
1550
|
+
"message_variant": {
|
|
1551
|
+
"type": "string",
|
|
1552
|
+
"maxLength": 120,
|
|
1553
|
+
"description": "Welcome-message variant for run analytics."
|
|
1554
|
+
},
|
|
1555
|
+
"found_count": {
|
|
1556
|
+
"type": "integer",
|
|
1557
|
+
"minimum": 0,
|
|
1558
|
+
"maximum": 10000000,
|
|
1559
|
+
"description": "Contacts found in the source before deduplication and filters."
|
|
1560
|
+
},
|
|
1561
|
+
"product_code": {
|
|
1562
|
+
"type": "string",
|
|
1563
|
+
"maxLength": 100,
|
|
1564
|
+
"pattern": "^[^\\s/]+$",
|
|
1565
|
+
"description": "Product code for the funnel→product analytics dictionary."
|
|
1566
|
+
},
|
|
1567
|
+
"product_name": {
|
|
1568
|
+
"type": "string",
|
|
1569
|
+
"maxLength": 200,
|
|
1570
|
+
"description": "Display name of the analytics product."
|
|
1571
|
+
},
|
|
1572
|
+
"deal_fields": {
|
|
1573
|
+
"type": "object",
|
|
1574
|
+
"additionalProperties": {
|
|
1575
|
+
"type": [
|
|
1576
|
+
"string",
|
|
1577
|
+
"number",
|
|
1578
|
+
"boolean",
|
|
1579
|
+
"null"
|
|
1580
|
+
]
|
|
1581
|
+
},
|
|
1582
|
+
"description": "status mode: { \"<numeric fieldId>\": value } applied to every contact's deal."
|
|
1583
|
+
},
|
|
1584
|
+
"contacts": {
|
|
1534
1585
|
"type": "array",
|
|
1535
|
-
"
|
|
1586
|
+
"minItems": 1,
|
|
1587
|
+
"maxItems": 5000,
|
|
1588
|
+
"description": "Durable-run cohort.",
|
|
1536
1589
|
"items": {
|
|
1537
1590
|
"type": "object",
|
|
1538
1591
|
"required": [
|
|
1539
|
-
"
|
|
1540
|
-
"override_value"
|
|
1592
|
+
"contact_id"
|
|
1541
1593
|
],
|
|
1542
1594
|
"properties": {
|
|
1543
|
-
"
|
|
1595
|
+
"contact_id": {
|
|
1544
1596
|
"type": "string",
|
|
1545
|
-
"
|
|
1597
|
+
"description": "GetCourse user id."
|
|
1546
1598
|
},
|
|
1547
|
-
"
|
|
1548
|
-
"type": [
|
|
1549
|
-
"string",
|
|
1550
|
-
"number",
|
|
1551
|
-
"boolean"
|
|
1552
|
-
]
|
|
1553
|
-
}
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
},
|
|
1557
|
-
"agent_workspace_variable_overrides": {
|
|
1558
|
-
"type": "array",
|
|
1559
|
-
"description": "Перезаписи переменных воркспейса на уровне агента (бьют по WorkspaceVariable; тип значения валидируется против WorkspaceVariable.type).",
|
|
1560
|
-
"items": {
|
|
1561
|
-
"type": "object",
|
|
1562
|
-
"required": [
|
|
1563
|
-
"workspace_variable_id",
|
|
1564
|
-
"override_value"
|
|
1565
|
-
],
|
|
1566
|
-
"properties": {
|
|
1567
|
-
"workspace_variable_id": {
|
|
1599
|
+
"deal_id": {
|
|
1568
1600
|
"type": "string",
|
|
1569
|
-
"
|
|
1601
|
+
"description": "Optional order id to pin."
|
|
1570
1602
|
},
|
|
1571
|
-
"
|
|
1572
|
-
"type":
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1603
|
+
"transport": {
|
|
1604
|
+
"type": "string",
|
|
1605
|
+
"description": "Optional known transport of the contact."
|
|
1606
|
+
},
|
|
1607
|
+
"dialog_id": {
|
|
1608
|
+
"type": "string",
|
|
1609
|
+
"description": "Optional GetCourse dialog id (resp_id)."
|
|
1610
|
+
},
|
|
1611
|
+
"lead_last_active_at": {
|
|
1612
|
+
"type": "string",
|
|
1613
|
+
"format": "date-time",
|
|
1614
|
+
"description": "Legacy ISO timestamp of the lead's last activity."
|
|
1615
|
+
},
|
|
1616
|
+
"segment_entered_at": {
|
|
1617
|
+
"type": "string",
|
|
1618
|
+
"format": "date-time",
|
|
1619
|
+
"description": "Exact ISO timestamp when the contact entered the segment."
|
|
1577
1620
|
}
|
|
1578
|
-
}
|
|
1621
|
+
},
|
|
1622
|
+
"additionalProperties": false
|
|
1579
1623
|
}
|
|
1624
|
+
},
|
|
1625
|
+
"confirm": {
|
|
1626
|
+
"type": "boolean",
|
|
1627
|
+
"description": "Without true the call is a DRY-RUN: no run is created and nothing is sent."
|
|
1628
|
+
},
|
|
1629
|
+
"check_messenger_presence": {
|
|
1630
|
+
"type": "boolean",
|
|
1631
|
+
"description": "Whether to skip contacts without Telegram/Max/VK messenger presence."
|
|
1632
|
+
},
|
|
1633
|
+
"dedup_window_days": {
|
|
1634
|
+
"type": "integer",
|
|
1635
|
+
"minimum": 0,
|
|
1636
|
+
"maximum": 365,
|
|
1637
|
+
"description": "Deduplication window in days; 0 disables deduplication."
|
|
1638
|
+
},
|
|
1639
|
+
"dedup_scope": {
|
|
1640
|
+
"type": "string",
|
|
1641
|
+
"enum": [
|
|
1642
|
+
"any",
|
|
1643
|
+
"same_funnel"
|
|
1644
|
+
],
|
|
1645
|
+
"description": "Deduplicate against any wave or only the same canonical funnel."
|
|
1646
|
+
},
|
|
1647
|
+
"preflight": {
|
|
1648
|
+
"type": "object",
|
|
1649
|
+
"description": "Per-contact pre-send gate.",
|
|
1650
|
+
"properties": {
|
|
1651
|
+
"enabled": {
|
|
1652
|
+
"type": "boolean",
|
|
1653
|
+
"description": "false disables the row-level preflight gate."
|
|
1654
|
+
},
|
|
1655
|
+
"product_title": {
|
|
1656
|
+
"type": "string",
|
|
1657
|
+
"maxLength": 500,
|
|
1658
|
+
"description": "Human product title used to build the match key."
|
|
1659
|
+
},
|
|
1660
|
+
"product_match_key": {
|
|
1661
|
+
"type": "string",
|
|
1662
|
+
"maxLength": 500,
|
|
1663
|
+
"description": "Pre-normalized product match key."
|
|
1664
|
+
},
|
|
1665
|
+
"offer_id": {
|
|
1666
|
+
"type": "integer",
|
|
1667
|
+
"minimum": 1,
|
|
1668
|
+
"description": "Optional GetCourse offer id."
|
|
1669
|
+
},
|
|
1670
|
+
"other_product_active_deal_mode": {
|
|
1671
|
+
"type": "string",
|
|
1672
|
+
"enum": [
|
|
1673
|
+
"warn",
|
|
1674
|
+
"block",
|
|
1675
|
+
"ignore"
|
|
1676
|
+
],
|
|
1677
|
+
"description": "How to handle an active deal for another product."
|
|
1678
|
+
}
|
|
1679
|
+
},
|
|
1680
|
+
"additionalProperties": false
|
|
1681
|
+
},
|
|
1682
|
+
"chunk_size": {
|
|
1683
|
+
"type": "integer",
|
|
1684
|
+
"minimum": 1,
|
|
1685
|
+
"maximum": 500,
|
|
1686
|
+
"default": 100,
|
|
1687
|
+
"description": "Contacts per sequential chunk."
|
|
1688
|
+
},
|
|
1689
|
+
"explicit_confirmation": {
|
|
1690
|
+
"type": "boolean",
|
|
1691
|
+
"enum": [
|
|
1692
|
+
true
|
|
1693
|
+
],
|
|
1694
|
+
"description": "Required together with confirm=true for a real run. MCP-only safety gate; not sent to the backend."
|
|
1695
|
+
},
|
|
1696
|
+
"confirmation_reason": {
|
|
1697
|
+
"type": "string",
|
|
1698
|
+
"description": "Optional human-readable reason accompanying explicit confirmation; not sent to the backend."
|
|
1580
1699
|
}
|
|
1581
|
-
}
|
|
1700
|
+
},
|
|
1701
|
+
"additionalProperties": false
|
|
1582
1702
|
}
|
|
1583
1703
|
},
|
|
1584
1704
|
{
|
|
1585
|
-
"name": "
|
|
1586
|
-
"description": "
|
|
1705
|
+
"name": "besales_getcourse_wave_run_status",
|
|
1706
|
+
"description": "Get the aggregate status of one durable GetCourse wave run. The run owns chunking, sequential processing, import-lock waiting and restart recovery. This endpoint returns aggregates only; use besales_getcourse_wave_run_contacts for cursor-paginated per-contact outcomes. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
1587
1707
|
"inputSchema": {
|
|
1588
1708
|
"type": "object",
|
|
1589
1709
|
"required": [
|
|
1590
|
-
"
|
|
1591
|
-
"source_agent_id",
|
|
1592
|
-
"name"
|
|
1710
|
+
"run_id"
|
|
1593
1711
|
],
|
|
1594
1712
|
"properties": {
|
|
1595
|
-
"
|
|
1713
|
+
"workspace_id": {
|
|
1596
1714
|
"type": "string",
|
|
1597
1715
|
"format": "uuid",
|
|
1598
|
-
"description": "
|
|
1716
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1599
1717
|
},
|
|
1600
|
-
"
|
|
1718
|
+
"run_id": {
|
|
1601
1719
|
"type": "string",
|
|
1602
1720
|
"format": "uuid",
|
|
1603
|
-
"description": "
|
|
1604
|
-
},
|
|
1605
|
-
"name": {
|
|
1606
|
-
"type": "string",
|
|
1607
|
-
"description": "Системное имя нового агента; при коллизии backend добавит суффикс _N."
|
|
1608
|
-
},
|
|
1609
|
-
"display_name": {
|
|
1610
|
-
"type": "string",
|
|
1611
|
-
"description": "Отображаемое имя нового агента; если не задано — зеркалит name."
|
|
1721
|
+
"description": "Durable run uuid returned by besales_getcourse_wave_run_start or an HTTP 409 response."
|
|
1612
1722
|
}
|
|
1613
|
-
}
|
|
1723
|
+
},
|
|
1724
|
+
"additionalProperties": false
|
|
1614
1725
|
}
|
|
1615
1726
|
},
|
|
1616
1727
|
{
|
|
1617
|
-
"name": "
|
|
1618
|
-
"description": "
|
|
1728
|
+
"name": "besales_getcourse_wave_run_contacts",
|
|
1729
|
+
"description": "List cursor-paginated per-contact outcomes of a durable GetCourse wave run, optionally filtered by PENDING|CLAIMED|SENT|SKIPPED|FAILED|UNKNOWN. SKIPPED covers deduplication, missing messenger and preflight blocks. UNKNOWN means the outcome is unknown after an interrupted chunk and sending may have happened. UNKNOWN and FAILED are never retried automatically; repeat only as a deliberate operator decision in a separate wave. Scope: mcp:platform-setup.",
|
|
1619
1730
|
"inputSchema": {
|
|
1620
1731
|
"type": "object",
|
|
1621
1732
|
"required": [
|
|
1622
|
-
"
|
|
1623
|
-
"agent_id"
|
|
1733
|
+
"run_id"
|
|
1624
1734
|
],
|
|
1625
1735
|
"properties": {
|
|
1626
|
-
"
|
|
1736
|
+
"workspace_id": {
|
|
1627
1737
|
"type": "string",
|
|
1628
|
-
"format": "uuid"
|
|
1738
|
+
"format": "uuid",
|
|
1739
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1629
1740
|
},
|
|
1630
|
-
"
|
|
1741
|
+
"run_id": {
|
|
1631
1742
|
"type": "string",
|
|
1632
|
-
"format": "uuid"
|
|
1633
|
-
|
|
1634
|
-
"name": {
|
|
1635
|
-
"type": "string"
|
|
1636
|
-
},
|
|
1637
|
-
"description": {
|
|
1638
|
-
"type": [
|
|
1639
|
-
"string",
|
|
1640
|
-
"null"
|
|
1641
|
-
]
|
|
1743
|
+
"format": "uuid",
|
|
1744
|
+
"description": "Durable GetCourse wave run uuid."
|
|
1642
1745
|
},
|
|
1643
|
-
"
|
|
1746
|
+
"status": {
|
|
1644
1747
|
"type": "string",
|
|
1645
1748
|
"enum": [
|
|
1646
|
-
"
|
|
1647
|
-
"
|
|
1648
|
-
"
|
|
1649
|
-
|
|
1749
|
+
"PENDING",
|
|
1750
|
+
"CLAIMED",
|
|
1751
|
+
"SENT",
|
|
1752
|
+
"SKIPPED",
|
|
1753
|
+
"FAILED",
|
|
1754
|
+
"UNKNOWN"
|
|
1755
|
+
],
|
|
1756
|
+
"description": "Optional per-contact status filter."
|
|
1650
1757
|
},
|
|
1651
|
-
"
|
|
1758
|
+
"cursor": {
|
|
1652
1759
|
"type": "string",
|
|
1653
|
-
"
|
|
1760
|
+
"format": "uuid",
|
|
1761
|
+
"description": "Opaque cursor returned by the previous page."
|
|
1762
|
+
},
|
|
1763
|
+
"limit": {
|
|
1764
|
+
"type": "integer",
|
|
1765
|
+
"minimum": 1,
|
|
1766
|
+
"maximum": 500,
|
|
1767
|
+
"default": 100,
|
|
1768
|
+
"description": "Contacts per page."
|
|
1769
|
+
}
|
|
1770
|
+
},
|
|
1771
|
+
"additionalProperties": false
|
|
1772
|
+
}
|
|
1773
|
+
},
|
|
1774
|
+
{
|
|
1775
|
+
"name": "besales_getcourse_wave_run_cancel",
|
|
1776
|
+
"description": "Cancel a durable GetCourse wave run so no new chunks are claimed. A currently claimed chunk may still finish; poll besales_getcourse_wave_run_status and inspect rows with besales_getcourse_wave_run_contacts. UNKNOWN and FAILED rows are never retried automatically. Scope: mcp:platform-setup.",
|
|
1777
|
+
"inputSchema": {
|
|
1778
|
+
"type": "object",
|
|
1779
|
+
"required": [
|
|
1780
|
+
"run_id"
|
|
1781
|
+
],
|
|
1782
|
+
"properties": {
|
|
1783
|
+
"workspace_id": {
|
|
1784
|
+
"type": "string",
|
|
1785
|
+
"format": "uuid",
|
|
1786
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1787
|
+
},
|
|
1788
|
+
"run_id": {
|
|
1789
|
+
"type": "string",
|
|
1790
|
+
"format": "uuid",
|
|
1791
|
+
"description": "Durable GetCourse wave run uuid."
|
|
1792
|
+
}
|
|
1793
|
+
},
|
|
1794
|
+
"additionalProperties": false
|
|
1795
|
+
}
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"name": "besales_wazzup_templates_list",
|
|
1799
|
+
"description": "List approved WABA templates of a Wazzup platform with usability flags. Returns templateGuid, title, Meta moderation status, bodyText, variableCount (values required) and usable + unsupportedReasons. Only usable=true templates can be sent in a wave; the rest are unapproved or carry a media header / variable URL button, where values would land in the wrong slots. Scope: mcp:platform-setup.",
|
|
1800
|
+
"inputSchema": {
|
|
1801
|
+
"type": "object",
|
|
1802
|
+
"required": [
|
|
1803
|
+
"platform_id"
|
|
1804
|
+
],
|
|
1805
|
+
"properties": {
|
|
1806
|
+
"workspace_id": {
|
|
1807
|
+
"type": "string",
|
|
1808
|
+
"format": "uuid",
|
|
1809
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1810
|
+
},
|
|
1811
|
+
"platform_id": {
|
|
1812
|
+
"type": "string",
|
|
1813
|
+
"format": "uuid",
|
|
1814
|
+
"description": "Wazzup PLATFORM uuid (WhatsApp Business API channel)."
|
|
1815
|
+
}
|
|
1816
|
+
},
|
|
1817
|
+
"additionalProperties": false
|
|
1818
|
+
}
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"name": "besales_wazzup_wave_import",
|
|
1822
|
+
"description": "Launch a WhatsApp wave through Wazzup: an approved WABA template is sent to a cohort of phone numbers. Replies are handled by the platform AI agent and the wave appears in Broadcast analytics under the WhatsApp channel. WITHOUT confirm=true it is a DRY-RUN: the full preflight runs (platform, live WABA channel, template, value count) and previewText is returned, but nothing is sent. EVERY WhatsApp marketing message is PAID and Meta caps unique recipients per day (250 at start, higher after business verification) — never launch a large cohort without explicit user consent. Re-sending the SAME template to the same contact within 24h is skipped automatically. A real launch requires BOTH confirm=true and explicit_confirmation=true — set the latter only after the user explicitly agrees to send paid messages. Returns jobId — poll besales_wazzup_wave_status until COMPLETED. Scope: mcp:platform-setup.",
|
|
1823
|
+
"inputSchema": {
|
|
1824
|
+
"type": "object",
|
|
1825
|
+
"required": [
|
|
1826
|
+
"platform_id",
|
|
1827
|
+
"template_guid",
|
|
1828
|
+
"contacts"
|
|
1829
|
+
],
|
|
1830
|
+
"properties": {
|
|
1831
|
+
"workspace_id": {
|
|
1832
|
+
"type": "string",
|
|
1833
|
+
"format": "uuid",
|
|
1834
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1835
|
+
},
|
|
1836
|
+
"platform_id": {
|
|
1837
|
+
"type": "string",
|
|
1838
|
+
"format": "uuid",
|
|
1839
|
+
"description": "Wazzup PLATFORM uuid (WhatsApp Business API channel)."
|
|
1840
|
+
},
|
|
1841
|
+
"template_guid": {
|
|
1842
|
+
"type": "string",
|
|
1843
|
+
"maxLength": 100,
|
|
1844
|
+
"description": "Approved WABA template GUID from besales_wazzup_templates_list (usable=true)."
|
|
1845
|
+
},
|
|
1846
|
+
"template_values": {
|
|
1847
|
+
"type": "array",
|
|
1848
|
+
"items": {
|
|
1849
|
+
"type": "string"
|
|
1850
|
+
},
|
|
1851
|
+
"maxItems": 20,
|
|
1852
|
+
"description": "Template variable values in {{1}}, {{2}}… order. Length must equal the template variableCount."
|
|
1853
|
+
},
|
|
1854
|
+
"contacts": {
|
|
1855
|
+
"type": "array",
|
|
1856
|
+
"minItems": 1,
|
|
1857
|
+
"maxItems": 500,
|
|
1858
|
+
"description": "Wave cohort. Duplicate numbers are collapsed.",
|
|
1859
|
+
"items": {
|
|
1860
|
+
"type": "object",
|
|
1861
|
+
"required": [
|
|
1862
|
+
"phone"
|
|
1863
|
+
],
|
|
1864
|
+
"properties": {
|
|
1865
|
+
"phone": {
|
|
1866
|
+
"type": "string",
|
|
1867
|
+
"maxLength": 32,
|
|
1868
|
+
"description": "Any readable format; normalised to E.164."
|
|
1869
|
+
},
|
|
1870
|
+
"name": {
|
|
1871
|
+
"type": "string",
|
|
1872
|
+
"maxLength": 200,
|
|
1873
|
+
"description": "Optional recipient name."
|
|
1874
|
+
}
|
|
1875
|
+
},
|
|
1876
|
+
"additionalProperties": false
|
|
1877
|
+
}
|
|
1878
|
+
},
|
|
1879
|
+
"funnel": {
|
|
1880
|
+
"type": "string",
|
|
1881
|
+
"maxLength": 200,
|
|
1882
|
+
"description": "Wave business funnel — analytics dimension."
|
|
1883
|
+
},
|
|
1884
|
+
"segment": {
|
|
1885
|
+
"type": "string",
|
|
1886
|
+
"maxLength": 200,
|
|
1887
|
+
"description": "Wave segment — analytics dimension."
|
|
1888
|
+
},
|
|
1889
|
+
"product_code": {
|
|
1890
|
+
"type": "string",
|
|
1891
|
+
"maxLength": 100,
|
|
1892
|
+
"pattern": "^[^\\s/]+$",
|
|
1893
|
+
"description": "Product code for the funnel→product dictionary. Requires a non-empty funnel."
|
|
1894
|
+
},
|
|
1895
|
+
"product_name": {
|
|
1896
|
+
"type": "string",
|
|
1897
|
+
"maxLength": 200,
|
|
1898
|
+
"description": "Display name of the product (needs product_code)."
|
|
1899
|
+
},
|
|
1900
|
+
"cohort_label": {
|
|
1901
|
+
"type": "string",
|
|
1902
|
+
"maxLength": 200,
|
|
1903
|
+
"description": "Human-readable name of this launch."
|
|
1904
|
+
},
|
|
1905
|
+
"confirm": {
|
|
1906
|
+
"type": "boolean",
|
|
1907
|
+
"description": "Without true the call is a DRY-RUN and sends nothing."
|
|
1908
|
+
},
|
|
1909
|
+
"explicit_confirmation": {
|
|
1910
|
+
"type": "boolean",
|
|
1911
|
+
"enum": [
|
|
1912
|
+
true
|
|
1913
|
+
],
|
|
1914
|
+
"description": "Required together with confirm=true: the wave is irreversible and every WABA template is billed by Meta. Dry-run does not need it."
|
|
1915
|
+
},
|
|
1916
|
+
"confirmation_reason": {
|
|
1917
|
+
"type": "string",
|
|
1918
|
+
"description": "Optional human-readable reason recorded with the confirmation."
|
|
1919
|
+
}
|
|
1920
|
+
},
|
|
1921
|
+
"additionalProperties": false
|
|
1922
|
+
}
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
"name": "besales_wazzup_wave_status",
|
|
1926
|
+
"description": "Status of a WhatsApp wave: status (PROCESSING|COMPLETED), processedRows, sent/failed/skipped and per-row errors. skipped counts deliberate skips (contact stopped the bot, is waiting for an operator, or already received this template recently) — those are not failures; sent+failed+skipped equals the processed rows. Scope: mcp:platform-setup.",
|
|
1927
|
+
"inputSchema": {
|
|
1928
|
+
"type": "object",
|
|
1929
|
+
"required": [
|
|
1930
|
+
"job_id"
|
|
1931
|
+
],
|
|
1932
|
+
"properties": {
|
|
1933
|
+
"workspace_id": {
|
|
1934
|
+
"type": "string",
|
|
1935
|
+
"format": "uuid",
|
|
1936
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1937
|
+
},
|
|
1938
|
+
"job_id": {
|
|
1939
|
+
"type": "string",
|
|
1940
|
+
"format": "uuid",
|
|
1941
|
+
"description": "Wave job uuid returned by besales_wazzup_wave_import."
|
|
1942
|
+
}
|
|
1943
|
+
},
|
|
1944
|
+
"additionalProperties": false
|
|
1945
|
+
}
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
"name": "besales_agent_create",
|
|
1949
|
+
"description": "Create a REGULAR AgentChat inside an existing platform. Does not set production prompt content; use PromptHub tools for prompt generation/finalize.",
|
|
1950
|
+
"inputSchema": {
|
|
1951
|
+
"type": "object",
|
|
1952
|
+
"required": [
|
|
1953
|
+
"platform_id",
|
|
1954
|
+
"name",
|
|
1955
|
+
"model_lane"
|
|
1956
|
+
],
|
|
1957
|
+
"properties": {
|
|
1958
|
+
"platform_id": {
|
|
1959
|
+
"type": "string",
|
|
1960
|
+
"format": "uuid"
|
|
1961
|
+
},
|
|
1962
|
+
"name": {
|
|
1963
|
+
"type": "string"
|
|
1964
|
+
},
|
|
1965
|
+
"description": {
|
|
1966
|
+
"type": [
|
|
1967
|
+
"string",
|
|
1968
|
+
"null"
|
|
1969
|
+
]
|
|
1970
|
+
},
|
|
1971
|
+
"model_lane": {
|
|
1972
|
+
"type": "string",
|
|
1973
|
+
"enum": [
|
|
1974
|
+
"CHEAP",
|
|
1975
|
+
"STANDARD",
|
|
1976
|
+
"DEEP"
|
|
1977
|
+
]
|
|
1978
|
+
},
|
|
1979
|
+
"model": {
|
|
1980
|
+
"type": "string",
|
|
1981
|
+
"description": "Явный id модели (override). Если задан — побеждает model_lane. Список — besales_model_catalog_list."
|
|
1982
|
+
},
|
|
1983
|
+
"default_icp_profile_id": {
|
|
1984
|
+
"type": "string",
|
|
1985
|
+
"format": "uuid"
|
|
1986
|
+
},
|
|
1987
|
+
"agent_variable_overrides": {
|
|
1988
|
+
"type": "array",
|
|
1989
|
+
"description": "Phase 1 — перезаписи переменных на уровне агента (бьют по CustomVariable платформы; тип значения валидируется против CustomVariable.type).",
|
|
1990
|
+
"items": {
|
|
1991
|
+
"type": "object",
|
|
1992
|
+
"required": [
|
|
1993
|
+
"custom_variable_id",
|
|
1994
|
+
"override_value"
|
|
1995
|
+
],
|
|
1996
|
+
"properties": {
|
|
1997
|
+
"custom_variable_id": {
|
|
1998
|
+
"type": "string",
|
|
1999
|
+
"format": "uuid"
|
|
2000
|
+
},
|
|
2001
|
+
"override_value": {
|
|
2002
|
+
"type": [
|
|
2003
|
+
"string",
|
|
2004
|
+
"number",
|
|
2005
|
+
"boolean"
|
|
2006
|
+
]
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
}
|
|
2010
|
+
},
|
|
2011
|
+
"agent_workspace_variable_overrides": {
|
|
2012
|
+
"type": "array",
|
|
2013
|
+
"description": "Перезаписи переменных воркспейса на уровне агента (бьют по WorkspaceVariable; тип значения валидируется против WorkspaceVariable.type).",
|
|
2014
|
+
"items": {
|
|
2015
|
+
"type": "object",
|
|
2016
|
+
"required": [
|
|
2017
|
+
"workspace_variable_id",
|
|
2018
|
+
"override_value"
|
|
2019
|
+
],
|
|
2020
|
+
"properties": {
|
|
2021
|
+
"workspace_variable_id": {
|
|
2022
|
+
"type": "string",
|
|
2023
|
+
"format": "uuid"
|
|
2024
|
+
},
|
|
2025
|
+
"override_value": {
|
|
2026
|
+
"type": [
|
|
2027
|
+
"string",
|
|
2028
|
+
"number",
|
|
2029
|
+
"boolean"
|
|
2030
|
+
]
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
2033
|
+
}
|
|
2034
|
+
}
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2037
|
+
},
|
|
2038
|
+
{
|
|
2039
|
+
"name": "besales_agent_clone",
|
|
2040
|
+
"description": "Deep-clone an existing AgentChat into a NEW agent on the SAME platform (mirrors the besales GUI clone button). Copies baseSystemPrompt, knowledge namespaces, model/model_lane/runtime config, tools + builtin tools, agent + workspace variable overrides, ICP links, and ALL triggers + actions (with FK remap to new ids). Does NOT copy routing rules (per-router) or per-platform behavior — the clone is inert until wired into the router. Prompt is identical to source; PromptHub auto-bootstraps a fresh version on the first prompt op. Cross-platform clone is not supported — use besales_platform_clone_* for that.",
|
|
2041
|
+
"inputSchema": {
|
|
2042
|
+
"type": "object",
|
|
2043
|
+
"required": [
|
|
2044
|
+
"platform_id",
|
|
2045
|
+
"source_agent_id",
|
|
2046
|
+
"name"
|
|
2047
|
+
],
|
|
2048
|
+
"properties": {
|
|
2049
|
+
"platform_id": {
|
|
2050
|
+
"type": "string",
|
|
2051
|
+
"format": "uuid",
|
|
2052
|
+
"description": "Платформа-источник; клон приземляется на неё же (cross-platform не поддерживается)."
|
|
2053
|
+
},
|
|
2054
|
+
"source_agent_id": {
|
|
2055
|
+
"type": "string",
|
|
2056
|
+
"format": "uuid",
|
|
2057
|
+
"description": "Исходный AgentChat для глубокого копирования (обязан принадлежать platform_id)."
|
|
2058
|
+
},
|
|
2059
|
+
"name": {
|
|
2060
|
+
"type": "string",
|
|
2061
|
+
"description": "Системное имя нового агента; при коллизии backend добавит суффикс _N."
|
|
2062
|
+
},
|
|
2063
|
+
"display_name": {
|
|
2064
|
+
"type": "string",
|
|
2065
|
+
"description": "Отображаемое имя нового агента; если не задано — зеркалит name."
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2069
|
+
},
|
|
2070
|
+
{
|
|
2071
|
+
"name": "besales_agent_update",
|
|
2072
|
+
"description": "Patch safe AgentChat metadata + typed runtime/output config + knowledge spaces + agent scope for an existing platform agent. Direct baseSystemPrompt edits are rejected; use PromptHub flow for prompt changes.",
|
|
2073
|
+
"inputSchema": {
|
|
2074
|
+
"type": "object",
|
|
2075
|
+
"required": [
|
|
2076
|
+
"platform_id",
|
|
2077
|
+
"agent_id"
|
|
2078
|
+
],
|
|
2079
|
+
"properties": {
|
|
2080
|
+
"platform_id": {
|
|
2081
|
+
"type": "string",
|
|
2082
|
+
"format": "uuid"
|
|
2083
|
+
},
|
|
2084
|
+
"agent_id": {
|
|
2085
|
+
"type": "string",
|
|
2086
|
+
"format": "uuid"
|
|
2087
|
+
},
|
|
2088
|
+
"name": {
|
|
2089
|
+
"type": "string"
|
|
2090
|
+
},
|
|
2091
|
+
"description": {
|
|
2092
|
+
"type": [
|
|
2093
|
+
"string",
|
|
2094
|
+
"null"
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"model_lane": {
|
|
2098
|
+
"type": "string",
|
|
2099
|
+
"enum": [
|
|
2100
|
+
"CHEAP",
|
|
2101
|
+
"STANDARD",
|
|
2102
|
+
"DEEP"
|
|
2103
|
+
]
|
|
2104
|
+
},
|
|
2105
|
+
"model": {
|
|
2106
|
+
"type": "string",
|
|
2107
|
+
"description": "Явный id модели (override). Если задан — побеждает model_lane. Список — besales_model_catalog_list."
|
|
1654
2108
|
},
|
|
1655
2109
|
"default_icp_profile_id": {
|
|
1656
2110
|
"type": [
|
|
@@ -2433,7 +2887,11 @@
|
|
|
2433
2887
|
"contact_name_personalization_mode": {
|
|
2434
2888
|
"type": "string",
|
|
2435
2889
|
"description": "Режим безопасного обращения по подтверждённому имени. Реальное имя модели не раскрывается.",
|
|
2436
|
-
"enum": [
|
|
2890
|
+
"enum": [
|
|
2891
|
+
"OFF",
|
|
2892
|
+
"SHADOW",
|
|
2893
|
+
"ENABLED"
|
|
2894
|
+
]
|
|
2437
2895
|
},
|
|
2438
2896
|
"anonymization_disabled_types": {
|
|
2439
2897
|
"type": "array",
|
|
@@ -2546,7 +3004,169 @@
|
|
|
2546
3004
|
]
|
|
2547
3005
|
},
|
|
2548
3006
|
"config": {
|
|
2549
|
-
"type": "object"
|
|
3007
|
+
"type": "object",
|
|
3008
|
+
"description": "Конфигурация цепочки. Ключи — camelCase (передаётся в бэкенд без преобразования). Поля ниже описывают INACTIVE_USER_REACTIVATION; для MEETING_REMINDER/LOST_CLIENTS структура своя и произвольные поля разрешены.",
|
|
3009
|
+
"properties": {
|
|
3010
|
+
"enabled": {
|
|
3011
|
+
"type": "boolean"
|
|
3012
|
+
},
|
|
3013
|
+
"filterMode": {
|
|
3014
|
+
"type": "string",
|
|
3015
|
+
"enum": [
|
|
3016
|
+
"status",
|
|
3017
|
+
"eventType",
|
|
3018
|
+
"variable"
|
|
3019
|
+
],
|
|
3020
|
+
"description": "Режим отбора контактов. Неизвестное значение НЕ включает ни один фильтр — цепочка ушла бы всем контактам канала, поэтому бэкенд его отвергает."
|
|
3021
|
+
},
|
|
3022
|
+
"sequenceConditions": {
|
|
3023
|
+
"type": "array",
|
|
3024
|
+
"items": {
|
|
3025
|
+
"type": "object",
|
|
3026
|
+
"required": [
|
|
3027
|
+
"variable",
|
|
3028
|
+
"op",
|
|
3029
|
+
"value"
|
|
3030
|
+
],
|
|
3031
|
+
"properties": {
|
|
3032
|
+
"variable": {
|
|
3033
|
+
"type": "string",
|
|
3034
|
+
"description": "Имя per-contact переменной канала."
|
|
3035
|
+
},
|
|
3036
|
+
"op": {
|
|
3037
|
+
"type": "string",
|
|
3038
|
+
"enum": [
|
|
3039
|
+
"eq",
|
|
3040
|
+
"neq",
|
|
3041
|
+
"in"
|
|
3042
|
+
]
|
|
3043
|
+
},
|
|
3044
|
+
"value": {
|
|
3045
|
+
"description": "Строка для eq/neq; непустой массив непустых строк для in.",
|
|
3046
|
+
"oneOf": [
|
|
3047
|
+
{
|
|
3048
|
+
"type": "string"
|
|
3049
|
+
},
|
|
3050
|
+
{
|
|
3051
|
+
"type": "array",
|
|
3052
|
+
"items": {
|
|
3053
|
+
"type": "string"
|
|
3054
|
+
}
|
|
3055
|
+
}
|
|
3056
|
+
]
|
|
3057
|
+
}
|
|
3058
|
+
}
|
|
3059
|
+
},
|
|
3060
|
+
"description": "Обязателен и непуст при filterMode=variable."
|
|
3061
|
+
},
|
|
3062
|
+
"steps": {
|
|
3063
|
+
"type": "array",
|
|
3064
|
+
"minItems": 1,
|
|
3065
|
+
"description": "Шаги цепочки. Пустой массив отвергается: цепочка без шагов ничего не отправит.",
|
|
3066
|
+
"items": {
|
|
3067
|
+
"type": "object",
|
|
3068
|
+
"properties": {
|
|
3069
|
+
"stepType": {
|
|
3070
|
+
"type": "string",
|
|
3071
|
+
"enum": [
|
|
3072
|
+
"message",
|
|
3073
|
+
"webhook"
|
|
3074
|
+
]
|
|
3075
|
+
},
|
|
3076
|
+
"scheduleMode": {
|
|
3077
|
+
"type": "string",
|
|
3078
|
+
"enum": [
|
|
3079
|
+
"offset",
|
|
3080
|
+
"clock"
|
|
3081
|
+
],
|
|
3082
|
+
"description": "clock — время суток + сдвиг дней вместо задержки от последней активности."
|
|
3083
|
+
},
|
|
3084
|
+
"anchorMode": {
|
|
3085
|
+
"type": "string",
|
|
3086
|
+
"enum": [
|
|
3087
|
+
"last_inbound",
|
|
3088
|
+
"variable"
|
|
3089
|
+
],
|
|
3090
|
+
"description": "variable — расписание считается от даты из переменной контакта (календарная цепочка)."
|
|
3091
|
+
},
|
|
3092
|
+
"anchorVariable": {
|
|
3093
|
+
"type": "string",
|
|
3094
|
+
"description": "Имя переменной с якорной датой. Обязательно при anchorMode=variable; переменная должна существовать у канала и НЕ быть константой."
|
|
3095
|
+
},
|
|
3096
|
+
"atTime": {
|
|
3097
|
+
"type": "string",
|
|
3098
|
+
"description": "Время суток HH:MM для scheduleMode=clock."
|
|
3099
|
+
},
|
|
3100
|
+
"dayOffset": {
|
|
3101
|
+
"type": "integer",
|
|
3102
|
+
"minimum": 0,
|
|
3103
|
+
"maximum": 30,
|
|
3104
|
+
"description": "Сдвиг в днях от якоря."
|
|
3105
|
+
},
|
|
3106
|
+
"validityMinutes": {
|
|
3107
|
+
"type": "integer",
|
|
3108
|
+
"minimum": 1,
|
|
3109
|
+
"description": "Окно валидности слота. Меньше 10 минут крон почти всегда промахнётся."
|
|
3110
|
+
},
|
|
3111
|
+
"slotGroup": {
|
|
3112
|
+
"type": "string",
|
|
3113
|
+
"description": "Метка взаимоисключающих вариантов одного момента (first-match-wins). Варианты ОБЯЗАНЫ идти в steps подряд."
|
|
3114
|
+
},
|
|
3115
|
+
"conditions": {
|
|
3116
|
+
"type": "array",
|
|
3117
|
+
"maxItems": 3,
|
|
3118
|
+
"items": {
|
|
3119
|
+
"type": "object",
|
|
3120
|
+
"required": [
|
|
3121
|
+
"variable",
|
|
3122
|
+
"op",
|
|
3123
|
+
"value"
|
|
3124
|
+
],
|
|
3125
|
+
"properties": {
|
|
3126
|
+
"variable": {
|
|
3127
|
+
"type": "string",
|
|
3128
|
+
"description": "Имя per-contact переменной канала."
|
|
3129
|
+
},
|
|
3130
|
+
"op": {
|
|
3131
|
+
"type": "string",
|
|
3132
|
+
"enum": [
|
|
3133
|
+
"eq",
|
|
3134
|
+
"neq",
|
|
3135
|
+
"in"
|
|
3136
|
+
]
|
|
3137
|
+
},
|
|
3138
|
+
"value": {
|
|
3139
|
+
"description": "Строка для eq/neq; непустой массив непустых строк для in.",
|
|
3140
|
+
"oneOf": [
|
|
3141
|
+
{
|
|
3142
|
+
"type": "string"
|
|
3143
|
+
},
|
|
3144
|
+
{
|
|
3145
|
+
"type": "array",
|
|
3146
|
+
"items": {
|
|
3147
|
+
"type": "string"
|
|
3148
|
+
}
|
|
3149
|
+
}
|
|
3150
|
+
]
|
|
3151
|
+
}
|
|
3152
|
+
}
|
|
3153
|
+
},
|
|
3154
|
+
"description": "Условия на переменные контакта; не прошли — шаг пропускается."
|
|
3155
|
+
},
|
|
3156
|
+
"delayHours": {
|
|
3157
|
+
"type": "number"
|
|
3158
|
+
},
|
|
3159
|
+
"delayMinutes": {
|
|
3160
|
+
"type": "number"
|
|
3161
|
+
},
|
|
3162
|
+
"messageConfig": {
|
|
3163
|
+
"type": "object",
|
|
3164
|
+
"description": "Текст/шаблон касания. Плейсхолдеры {name} календарного шага обязаны резолвиться, иначе шаг пропускается в рантайме."
|
|
3165
|
+
}
|
|
3166
|
+
}
|
|
3167
|
+
}
|
|
3168
|
+
}
|
|
3169
|
+
}
|
|
2550
3170
|
},
|
|
2551
3171
|
"explicit_confirmation": {
|
|
2552
3172
|
"type": "boolean"
|
|
@@ -2911,6 +3531,9 @@
|
|
|
2911
3531
|
"string",
|
|
2912
3532
|
"null"
|
|
2913
3533
|
]
|
|
3534
|
+
},
|
|
3535
|
+
"ignore_crm_stage_gate": {
|
|
3536
|
+
"type": "boolean"
|
|
2914
3537
|
}
|
|
2915
3538
|
}
|
|
2916
3539
|
},
|
|
@@ -3031,6 +3654,31 @@
|
|
|
3031
3654
|
"type": "boolean",
|
|
3032
3655
|
"description": "Nightly wave delivery check (04:00 MSK): cron reads per-transport deal custom fields (=1 → sent); broadcast analytics for the platform counts only confirmed deliveries."
|
|
3033
3656
|
},
|
|
3657
|
+
"manual_mute_enabled": {
|
|
3658
|
+
"type": "boolean",
|
|
3659
|
+
"description": "Manual bot stop via GetCourse contact field: operator edits a contact custom field → AI stops replying (resumes when set back to 'on'/cleared). GetCourse only. Dangerous — requires explicit_confirmation."
|
|
3660
|
+
},
|
|
3661
|
+
"manual_mute_field_id": {
|
|
3662
|
+
"type": [
|
|
3663
|
+
"string",
|
|
3664
|
+
"null"
|
|
3665
|
+
],
|
|
3666
|
+
"description": "Contact custom field ID (numeric string) OR name for manual mute."
|
|
3667
|
+
},
|
|
3668
|
+
"manual_mute_value": {
|
|
3669
|
+
"type": [
|
|
3670
|
+
"string",
|
|
3671
|
+
"null"
|
|
3672
|
+
],
|
|
3673
|
+
"description": "Field value(s) meaning 'bot OFF' (comma-separated, match-any, case-insensitive)."
|
|
3674
|
+
},
|
|
3675
|
+
"manual_mute_active_value": {
|
|
3676
|
+
"type": [
|
|
3677
|
+
"string",
|
|
3678
|
+
"null"
|
|
3679
|
+
],
|
|
3680
|
+
"description": "Optional value(s) meaning 'bot ON' (empty = anything other than the OFF value = bot replies)."
|
|
3681
|
+
},
|
|
3034
3682
|
"delivery_field_map": {
|
|
3035
3683
|
"type": "object",
|
|
3036
3684
|
"description": "Transport → EXACT deal custom field NAME (GetCourse read API returns no field ids), e.g. { \"Telegram\": \"Отправлено ТГ\" }. Clear with {}.",
|
|
@@ -3051,6 +3699,31 @@
|
|
|
3051
3699
|
"MAX"
|
|
3052
3700
|
]
|
|
3053
3701
|
}
|
|
3702
|
+
},
|
|
3703
|
+
"create_missing_deal_enabled": {
|
|
3704
|
+
"type": "boolean",
|
|
3705
|
+
"description": "Create an order when the contact has no deal at all, so a status wave can still reach them (fields need a deal to be stamped on). The order is created from create_missing_deal_offer_id; funnel/stage are optional placement hints. Creates REAL orders in the school — dangerous, requires explicit_confirmation."
|
|
3706
|
+
},
|
|
3707
|
+
"create_missing_deal_offer_id": {
|
|
3708
|
+
"type": [
|
|
3709
|
+
"integer",
|
|
3710
|
+
"null"
|
|
3711
|
+
],
|
|
3712
|
+
"description": "GetCourse offer id used to create the order. REQUIRED when create_missing_deal_enabled is true: the legacy /pl/api/deals endpoint can only create an order from an offer. Use a free offer so the order amount is zero."
|
|
3713
|
+
},
|
|
3714
|
+
"create_missing_deal_funnel_id": {
|
|
3715
|
+
"type": [
|
|
3716
|
+
"integer",
|
|
3717
|
+
"null"
|
|
3718
|
+
],
|
|
3719
|
+
"description": "OPTIONAL GetCourse funnel id for placing the created order (defaults to the offer funnel). Must be set together with create_missing_deal_stage_id and belong to the GetCourse CRM of the wave."
|
|
3720
|
+
},
|
|
3721
|
+
"create_missing_deal_stage_id": {
|
|
3722
|
+
"type": [
|
|
3723
|
+
"integer",
|
|
3724
|
+
"null"
|
|
3725
|
+
],
|
|
3726
|
+
"description": "OPTIONAL GetCourse stage id inside the funnel above. Must be set together with create_missing_deal_funnel_id."
|
|
3054
3727
|
}
|
|
3055
3728
|
}
|
|
3056
3729
|
},
|
|
@@ -4516,207 +5189,489 @@
|
|
|
4516
5189
|
"type": "string",
|
|
4517
5190
|
"format": "uuid"
|
|
4518
5191
|
},
|
|
4519
|
-
"knowledge_space_id": {
|
|
5192
|
+
"knowledge_space_id": {
|
|
5193
|
+
"type": "string",
|
|
5194
|
+
"format": "uuid"
|
|
5195
|
+
},
|
|
5196
|
+
"is_active": {
|
|
5197
|
+
"type": "boolean"
|
|
5198
|
+
},
|
|
5199
|
+
"page": {
|
|
5200
|
+
"type": "integer",
|
|
5201
|
+
"minimum": 1
|
|
5202
|
+
},
|
|
5203
|
+
"limit": {
|
|
5204
|
+
"type": "integer",
|
|
5205
|
+
"minimum": 1,
|
|
5206
|
+
"maximum": 100
|
|
5207
|
+
}
|
|
5208
|
+
}
|
|
5209
|
+
}
|
|
5210
|
+
},
|
|
5211
|
+
{
|
|
5212
|
+
"name": "besales_knowledge_table_get",
|
|
5213
|
+
"description": "v1.5 Increment 3: detail knowledge table. Scope: read:knowledge.",
|
|
5214
|
+
"inputSchema": {
|
|
5215
|
+
"type": "object",
|
|
5216
|
+
"required": [
|
|
5217
|
+
"knowledge_space_id",
|
|
5218
|
+
"table_id"
|
|
5219
|
+
],
|
|
5220
|
+
"properties": {
|
|
5221
|
+
"workspace_id": {
|
|
5222
|
+
"type": "string",
|
|
5223
|
+
"format": "uuid"
|
|
5224
|
+
},
|
|
5225
|
+
"knowledge_space_id": {
|
|
5226
|
+
"type": "string",
|
|
5227
|
+
"format": "uuid"
|
|
5228
|
+
},
|
|
5229
|
+
"table_id": {
|
|
5230
|
+
"type": "string",
|
|
5231
|
+
"format": "uuid"
|
|
5232
|
+
}
|
|
5233
|
+
}
|
|
5234
|
+
}
|
|
5235
|
+
},
|
|
5236
|
+
{
|
|
5237
|
+
"name": "besales_knowledge_table_patch",
|
|
5238
|
+
"description": "v1.5 Increment 3: обновить knowledge table (source.url иммутабельный — для смены URL используй delete+create). Scope: write:knowledge.",
|
|
5239
|
+
"inputSchema": {
|
|
5240
|
+
"type": "object",
|
|
5241
|
+
"required": [
|
|
5242
|
+
"knowledge_space_id",
|
|
5243
|
+
"table_id"
|
|
5244
|
+
],
|
|
5245
|
+
"properties": {
|
|
5246
|
+
"workspace_id": {
|
|
5247
|
+
"type": "string",
|
|
5248
|
+
"format": "uuid"
|
|
5249
|
+
},
|
|
5250
|
+
"knowledge_space_id": {
|
|
5251
|
+
"type": "string",
|
|
5252
|
+
"format": "uuid"
|
|
5253
|
+
},
|
|
5254
|
+
"table_id": {
|
|
5255
|
+
"type": "string",
|
|
5256
|
+
"format": "uuid"
|
|
5257
|
+
},
|
|
5258
|
+
"source": {
|
|
5259
|
+
"type": "object",
|
|
5260
|
+
"description": "Если передан — URL должен совпадать с existing; иначе 400."
|
|
5261
|
+
},
|
|
5262
|
+
"display_name": {
|
|
5263
|
+
"type": "string"
|
|
5264
|
+
},
|
|
5265
|
+
"header_row_index": {
|
|
5266
|
+
"type": "integer",
|
|
5267
|
+
"minimum": 1
|
|
5268
|
+
},
|
|
5269
|
+
"cache_ttl_seconds": {
|
|
5270
|
+
"type": "integer",
|
|
5271
|
+
"minimum": 1
|
|
5272
|
+
},
|
|
5273
|
+
"use_vector_index": {
|
|
5274
|
+
"type": "boolean"
|
|
5275
|
+
},
|
|
5276
|
+
"vector_top_k": {
|
|
5277
|
+
"type": "integer",
|
|
5278
|
+
"minimum": 1
|
|
5279
|
+
},
|
|
5280
|
+
"vector_embed_max_chars": {
|
|
5281
|
+
"type": "integer",
|
|
5282
|
+
"minimum": 1
|
|
5283
|
+
},
|
|
5284
|
+
"access": {
|
|
5285
|
+
"type": "string",
|
|
5286
|
+
"enum": [
|
|
5287
|
+
"PUBLIC",
|
|
5288
|
+
"PRIVATE"
|
|
5289
|
+
]
|
|
5290
|
+
},
|
|
5291
|
+
"is_active": {
|
|
5292
|
+
"type": "boolean"
|
|
5293
|
+
}
|
|
5294
|
+
}
|
|
5295
|
+
}
|
|
5296
|
+
},
|
|
5297
|
+
{
|
|
5298
|
+
"name": "besales_knowledge_table_delete",
|
|
5299
|
+
"description": "v1.5 Increment 3: удалить knowledge table + Pinecone vectors. Требует explicit_confirmation=true. Scope: write:knowledge.",
|
|
5300
|
+
"inputSchema": {
|
|
5301
|
+
"type": "object",
|
|
5302
|
+
"required": [
|
|
5303
|
+
"knowledge_space_id",
|
|
5304
|
+
"table_id",
|
|
5305
|
+
"explicit_confirmation"
|
|
5306
|
+
],
|
|
5307
|
+
"properties": {
|
|
5308
|
+
"workspace_id": {
|
|
5309
|
+
"type": "string",
|
|
5310
|
+
"format": "uuid"
|
|
5311
|
+
},
|
|
5312
|
+
"knowledge_space_id": {
|
|
5313
|
+
"type": "string",
|
|
5314
|
+
"format": "uuid"
|
|
5315
|
+
},
|
|
5316
|
+
"table_id": {
|
|
5317
|
+
"type": "string",
|
|
5318
|
+
"format": "uuid"
|
|
5319
|
+
},
|
|
5320
|
+
"explicit_confirmation": {
|
|
5321
|
+
"type": "boolean"
|
|
5322
|
+
}
|
|
5323
|
+
}
|
|
5324
|
+
}
|
|
5325
|
+
},
|
|
5326
|
+
{
|
|
5327
|
+
"name": "besales_knowledge_table_reindex",
|
|
5328
|
+
"description": "v1.5 Increment 3: полная переиндексация таблицы (delete vectors + re-fetch CSV + re-embed + Pinecone upsert). SYNC operation — может занять время для больших таблиц. Scope: write:knowledge.",
|
|
5329
|
+
"inputSchema": {
|
|
5330
|
+
"type": "object",
|
|
5331
|
+
"required": [
|
|
5332
|
+
"knowledge_space_id",
|
|
5333
|
+
"table_id",
|
|
5334
|
+
"explicit_confirmation"
|
|
5335
|
+
],
|
|
5336
|
+
"properties": {
|
|
5337
|
+
"workspace_id": {
|
|
5338
|
+
"type": "string",
|
|
5339
|
+
"format": "uuid"
|
|
5340
|
+
},
|
|
5341
|
+
"knowledge_space_id": {
|
|
5342
|
+
"type": "string",
|
|
5343
|
+
"format": "uuid"
|
|
5344
|
+
},
|
|
5345
|
+
"table_id": {
|
|
5346
|
+
"type": "string",
|
|
5347
|
+
"format": "uuid"
|
|
5348
|
+
},
|
|
5349
|
+
"explicit_confirmation": {
|
|
5350
|
+
"type": "boolean"
|
|
5351
|
+
}
|
|
5352
|
+
}
|
|
5353
|
+
}
|
|
5354
|
+
},
|
|
5355
|
+
{
|
|
5356
|
+
"name": "besales_knowledge_namespace_reindex",
|
|
5357
|
+
"description": "Фоновая (BullMQ) переиндексация knowledge space: re-embed существующих Q&A + чанков документов из Postgres → Pinecone, идемпотентно (upsert по стабильному id). Восстанавливает поиск, когда данные есть в Postgres, но besales_knowledge_qa_search пуст (рассинхрон PG↔Pinecone после транзиентного сбоя upsert при сохранении или смены scope). ASYNC — итог в логах воркера, повтори поиск через ~минуту. types опционально (по умолчанию [qa, doc]). Scope: mcp:platform-setup.",
|
|
5358
|
+
"inputSchema": {
|
|
5359
|
+
"type": "object",
|
|
5360
|
+
"required": [
|
|
5361
|
+
"knowledge_space_id"
|
|
5362
|
+
],
|
|
5363
|
+
"properties": {
|
|
5364
|
+
"workspace_id": {
|
|
5365
|
+
"type": "string",
|
|
5366
|
+
"format": "uuid"
|
|
5367
|
+
},
|
|
5368
|
+
"knowledge_space_id": {
|
|
5369
|
+
"type": "string",
|
|
5370
|
+
"format": "uuid"
|
|
5371
|
+
},
|
|
5372
|
+
"types": {
|
|
5373
|
+
"type": "array",
|
|
5374
|
+
"items": {
|
|
5375
|
+
"type": "string",
|
|
5376
|
+
"enum": [
|
|
5377
|
+
"qa",
|
|
5378
|
+
"doc"
|
|
5379
|
+
]
|
|
5380
|
+
},
|
|
5381
|
+
"description": "Какие типы переиндексировать; default [qa, doc]"
|
|
5382
|
+
}
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
},
|
|
5386
|
+
{
|
|
5387
|
+
"name": "besales_variable_list",
|
|
5388
|
+
"description": "v1.5 Increment 4a: список переменных. scope=WORKSPACE возвращает глобальные WorkspaceVariable (доступны всем платформам); scope=CHANNEL требует platform_id и возвращает CustomVariable одной платформы (filter: all|variables|constants). Референс в промпте/шаблоне: WORKSPACE → {{{name}}} (тройные фигурные), CHANNEL-константа → {{name}} (двойные). Scope: mcp:platform-setup.",
|
|
5389
|
+
"inputSchema": {
|
|
5390
|
+
"type": "object",
|
|
5391
|
+
"required": [
|
|
5392
|
+
"scope"
|
|
5393
|
+
],
|
|
5394
|
+
"additionalProperties": false,
|
|
5395
|
+
"properties": {
|
|
5396
|
+
"workspace_id": {
|
|
5397
|
+
"type": "string",
|
|
5398
|
+
"format": "uuid"
|
|
5399
|
+
},
|
|
5400
|
+
"scope": {
|
|
5401
|
+
"type": "string",
|
|
5402
|
+
"enum": [
|
|
5403
|
+
"WORKSPACE",
|
|
5404
|
+
"CHANNEL"
|
|
5405
|
+
]
|
|
5406
|
+
},
|
|
5407
|
+
"platform_id": {
|
|
5408
|
+
"type": "string",
|
|
5409
|
+
"format": "uuid",
|
|
5410
|
+
"description": "Required when scope=CHANNEL"
|
|
5411
|
+
},
|
|
5412
|
+
"filter": {
|
|
5413
|
+
"type": "string",
|
|
5414
|
+
"enum": [
|
|
5415
|
+
"all",
|
|
5416
|
+
"variables",
|
|
5417
|
+
"constants"
|
|
5418
|
+
],
|
|
5419
|
+
"description": "Filter для CHANNEL scope; default=all"
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5422
|
+
}
|
|
5423
|
+
},
|
|
5424
|
+
{
|
|
5425
|
+
"name": "besales_variable_create",
|
|
5426
|
+
"description": "v1.5 Increment 4a: создать переменную. WORKSPACE scope — глобальная (поля: name, type, value?); CHANNEL scope — platform-scoped (требует platform_id, поддерживает is_constant + constant_value). name + scope + is_constant immutable post-create. Референс в тексте: WORKSPACE → {{{name}}} (тройные фигурные), CHANNEL-константа → {{name}} (двойные). WORKSPACE-переменные интерполируются в baseSystemPrompt агента в рантайме — используй прямо в промпте (не только в шаблонах сообщений); сменил значение через besales_variable_update → промпт править не нужно. Scope: mcp:platform-setup.",
|
|
5427
|
+
"inputSchema": {
|
|
5428
|
+
"type": "object",
|
|
5429
|
+
"required": [
|
|
5430
|
+
"scope",
|
|
5431
|
+
"name",
|
|
5432
|
+
"type"
|
|
5433
|
+
],
|
|
5434
|
+
"additionalProperties": false,
|
|
5435
|
+
"properties": {
|
|
5436
|
+
"workspace_id": {
|
|
5437
|
+
"type": "string",
|
|
5438
|
+
"format": "uuid"
|
|
5439
|
+
},
|
|
5440
|
+
"scope": {
|
|
4520
5441
|
"type": "string",
|
|
4521
|
-
"
|
|
5442
|
+
"enum": [
|
|
5443
|
+
"WORKSPACE",
|
|
5444
|
+
"CHANNEL"
|
|
5445
|
+
]
|
|
4522
5446
|
},
|
|
4523
|
-
"
|
|
4524
|
-
"type": "
|
|
5447
|
+
"name": {
|
|
5448
|
+
"type": "string",
|
|
5449
|
+
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
|
|
5450
|
+
"description": "Variable name (ASCII letters/digits/underscores; starts with letter or _)"
|
|
4525
5451
|
},
|
|
4526
|
-
"
|
|
4527
|
-
"type": "
|
|
4528
|
-
"minimum": 1
|
|
5452
|
+
"description": {
|
|
5453
|
+
"type": "string"
|
|
4529
5454
|
},
|
|
4530
|
-
"
|
|
4531
|
-
"type": "
|
|
4532
|
-
"
|
|
4533
|
-
|
|
5455
|
+
"type": {
|
|
5456
|
+
"type": "string",
|
|
5457
|
+
"enum": [
|
|
5458
|
+
"TEXT",
|
|
5459
|
+
"NUMBER",
|
|
5460
|
+
"FLOAT",
|
|
5461
|
+
"BOOLEAN"
|
|
5462
|
+
]
|
|
5463
|
+
},
|
|
5464
|
+
"value": {
|
|
5465
|
+
"type": "string",
|
|
5466
|
+
"description": "WORKSPACE scope only"
|
|
5467
|
+
},
|
|
5468
|
+
"platform_id": {
|
|
5469
|
+
"type": "string",
|
|
5470
|
+
"format": "uuid",
|
|
5471
|
+
"description": "Required when scope=CHANNEL"
|
|
5472
|
+
},
|
|
5473
|
+
"is_constant": {
|
|
5474
|
+
"type": "boolean",
|
|
5475
|
+
"description": "CHANNEL scope only"
|
|
5476
|
+
},
|
|
5477
|
+
"constant_value": {
|
|
5478
|
+
"type": "string",
|
|
5479
|
+
"description": "Required when scope=CHANNEL AND is_constant=true"
|
|
4534
5480
|
}
|
|
4535
5481
|
}
|
|
4536
5482
|
}
|
|
4537
5483
|
},
|
|
4538
5484
|
{
|
|
4539
|
-
"name": "
|
|
4540
|
-
"description": "v1.5 Increment
|
|
5485
|
+
"name": "besales_variable_get",
|
|
5486
|
+
"description": "v1.5 Increment 4a: получить переменную по id. scope+platform_id (для CHANNEL) необходимы для роутинга между двумя backend таблицами. Adapter валидирует ownership на каждый вызов (защита от cross-workspace утечки). Scope: mcp:platform-setup.",
|
|
4541
5487
|
"inputSchema": {
|
|
4542
5488
|
"type": "object",
|
|
4543
5489
|
"required": [
|
|
4544
|
-
"
|
|
4545
|
-
"
|
|
5490
|
+
"variable_id",
|
|
5491
|
+
"scope"
|
|
4546
5492
|
],
|
|
5493
|
+
"additionalProperties": false,
|
|
4547
5494
|
"properties": {
|
|
4548
5495
|
"workspace_id": {
|
|
4549
5496
|
"type": "string",
|
|
4550
5497
|
"format": "uuid"
|
|
4551
5498
|
},
|
|
4552
|
-
"
|
|
5499
|
+
"variable_id": {
|
|
4553
5500
|
"type": "string",
|
|
4554
5501
|
"format": "uuid"
|
|
4555
5502
|
},
|
|
4556
|
-
"
|
|
5503
|
+
"scope": {
|
|
4557
5504
|
"type": "string",
|
|
4558
|
-
"
|
|
5505
|
+
"enum": [
|
|
5506
|
+
"WORKSPACE",
|
|
5507
|
+
"CHANNEL"
|
|
5508
|
+
]
|
|
5509
|
+
},
|
|
5510
|
+
"platform_id": {
|
|
5511
|
+
"type": "string",
|
|
5512
|
+
"format": "uuid",
|
|
5513
|
+
"description": "Required when scope=CHANNEL"
|
|
4559
5514
|
}
|
|
4560
5515
|
}
|
|
4561
5516
|
}
|
|
4562
5517
|
},
|
|
4563
5518
|
{
|
|
4564
|
-
"name": "
|
|
4565
|
-
"description": "v1.5 Increment
|
|
5519
|
+
"name": "besales_variable_update",
|
|
5520
|
+
"description": "v1.5 Increment 4a: обновить переменную (description / type / value / constant_value). name + scope + is_constant immutable post-create. value=null или constant_value=null обнуляют. Ownership guard на CHANNEL scope. Audit reversible с before snapshot. Scope: mcp:platform-setup.",
|
|
4566
5521
|
"inputSchema": {
|
|
4567
5522
|
"type": "object",
|
|
4568
5523
|
"required": [
|
|
4569
|
-
"
|
|
4570
|
-
"
|
|
5524
|
+
"variable_id",
|
|
5525
|
+
"scope"
|
|
4571
5526
|
],
|
|
5527
|
+
"additionalProperties": false,
|
|
4572
5528
|
"properties": {
|
|
4573
5529
|
"workspace_id": {
|
|
4574
5530
|
"type": "string",
|
|
4575
5531
|
"format": "uuid"
|
|
4576
5532
|
},
|
|
4577
|
-
"
|
|
5533
|
+
"variable_id": {
|
|
4578
5534
|
"type": "string",
|
|
4579
5535
|
"format": "uuid"
|
|
4580
5536
|
},
|
|
4581
|
-
"
|
|
5537
|
+
"scope": {
|
|
4582
5538
|
"type": "string",
|
|
4583
|
-
"
|
|
5539
|
+
"enum": [
|
|
5540
|
+
"WORKSPACE",
|
|
5541
|
+
"CHANNEL"
|
|
5542
|
+
]
|
|
4584
5543
|
},
|
|
4585
|
-
"
|
|
4586
|
-
"type": "
|
|
4587
|
-
"
|
|
5544
|
+
"platform_id": {
|
|
5545
|
+
"type": "string",
|
|
5546
|
+
"format": "uuid",
|
|
5547
|
+
"description": "Required when scope=CHANNEL"
|
|
4588
5548
|
},
|
|
4589
|
-
"
|
|
5549
|
+
"description": {
|
|
4590
5550
|
"type": "string"
|
|
4591
5551
|
},
|
|
4592
|
-
"
|
|
4593
|
-
"type": "integer",
|
|
4594
|
-
"minimum": 1
|
|
4595
|
-
},
|
|
4596
|
-
"cache_ttl_seconds": {
|
|
4597
|
-
"type": "integer",
|
|
4598
|
-
"minimum": 1
|
|
4599
|
-
},
|
|
4600
|
-
"use_vector_index": {
|
|
4601
|
-
"type": "boolean"
|
|
4602
|
-
},
|
|
4603
|
-
"vector_top_k": {
|
|
4604
|
-
"type": "integer",
|
|
4605
|
-
"minimum": 1
|
|
4606
|
-
},
|
|
4607
|
-
"vector_embed_max_chars": {
|
|
4608
|
-
"type": "integer",
|
|
4609
|
-
"minimum": 1
|
|
4610
|
-
},
|
|
4611
|
-
"access": {
|
|
5552
|
+
"type": {
|
|
4612
5553
|
"type": "string",
|
|
4613
5554
|
"enum": [
|
|
4614
|
-
"
|
|
4615
|
-
"
|
|
5555
|
+
"TEXT",
|
|
5556
|
+
"NUMBER",
|
|
5557
|
+
"FLOAT",
|
|
5558
|
+
"BOOLEAN"
|
|
4616
5559
|
]
|
|
4617
5560
|
},
|
|
4618
|
-
"
|
|
4619
|
-
"type":
|
|
5561
|
+
"value": {
|
|
5562
|
+
"type": [
|
|
5563
|
+
"string",
|
|
5564
|
+
"null"
|
|
5565
|
+
],
|
|
5566
|
+
"description": "WORKSPACE scope only; null clears"
|
|
5567
|
+
},
|
|
5568
|
+
"constant_value": {
|
|
5569
|
+
"type": [
|
|
5570
|
+
"string",
|
|
5571
|
+
"null"
|
|
5572
|
+
],
|
|
5573
|
+
"description": "CHANNEL scope only; null clears"
|
|
4620
5574
|
}
|
|
4621
5575
|
}
|
|
4622
5576
|
}
|
|
4623
5577
|
},
|
|
4624
5578
|
{
|
|
4625
|
-
"name": "
|
|
4626
|
-
"description": "v1.5 Increment
|
|
5579
|
+
"name": "besales_variable_delete",
|
|
5580
|
+
"description": "v1.5 Increment 4a: удалить переменную. Требует explicit_confirmation=true (literal). Audit reversible через besales_audit_revert (восстанавливает строку из beforeSnapshot). Scope: mcp:platform-setup.",
|
|
4627
5581
|
"inputSchema": {
|
|
4628
5582
|
"type": "object",
|
|
4629
5583
|
"required": [
|
|
4630
|
-
"
|
|
4631
|
-
"
|
|
5584
|
+
"variable_id",
|
|
5585
|
+
"scope",
|
|
4632
5586
|
"explicit_confirmation"
|
|
4633
5587
|
],
|
|
5588
|
+
"additionalProperties": false,
|
|
4634
5589
|
"properties": {
|
|
4635
5590
|
"workspace_id": {
|
|
4636
5591
|
"type": "string",
|
|
4637
5592
|
"format": "uuid"
|
|
4638
5593
|
},
|
|
4639
|
-
"
|
|
5594
|
+
"variable_id": {
|
|
4640
5595
|
"type": "string",
|
|
4641
5596
|
"format": "uuid"
|
|
4642
5597
|
},
|
|
4643
|
-
"
|
|
5598
|
+
"scope": {
|
|
4644
5599
|
"type": "string",
|
|
4645
|
-
"
|
|
5600
|
+
"enum": [
|
|
5601
|
+
"WORKSPACE",
|
|
5602
|
+
"CHANNEL"
|
|
5603
|
+
]
|
|
5604
|
+
},
|
|
5605
|
+
"platform_id": {
|
|
5606
|
+
"type": "string",
|
|
5607
|
+
"format": "uuid",
|
|
5608
|
+
"description": "Required when scope=CHANNEL"
|
|
4646
5609
|
},
|
|
4647
5610
|
"explicit_confirmation": {
|
|
4648
|
-
"
|
|
5611
|
+
"const": true
|
|
4649
5612
|
}
|
|
4650
5613
|
}
|
|
4651
5614
|
}
|
|
4652
5615
|
},
|
|
4653
5616
|
{
|
|
4654
|
-
"name": "
|
|
4655
|
-
"description": "v1.5 Increment
|
|
5617
|
+
"name": "besales_crm_pipeline_list",
|
|
5618
|
+
"description": "v1.5 Increment 4b: list CRM воронок (триггерит sync с external CRM — AmoCRM/Bitrix24 — на каждом вызове). Scope: mcp:platform-setup.",
|
|
4656
5619
|
"inputSchema": {
|
|
4657
5620
|
"type": "object",
|
|
4658
5621
|
"required": [
|
|
4659
|
-
"
|
|
4660
|
-
"table_id",
|
|
4661
|
-
"explicit_confirmation"
|
|
5622
|
+
"crm_id"
|
|
4662
5623
|
],
|
|
5624
|
+
"additionalProperties": false,
|
|
4663
5625
|
"properties": {
|
|
4664
5626
|
"workspace_id": {
|
|
4665
5627
|
"type": "string",
|
|
4666
5628
|
"format": "uuid"
|
|
4667
5629
|
},
|
|
4668
|
-
"
|
|
4669
|
-
"type": "string",
|
|
4670
|
-
"format": "uuid"
|
|
4671
|
-
},
|
|
4672
|
-
"table_id": {
|
|
5630
|
+
"crm_id": {
|
|
4673
5631
|
"type": "string",
|
|
4674
5632
|
"format": "uuid"
|
|
4675
5633
|
},
|
|
4676
|
-
"
|
|
4677
|
-
"type": "boolean"
|
|
5634
|
+
"include_deleted": {
|
|
5635
|
+
"type": "boolean",
|
|
5636
|
+
"default": false
|
|
4678
5637
|
}
|
|
4679
5638
|
}
|
|
4680
5639
|
}
|
|
4681
5640
|
},
|
|
4682
5641
|
{
|
|
4683
|
-
"name": "
|
|
4684
|
-
"description": "
|
|
5642
|
+
"name": "besales_crm_pipeline_get",
|
|
5643
|
+
"description": "v1.5 Increment 4b: get single CRM воронки с nested statuses. Scope: mcp:platform-setup.",
|
|
4685
5644
|
"inputSchema": {
|
|
4686
5645
|
"type": "object",
|
|
4687
5646
|
"required": [
|
|
4688
|
-
"
|
|
5647
|
+
"crm_id",
|
|
5648
|
+
"pipeline_id"
|
|
4689
5649
|
],
|
|
5650
|
+
"additionalProperties": false,
|
|
4690
5651
|
"properties": {
|
|
4691
5652
|
"workspace_id": {
|
|
4692
5653
|
"type": "string",
|
|
4693
5654
|
"format": "uuid"
|
|
4694
5655
|
},
|
|
4695
|
-
"
|
|
5656
|
+
"crm_id": {
|
|
4696
5657
|
"type": "string",
|
|
4697
5658
|
"format": "uuid"
|
|
4698
5659
|
},
|
|
4699
|
-
"
|
|
4700
|
-
"type": "
|
|
4701
|
-
"items": {
|
|
4702
|
-
"type": "string",
|
|
4703
|
-
"enum": [
|
|
4704
|
-
"qa",
|
|
4705
|
-
"doc"
|
|
4706
|
-
]
|
|
4707
|
-
},
|
|
4708
|
-
"description": "Какие типы переиндексировать; default [qa, doc]"
|
|
5660
|
+
"pipeline_id": {
|
|
5661
|
+
"type": "integer"
|
|
4709
5662
|
}
|
|
4710
5663
|
}
|
|
4711
5664
|
}
|
|
4712
5665
|
},
|
|
4713
5666
|
{
|
|
4714
|
-
"name": "
|
|
4715
|
-
"description": "v1.5 Increment
|
|
5667
|
+
"name": "besales_crm_pipeline_create",
|
|
5668
|
+
"description": "v1.5 Increment 4b: ⚠️ создаёт воронку в EXTERNAL CRM (AmoCRM/Bitrix24 API call). GetCourse — требует pipeline_id (manual funnel_id). External CRM ops NOT undoable через MCP. Audit phases: create.attempt → create.success / create.failure. Scope: mcp:platform-setup.",
|
|
4716
5669
|
"inputSchema": {
|
|
4717
5670
|
"type": "object",
|
|
4718
5671
|
"required": [
|
|
4719
|
-
"
|
|
5672
|
+
"crm_id",
|
|
5673
|
+
"name",
|
|
5674
|
+
"acknowledge_external_side_effect"
|
|
4720
5675
|
],
|
|
4721
5676
|
"additionalProperties": false,
|
|
4722
5677
|
"properties": {
|
|
@@ -4724,39 +5679,44 @@
|
|
|
4724
5679
|
"type": "string",
|
|
4725
5680
|
"format": "uuid"
|
|
4726
5681
|
},
|
|
4727
|
-
"
|
|
5682
|
+
"crm_id": {
|
|
4728
5683
|
"type": "string",
|
|
4729
|
-
"
|
|
4730
|
-
"WORKSPACE",
|
|
4731
|
-
"CHANNEL"
|
|
4732
|
-
]
|
|
5684
|
+
"format": "uuid"
|
|
4733
5685
|
},
|
|
4734
|
-
"
|
|
4735
|
-
"type": "string"
|
|
4736
|
-
"format": "uuid",
|
|
4737
|
-
"description": "Required when scope=CHANNEL"
|
|
5686
|
+
"name": {
|
|
5687
|
+
"type": "string"
|
|
4738
5688
|
},
|
|
4739
|
-
"
|
|
4740
|
-
"type": "
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
"
|
|
5689
|
+
"sort": {
|
|
5690
|
+
"type": "integer"
|
|
5691
|
+
},
|
|
5692
|
+
"is_main": {
|
|
5693
|
+
"type": "boolean"
|
|
5694
|
+
},
|
|
5695
|
+
"is_unsorted_on": {
|
|
5696
|
+
"type": "boolean"
|
|
5697
|
+
},
|
|
5698
|
+
"is_active": {
|
|
5699
|
+
"type": "boolean"
|
|
5700
|
+
},
|
|
5701
|
+
"pipeline_id": {
|
|
5702
|
+
"type": "integer",
|
|
5703
|
+
"description": "Required для GetCourse (manual funnel_id); ignored для AmoCRM/Bitrix24"
|
|
5704
|
+
},
|
|
5705
|
+
"acknowledge_external_side_effect": {
|
|
5706
|
+
"const": true
|
|
4747
5707
|
}
|
|
4748
5708
|
}
|
|
4749
5709
|
}
|
|
4750
5710
|
},
|
|
4751
|
-
{
|
|
4752
|
-
"name": "
|
|
4753
|
-
"description": "v1.5 Increment
|
|
5711
|
+
{
|
|
5712
|
+
"name": "besales_crm_pipeline_update",
|
|
5713
|
+
"description": "v1.5 Increment 4b: update pipeline metadata (syncs to external CRM if supports updatePipeline). Не touches aiResponseMoveToStatus — those live в PipelineSettings (besales_pipeline_settings_update). Scope: mcp:platform-setup.",
|
|
4754
5714
|
"inputSchema": {
|
|
4755
5715
|
"type": "object",
|
|
4756
5716
|
"required": [
|
|
4757
|
-
"
|
|
4758
|
-
"
|
|
4759
|
-
"
|
|
5717
|
+
"crm_id",
|
|
5718
|
+
"pipeline_id",
|
|
5719
|
+
"acknowledge_external_side_effect"
|
|
4760
5720
|
],
|
|
4761
5721
|
"additionalProperties": false,
|
|
4762
5722
|
"properties": {
|
|
@@ -4764,58 +5724,44 @@
|
|
|
4764
5724
|
"type": "string",
|
|
4765
5725
|
"format": "uuid"
|
|
4766
5726
|
},
|
|
4767
|
-
"
|
|
5727
|
+
"crm_id": {
|
|
4768
5728
|
"type": "string",
|
|
4769
|
-
"
|
|
4770
|
-
"WORKSPACE",
|
|
4771
|
-
"CHANNEL"
|
|
4772
|
-
]
|
|
5729
|
+
"format": "uuid"
|
|
4773
5730
|
},
|
|
4774
|
-
"
|
|
4775
|
-
"type": "
|
|
4776
|
-
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
|
|
4777
|
-
"description": "Variable name (ASCII letters/digits/underscores; starts with letter or _)"
|
|
5731
|
+
"pipeline_id": {
|
|
5732
|
+
"type": "integer"
|
|
4778
5733
|
},
|
|
4779
|
-
"
|
|
5734
|
+
"name": {
|
|
4780
5735
|
"type": "string"
|
|
4781
5736
|
},
|
|
4782
|
-
"
|
|
4783
|
-
"type": "
|
|
4784
|
-
"enum": [
|
|
4785
|
-
"TEXT",
|
|
4786
|
-
"NUMBER",
|
|
4787
|
-
"FLOAT",
|
|
4788
|
-
"BOOLEAN"
|
|
4789
|
-
]
|
|
5737
|
+
"sort": {
|
|
5738
|
+
"type": "integer"
|
|
4790
5739
|
},
|
|
4791
|
-
"
|
|
4792
|
-
"type": "
|
|
4793
|
-
"description": "WORKSPACE scope only"
|
|
5740
|
+
"is_main": {
|
|
5741
|
+
"type": "boolean"
|
|
4794
5742
|
},
|
|
4795
|
-
"
|
|
4796
|
-
"type": "
|
|
4797
|
-
"format": "uuid",
|
|
4798
|
-
"description": "Required when scope=CHANNEL"
|
|
5743
|
+
"is_unsorted_on": {
|
|
5744
|
+
"type": "boolean"
|
|
4799
5745
|
},
|
|
4800
|
-
"
|
|
4801
|
-
"type": "boolean"
|
|
4802
|
-
"description": "CHANNEL scope only"
|
|
5746
|
+
"is_active": {
|
|
5747
|
+
"type": "boolean"
|
|
4803
5748
|
},
|
|
4804
|
-
"
|
|
4805
|
-
"
|
|
4806
|
-
"description": "Required when scope=CHANNEL AND is_constant=true"
|
|
5749
|
+
"acknowledge_external_side_effect": {
|
|
5750
|
+
"const": true
|
|
4807
5751
|
}
|
|
4808
5752
|
}
|
|
4809
5753
|
}
|
|
4810
5754
|
},
|
|
4811
5755
|
{
|
|
4812
|
-
"name": "
|
|
4813
|
-
"description": "v1.5 Increment
|
|
5756
|
+
"name": "besales_crm_pipeline_delete",
|
|
5757
|
+
"description": "v1.5 Increment 4b: ⚠️ soft delete locally + EXTERNAL CRM API call. Refuses if isMain=true. NOT undoable. Scope: mcp:platform-setup.",
|
|
4814
5758
|
"inputSchema": {
|
|
4815
5759
|
"type": "object",
|
|
4816
5760
|
"required": [
|
|
4817
|
-
"
|
|
4818
|
-
"
|
|
5761
|
+
"crm_id",
|
|
5762
|
+
"pipeline_id",
|
|
5763
|
+
"explicit_confirmation",
|
|
5764
|
+
"acknowledge_external_side_effect"
|
|
4819
5765
|
],
|
|
4820
5766
|
"additionalProperties": false,
|
|
4821
5767
|
"properties": {
|
|
@@ -4823,33 +5769,30 @@
|
|
|
4823
5769
|
"type": "string",
|
|
4824
5770
|
"format": "uuid"
|
|
4825
5771
|
},
|
|
4826
|
-
"
|
|
5772
|
+
"crm_id": {
|
|
4827
5773
|
"type": "string",
|
|
4828
5774
|
"format": "uuid"
|
|
4829
5775
|
},
|
|
4830
|
-
"
|
|
4831
|
-
"type": "
|
|
4832
|
-
"enum": [
|
|
4833
|
-
"WORKSPACE",
|
|
4834
|
-
"CHANNEL"
|
|
4835
|
-
]
|
|
5776
|
+
"pipeline_id": {
|
|
5777
|
+
"type": "integer"
|
|
4836
5778
|
},
|
|
4837
|
-
"
|
|
4838
|
-
"
|
|
4839
|
-
|
|
4840
|
-
|
|
5779
|
+
"explicit_confirmation": {
|
|
5780
|
+
"const": true
|
|
5781
|
+
},
|
|
5782
|
+
"acknowledge_external_side_effect": {
|
|
5783
|
+
"const": true
|
|
4841
5784
|
}
|
|
4842
5785
|
}
|
|
4843
5786
|
}
|
|
4844
5787
|
},
|
|
4845
5788
|
{
|
|
4846
|
-
"name": "
|
|
4847
|
-
"description": "v1.5 Increment
|
|
5789
|
+
"name": "besales_crm_pipeline_status_list",
|
|
5790
|
+
"description": "v1.5 Increment 4b: list statuses for a pipeline. Scope: mcp:platform-setup.",
|
|
4848
5791
|
"inputSchema": {
|
|
4849
5792
|
"type": "object",
|
|
4850
5793
|
"required": [
|
|
4851
|
-
"
|
|
4852
|
-
"
|
|
5794
|
+
"crm_id",
|
|
5795
|
+
"pipeline_id"
|
|
4853
5796
|
],
|
|
4854
5797
|
"additionalProperties": false,
|
|
4855
5798
|
"properties": {
|
|
@@ -4857,60 +5800,91 @@
|
|
|
4857
5800
|
"type": "string",
|
|
4858
5801
|
"format": "uuid"
|
|
4859
5802
|
},
|
|
4860
|
-
"
|
|
5803
|
+
"crm_id": {
|
|
4861
5804
|
"type": "string",
|
|
4862
5805
|
"format": "uuid"
|
|
4863
5806
|
},
|
|
4864
|
-
"
|
|
5807
|
+
"pipeline_id": {
|
|
5808
|
+
"type": "integer"
|
|
5809
|
+
}
|
|
5810
|
+
}
|
|
5811
|
+
}
|
|
5812
|
+
},
|
|
5813
|
+
{
|
|
5814
|
+
"name": "besales_crm_pipeline_status_create",
|
|
5815
|
+
"description": "v1.5 Increment 4b: ⚠️ creates status в EXTERNAL CRM. GetCourse — требует status_id (manual funnel_stage_id). Scope: mcp:platform-setup.",
|
|
5816
|
+
"inputSchema": {
|
|
5817
|
+
"type": "object",
|
|
5818
|
+
"required": [
|
|
5819
|
+
"crm_id",
|
|
5820
|
+
"pipeline_id",
|
|
5821
|
+
"name",
|
|
5822
|
+
"sort",
|
|
5823
|
+
"acknowledge_external_side_effect"
|
|
5824
|
+
],
|
|
5825
|
+
"additionalProperties": false,
|
|
5826
|
+
"properties": {
|
|
5827
|
+
"workspace_id": {
|
|
4865
5828
|
"type": "string",
|
|
4866
|
-
"
|
|
4867
|
-
"WORKSPACE",
|
|
4868
|
-
"CHANNEL"
|
|
4869
|
-
]
|
|
5829
|
+
"format": "uuid"
|
|
4870
5830
|
},
|
|
4871
|
-
"
|
|
5831
|
+
"crm_id": {
|
|
4872
5832
|
"type": "string",
|
|
4873
|
-
"format": "uuid"
|
|
4874
|
-
"description": "Required when scope=CHANNEL"
|
|
5833
|
+
"format": "uuid"
|
|
4875
5834
|
},
|
|
4876
|
-
"
|
|
5835
|
+
"pipeline_id": {
|
|
5836
|
+
"type": "integer"
|
|
5837
|
+
},
|
|
5838
|
+
"name": {
|
|
4877
5839
|
"type": "string"
|
|
4878
5840
|
},
|
|
4879
|
-
"
|
|
4880
|
-
"type": "
|
|
4881
|
-
"enum": [
|
|
4882
|
-
"TEXT",
|
|
4883
|
-
"NUMBER",
|
|
4884
|
-
"FLOAT",
|
|
4885
|
-
"BOOLEAN"
|
|
4886
|
-
]
|
|
5841
|
+
"sort": {
|
|
5842
|
+
"type": "integer"
|
|
4887
5843
|
},
|
|
4888
|
-
"
|
|
4889
|
-
"type":
|
|
4890
|
-
"string",
|
|
4891
|
-
"null"
|
|
4892
|
-
],
|
|
4893
|
-
"description": "WORKSPACE scope only; null clears"
|
|
5844
|
+
"color": {
|
|
5845
|
+
"type": "string"
|
|
4894
5846
|
},
|
|
4895
|
-
"
|
|
5847
|
+
"status_types": {
|
|
5848
|
+
"type": "array",
|
|
5849
|
+
"items": {
|
|
5850
|
+
"type": "string"
|
|
5851
|
+
}
|
|
5852
|
+
},
|
|
5853
|
+
"is_editable": {
|
|
5854
|
+
"type": "boolean"
|
|
5855
|
+
},
|
|
5856
|
+
"is_bot_active": {
|
|
5857
|
+
"type": "boolean"
|
|
5858
|
+
},
|
|
5859
|
+
"is_operator_available": {
|
|
5860
|
+
"type": "boolean"
|
|
5861
|
+
},
|
|
5862
|
+
"on_message_received_move_to_status": {
|
|
4896
5863
|
"type": [
|
|
4897
|
-
"
|
|
5864
|
+
"integer",
|
|
4898
5865
|
"null"
|
|
4899
|
-
]
|
|
4900
|
-
|
|
5866
|
+
]
|
|
5867
|
+
},
|
|
5868
|
+
"status_id": {
|
|
5869
|
+
"type": "integer",
|
|
5870
|
+
"description": "Required для GetCourse (manual funnel_stage_id)"
|
|
5871
|
+
},
|
|
5872
|
+
"acknowledge_external_side_effect": {
|
|
5873
|
+
"const": true
|
|
4901
5874
|
}
|
|
4902
5875
|
}
|
|
4903
5876
|
}
|
|
4904
5877
|
},
|
|
4905
5878
|
{
|
|
4906
|
-
"name": "
|
|
4907
|
-
"description": "v1.5 Increment
|
|
5879
|
+
"name": "besales_crm_pipeline_status_update",
|
|
5880
|
+
"description": "v1.5 Increment 4b: update status (skip external CRM update if status.isEditable=false). Scope: mcp:platform-setup.",
|
|
4908
5881
|
"inputSchema": {
|
|
4909
5882
|
"type": "object",
|
|
4910
5883
|
"required": [
|
|
4911
|
-
"
|
|
4912
|
-
"
|
|
4913
|
-
"
|
|
5884
|
+
"crm_id",
|
|
5885
|
+
"pipeline_id",
|
|
5886
|
+
"status_id",
|
|
5887
|
+
"acknowledge_external_side_effect"
|
|
4914
5888
|
],
|
|
4915
5889
|
"additionalProperties": false,
|
|
4916
5890
|
"properties": {
|
|
@@ -4918,35 +5892,67 @@
|
|
|
4918
5892
|
"type": "string",
|
|
4919
5893
|
"format": "uuid"
|
|
4920
5894
|
},
|
|
4921
|
-
"
|
|
5895
|
+
"crm_id": {
|
|
4922
5896
|
"type": "string",
|
|
4923
5897
|
"format": "uuid"
|
|
4924
5898
|
},
|
|
4925
|
-
"
|
|
4926
|
-
"type": "
|
|
4927
|
-
"enum": [
|
|
4928
|
-
"WORKSPACE",
|
|
4929
|
-
"CHANNEL"
|
|
4930
|
-
]
|
|
5899
|
+
"pipeline_id": {
|
|
5900
|
+
"type": "integer"
|
|
4931
5901
|
},
|
|
4932
|
-
"
|
|
4933
|
-
"type": "
|
|
4934
|
-
"format": "uuid",
|
|
4935
|
-
"description": "Required when scope=CHANNEL"
|
|
5902
|
+
"status_id": {
|
|
5903
|
+
"type": "integer"
|
|
4936
5904
|
},
|
|
4937
|
-
"
|
|
5905
|
+
"name": {
|
|
5906
|
+
"type": "string"
|
|
5907
|
+
},
|
|
5908
|
+
"sort": {
|
|
5909
|
+
"type": "integer"
|
|
5910
|
+
},
|
|
5911
|
+
"color": {
|
|
5912
|
+
"type": "string"
|
|
5913
|
+
},
|
|
5914
|
+
"status_types": {
|
|
5915
|
+
"type": "array",
|
|
5916
|
+
"items": {
|
|
5917
|
+
"type": "string"
|
|
5918
|
+
}
|
|
5919
|
+
},
|
|
5920
|
+
"is_system_managed": {
|
|
5921
|
+
"type": "boolean",
|
|
5922
|
+
"description": "Главный переключатель управления статусом системой"
|
|
5923
|
+
},
|
|
5924
|
+
"is_editable": {
|
|
5925
|
+
"type": "boolean"
|
|
5926
|
+
},
|
|
5927
|
+
"is_bot_active": {
|
|
5928
|
+
"type": "boolean"
|
|
5929
|
+
},
|
|
5930
|
+
"is_operator_available": {
|
|
5931
|
+
"type": "boolean"
|
|
5932
|
+
},
|
|
5933
|
+
"on_message_received_move_to_status": {
|
|
5934
|
+
"type": [
|
|
5935
|
+
"integer",
|
|
5936
|
+
"null"
|
|
5937
|
+
]
|
|
5938
|
+
},
|
|
5939
|
+
"acknowledge_external_side_effect": {
|
|
4938
5940
|
"const": true
|
|
4939
5941
|
}
|
|
4940
5942
|
}
|
|
4941
5943
|
}
|
|
4942
5944
|
},
|
|
4943
5945
|
{
|
|
4944
|
-
"name": "
|
|
4945
|
-
"description": "v1.5 Increment 4b:
|
|
5946
|
+
"name": "besales_crm_pipeline_status_delete",
|
|
5947
|
+
"description": "v1.5 Increment 4b: ⚠️ delete status в EXTERNAL CRM. Scope: mcp:platform-setup.",
|
|
4946
5948
|
"inputSchema": {
|
|
4947
5949
|
"type": "object",
|
|
4948
5950
|
"required": [
|
|
4949
|
-
"crm_id"
|
|
5951
|
+
"crm_id",
|
|
5952
|
+
"pipeline_id",
|
|
5953
|
+
"status_id",
|
|
5954
|
+
"explicit_confirmation",
|
|
5955
|
+
"acknowledge_external_side_effect"
|
|
4950
5956
|
],
|
|
4951
5957
|
"additionalProperties": false,
|
|
4952
5958
|
"properties": {
|
|
@@ -4958,21 +5964,30 @@
|
|
|
4958
5964
|
"type": "string",
|
|
4959
5965
|
"format": "uuid"
|
|
4960
5966
|
},
|
|
4961
|
-
"
|
|
4962
|
-
"type": "
|
|
4963
|
-
|
|
5967
|
+
"pipeline_id": {
|
|
5968
|
+
"type": "integer"
|
|
5969
|
+
},
|
|
5970
|
+
"status_id": {
|
|
5971
|
+
"type": "integer"
|
|
5972
|
+
},
|
|
5973
|
+
"explicit_confirmation": {
|
|
5974
|
+
"const": true
|
|
5975
|
+
},
|
|
5976
|
+
"acknowledge_external_side_effect": {
|
|
5977
|
+
"const": true
|
|
4964
5978
|
}
|
|
4965
5979
|
}
|
|
4966
5980
|
}
|
|
4967
5981
|
},
|
|
4968
5982
|
{
|
|
4969
|
-
"name": "
|
|
4970
|
-
"description": "v1.5 Increment 4b:
|
|
5983
|
+
"name": "besales_platform_pipeline_link",
|
|
5984
|
+
"description": "v1.5 Increment 4b: добавить активную воронку к платформе (local-only M:N junction, reversible audit). Scope: mcp:platform-setup.",
|
|
4971
5985
|
"inputSchema": {
|
|
4972
5986
|
"type": "object",
|
|
4973
5987
|
"required": [
|
|
4974
|
-
"
|
|
4975
|
-
"pipeline_id"
|
|
5988
|
+
"platform_id",
|
|
5989
|
+
"pipeline_id",
|
|
5990
|
+
"pipeline_crm_id"
|
|
4976
5991
|
],
|
|
4977
5992
|
"additionalProperties": false,
|
|
4978
5993
|
"properties": {
|
|
@@ -4980,25 +5995,33 @@
|
|
|
4980
5995
|
"type": "string",
|
|
4981
5996
|
"format": "uuid"
|
|
4982
5997
|
},
|
|
4983
|
-
"
|
|
5998
|
+
"platform_id": {
|
|
4984
5999
|
"type": "string",
|
|
4985
6000
|
"format": "uuid"
|
|
4986
6001
|
},
|
|
4987
6002
|
"pipeline_id": {
|
|
4988
6003
|
"type": "integer"
|
|
6004
|
+
},
|
|
6005
|
+
"pipeline_crm_id": {
|
|
6006
|
+
"type": "string",
|
|
6007
|
+
"format": "uuid"
|
|
6008
|
+
},
|
|
6009
|
+
"sort": {
|
|
6010
|
+
"type": "integer",
|
|
6011
|
+
"minimum": 0
|
|
4989
6012
|
}
|
|
4990
6013
|
}
|
|
4991
6014
|
}
|
|
4992
6015
|
},
|
|
4993
6016
|
{
|
|
4994
|
-
"name": "
|
|
4995
|
-
"description": "v1.5 Increment 4b:
|
|
6017
|
+
"name": "besales_platform_pipeline_unlink",
|
|
6018
|
+
"description": "v1.5 Increment 4b: удалить связь платформа↔воронка (local-only, reversible через besales_audit_revert с beforeSnapshot). Scope: mcp:platform-setup.",
|
|
4996
6019
|
"inputSchema": {
|
|
4997
6020
|
"type": "object",
|
|
4998
6021
|
"required": [
|
|
4999
|
-
"
|
|
5000
|
-
"
|
|
5001
|
-
"
|
|
6022
|
+
"platform_id",
|
|
6023
|
+
"platform_pipeline_id",
|
|
6024
|
+
"explicit_confirmation"
|
|
5002
6025
|
],
|
|
5003
6026
|
"additionalProperties": false,
|
|
5004
6027
|
"properties": {
|
|
@@ -5006,44 +6029,29 @@
|
|
|
5006
6029
|
"type": "string",
|
|
5007
6030
|
"format": "uuid"
|
|
5008
6031
|
},
|
|
5009
|
-
"
|
|
6032
|
+
"platform_id": {
|
|
5010
6033
|
"type": "string",
|
|
5011
6034
|
"format": "uuid"
|
|
5012
6035
|
},
|
|
5013
|
-
"
|
|
5014
|
-
"type": "string"
|
|
5015
|
-
|
|
5016
|
-
"sort": {
|
|
5017
|
-
"type": "integer"
|
|
5018
|
-
},
|
|
5019
|
-
"is_main": {
|
|
5020
|
-
"type": "boolean"
|
|
5021
|
-
},
|
|
5022
|
-
"is_unsorted_on": {
|
|
5023
|
-
"type": "boolean"
|
|
5024
|
-
},
|
|
5025
|
-
"is_active": {
|
|
5026
|
-
"type": "boolean"
|
|
5027
|
-
},
|
|
5028
|
-
"pipeline_id": {
|
|
5029
|
-
"type": "integer",
|
|
5030
|
-
"description": "Required для GetCourse (manual funnel_id); ignored для AmoCRM/Bitrix24"
|
|
6036
|
+
"platform_pipeline_id": {
|
|
6037
|
+
"type": "string",
|
|
6038
|
+
"format": "uuid"
|
|
5031
6039
|
},
|
|
5032
|
-
"
|
|
6040
|
+
"explicit_confirmation": {
|
|
5033
6041
|
"const": true
|
|
5034
6042
|
}
|
|
5035
6043
|
}
|
|
5036
6044
|
}
|
|
5037
6045
|
},
|
|
5038
6046
|
{
|
|
5039
|
-
"name": "
|
|
5040
|
-
"description": "v1.5 Increment
|
|
6047
|
+
"name": "besales_platform_clone_preview",
|
|
6048
|
+
"description": "v1.5 Increment 4d: build PreviewPlan (no writes) для cross-platform clone. Returns preview_token (Redis TTL 15 min) + summary{counts, totalEntities} + conflicts[] + warnings[]. Strict mode: блокирует unsafe fallback на 'any other platform' в PlatformCopyService. Hard cap 1000 entities. Scope: mcp:platform-setup.",
|
|
5041
6049
|
"inputSchema": {
|
|
5042
6050
|
"type": "object",
|
|
5043
6051
|
"required": [
|
|
5044
|
-
"
|
|
5045
|
-
"
|
|
5046
|
-
"
|
|
6052
|
+
"source_platform_id",
|
|
6053
|
+
"target_platform_id",
|
|
6054
|
+
"include"
|
|
5047
6055
|
],
|
|
5048
6056
|
"additionalProperties": false,
|
|
5049
6057
|
"properties": {
|
|
@@ -5051,44 +6059,75 @@
|
|
|
5051
6059
|
"type": "string",
|
|
5052
6060
|
"format": "uuid"
|
|
5053
6061
|
},
|
|
5054
|
-
"
|
|
6062
|
+
"source_platform_id": {
|
|
5055
6063
|
"type": "string",
|
|
5056
6064
|
"format": "uuid"
|
|
5057
6065
|
},
|
|
5058
|
-
"
|
|
5059
|
-
"type": "
|
|
5060
|
-
|
|
5061
|
-
"name": {
|
|
5062
|
-
"type": "string"
|
|
5063
|
-
},
|
|
5064
|
-
"sort": {
|
|
5065
|
-
"type": "integer"
|
|
5066
|
-
},
|
|
5067
|
-
"is_main": {
|
|
5068
|
-
"type": "boolean"
|
|
6066
|
+
"target_platform_id": {
|
|
6067
|
+
"type": "string",
|
|
6068
|
+
"format": "uuid"
|
|
5069
6069
|
},
|
|
5070
|
-
"
|
|
5071
|
-
"type": "
|
|
6070
|
+
"include": {
|
|
6071
|
+
"type": "object",
|
|
6072
|
+
"additionalProperties": false,
|
|
6073
|
+
"properties": {
|
|
6074
|
+
"agents": {
|
|
6075
|
+
"type": "boolean"
|
|
6076
|
+
},
|
|
6077
|
+
"agent_tools": {
|
|
6078
|
+
"type": "boolean"
|
|
6079
|
+
},
|
|
6080
|
+
"triggers": {
|
|
6081
|
+
"type": "boolean"
|
|
6082
|
+
},
|
|
6083
|
+
"behavior": {
|
|
6084
|
+
"type": "boolean"
|
|
6085
|
+
},
|
|
6086
|
+
"platform_settings": {
|
|
6087
|
+
"type": "boolean"
|
|
6088
|
+
},
|
|
6089
|
+
"pipeline_settings": {
|
|
6090
|
+
"type": "boolean"
|
|
6091
|
+
},
|
|
6092
|
+
"knowledge_space_links": {
|
|
6093
|
+
"type": "boolean"
|
|
6094
|
+
},
|
|
6095
|
+
"follow_up_sequences": {
|
|
6096
|
+
"type": "boolean"
|
|
6097
|
+
},
|
|
6098
|
+
"custom_variables": {
|
|
6099
|
+
"type": "boolean"
|
|
6100
|
+
}
|
|
6101
|
+
}
|
|
5072
6102
|
},
|
|
5073
|
-
"
|
|
5074
|
-
"type": "
|
|
6103
|
+
"conflict_mode": {
|
|
6104
|
+
"type": "string",
|
|
6105
|
+
"enum": [
|
|
6106
|
+
"reject",
|
|
6107
|
+
"merge",
|
|
6108
|
+
"overwrite"
|
|
6109
|
+
]
|
|
5075
6110
|
},
|
|
5076
|
-
"
|
|
5077
|
-
"
|
|
6111
|
+
"name_collision_strategy": {
|
|
6112
|
+
"type": "string",
|
|
6113
|
+
"enum": [
|
|
6114
|
+
"suffix",
|
|
6115
|
+
"keep"
|
|
6116
|
+
]
|
|
5078
6117
|
}
|
|
5079
6118
|
}
|
|
5080
6119
|
}
|
|
5081
6120
|
},
|
|
5082
6121
|
{
|
|
5083
|
-
"name": "
|
|
5084
|
-
"description": "v1.5 Increment
|
|
6122
|
+
"name": "besales_platform_clone_execute",
|
|
6123
|
+
"description": "v1.5 Increment 4d: execute clone replays PreviewPlan в Prisma transaction с pg_advisory_xact_lock на target_platform_id. Требует preview_token + explicit_confirmation=true. Когда conflict_mode=overwrite заменит существующие entities (preview.requires_destructive_ack=true) — обязателен ВТОРОЙ literal acknowledge_destructive_overwrite=true. Idempotency: same idempotency_key (24h) → cached result. Reversible через besales_audit_revert. Scope: mcp:platform-setup.",
|
|
5085
6124
|
"inputSchema": {
|
|
5086
6125
|
"type": "object",
|
|
5087
6126
|
"required": [
|
|
5088
|
-
"
|
|
5089
|
-
"
|
|
5090
|
-
"
|
|
5091
|
-
"
|
|
6127
|
+
"preview_token",
|
|
6128
|
+
"source_platform_id",
|
|
6129
|
+
"target_platform_id",
|
|
6130
|
+
"explicit_confirmation"
|
|
5092
6131
|
],
|
|
5093
6132
|
"additionalProperties": false,
|
|
5094
6133
|
"properties": {
|
|
@@ -5096,30 +6135,43 @@
|
|
|
5096
6135
|
"type": "string",
|
|
5097
6136
|
"format": "uuid"
|
|
5098
6137
|
},
|
|
5099
|
-
"
|
|
6138
|
+
"preview_token": {
|
|
5100
6139
|
"type": "string",
|
|
5101
6140
|
"format": "uuid"
|
|
5102
6141
|
},
|
|
5103
|
-
"
|
|
5104
|
-
"type": "
|
|
6142
|
+
"source_platform_id": {
|
|
6143
|
+
"type": "string",
|
|
6144
|
+
"format": "uuid"
|
|
6145
|
+
},
|
|
6146
|
+
"target_platform_id": {
|
|
6147
|
+
"type": "string",
|
|
6148
|
+
"format": "uuid"
|
|
5105
6149
|
},
|
|
5106
6150
|
"explicit_confirmation": {
|
|
5107
6151
|
"const": true
|
|
5108
6152
|
},
|
|
5109
|
-
"
|
|
6153
|
+
"acknowledge_destructive_overwrite": {
|
|
5110
6154
|
"const": true
|
|
6155
|
+
},
|
|
6156
|
+
"idempotency_key": {
|
|
6157
|
+
"type": "string",
|
|
6158
|
+
"minLength": 1,
|
|
6159
|
+
"maxLength": 255
|
|
6160
|
+
},
|
|
6161
|
+
"actor_note": {
|
|
6162
|
+
"type": "string",
|
|
6163
|
+
"maxLength": 2000
|
|
5111
6164
|
}
|
|
5112
6165
|
}
|
|
5113
6166
|
}
|
|
5114
6167
|
},
|
|
5115
6168
|
{
|
|
5116
|
-
"name": "
|
|
5117
|
-
"description": "v1.5 Increment
|
|
6169
|
+
"name": "besales_platform_clone_status",
|
|
6170
|
+
"description": "v1.5 Increment 4d: get CloneRun status by id (inspection). Returns { status, sourcePlatformId, targetPlatformId, createdAt, finishedAt, auditLogId, summary }. Scope: mcp:platform-setup.",
|
|
5118
6171
|
"inputSchema": {
|
|
5119
6172
|
"type": "object",
|
|
5120
6173
|
"required": [
|
|
5121
|
-
"
|
|
5122
|
-
"pipeline_id"
|
|
6174
|
+
"clone_id"
|
|
5123
6175
|
],
|
|
5124
6176
|
"additionalProperties": false,
|
|
5125
6177
|
"properties": {
|
|
@@ -5127,386 +6179,345 @@
|
|
|
5127
6179
|
"type": "string",
|
|
5128
6180
|
"format": "uuid"
|
|
5129
6181
|
},
|
|
5130
|
-
"
|
|
6182
|
+
"clone_id": {
|
|
5131
6183
|
"type": "string",
|
|
5132
6184
|
"format": "uuid"
|
|
5133
|
-
},
|
|
5134
|
-
"pipeline_id": {
|
|
5135
|
-
"type": "integer"
|
|
5136
6185
|
}
|
|
5137
6186
|
}
|
|
5138
6187
|
}
|
|
5139
6188
|
},
|
|
5140
6189
|
{
|
|
5141
|
-
"name": "
|
|
5142
|
-
"description": "v1.5 Increment
|
|
6190
|
+
"name": "besales_file_upload_request",
|
|
6191
|
+
"description": "v1.5 Increment 5a: создать upload-сессию (Setup URL pattern). Возвращает { upload_ref, upload_page_url, expires_at }. Файл НЕ передаётся через MCP — пользователь открывает upload_page_url в браузере и загружает файл (TTL 15 мин). Scope: mcp:platform-setup.",
|
|
5143
6192
|
"inputSchema": {
|
|
5144
6193
|
"type": "object",
|
|
5145
6194
|
"required": [
|
|
5146
|
-
"
|
|
5147
|
-
"pipeline_id",
|
|
5148
|
-
"name",
|
|
5149
|
-
"sort",
|
|
5150
|
-
"acknowledge_external_side_effect"
|
|
6195
|
+
"name"
|
|
5151
6196
|
],
|
|
5152
6197
|
"additionalProperties": false,
|
|
5153
6198
|
"properties": {
|
|
5154
6199
|
"workspace_id": {
|
|
5155
6200
|
"type": "string",
|
|
5156
|
-
"format": "uuid"
|
|
5157
|
-
|
|
5158
|
-
"crm_id": {
|
|
5159
|
-
"type": "string",
|
|
5160
|
-
"format": "uuid"
|
|
5161
|
-
},
|
|
5162
|
-
"pipeline_id": {
|
|
5163
|
-
"type": "integer"
|
|
6201
|
+
"format": "uuid",
|
|
6202
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5164
6203
|
},
|
|
5165
6204
|
"name": {
|
|
5166
|
-
"type": "string"
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
"
|
|
5170
|
-
},
|
|
5171
|
-
"color": {
|
|
5172
|
-
"type": "string"
|
|
5173
|
-
},
|
|
5174
|
-
"status_types": {
|
|
5175
|
-
"type": "array",
|
|
5176
|
-
"items": {
|
|
5177
|
-
"type": "string"
|
|
5178
|
-
}
|
|
5179
|
-
},
|
|
5180
|
-
"is_editable": {
|
|
5181
|
-
"type": "boolean"
|
|
6205
|
+
"type": "string",
|
|
6206
|
+
"minLength": 1,
|
|
6207
|
+
"maxLength": 255,
|
|
6208
|
+
"description": "Желаемое уникальное имя файла в workspace."
|
|
5182
6209
|
},
|
|
5183
|
-
"
|
|
5184
|
-
"type": "
|
|
6210
|
+
"file_type": {
|
|
6211
|
+
"type": "string",
|
|
6212
|
+
"enum": [
|
|
6213
|
+
"IMAGE",
|
|
6214
|
+
"DOCUMENT",
|
|
6215
|
+
"VIDEO",
|
|
6216
|
+
"AUDIO",
|
|
6217
|
+
"VOICE",
|
|
6218
|
+
"VIDEO_NOTE",
|
|
6219
|
+
"OTHER"
|
|
6220
|
+
]
|
|
5185
6221
|
},
|
|
5186
|
-
"
|
|
5187
|
-
"type": "
|
|
6222
|
+
"section_id": {
|
|
6223
|
+
"type": "string",
|
|
6224
|
+
"format": "uuid"
|
|
5188
6225
|
},
|
|
5189
|
-
"
|
|
5190
|
-
"type":
|
|
5191
|
-
|
|
5192
|
-
"
|
|
6226
|
+
"source": {
|
|
6227
|
+
"type": "string",
|
|
6228
|
+
"enum": [
|
|
6229
|
+
"USER_UPLOAD",
|
|
6230
|
+
"AGENT_GREETING",
|
|
6231
|
+
"CAMPAIGN",
|
|
6232
|
+
"CRM_IMPORT",
|
|
6233
|
+
"OTHER"
|
|
5193
6234
|
]
|
|
5194
6235
|
},
|
|
5195
|
-
"
|
|
5196
|
-
"type": "
|
|
5197
|
-
"
|
|
6236
|
+
"mime_type": {
|
|
6237
|
+
"type": "string",
|
|
6238
|
+
"maxLength": 255
|
|
5198
6239
|
},
|
|
5199
|
-
"
|
|
5200
|
-
"
|
|
6240
|
+
"size_bytes": {
|
|
6241
|
+
"type": "integer",
|
|
6242
|
+
"minimum": 1,
|
|
6243
|
+
"maximum": 41943040
|
|
5201
6244
|
}
|
|
5202
6245
|
}
|
|
5203
6246
|
}
|
|
5204
6247
|
},
|
|
5205
6248
|
{
|
|
5206
|
-
"name": "
|
|
5207
|
-
"description": "v1.5 Increment
|
|
6249
|
+
"name": "besales_file_upload_status",
|
|
6250
|
+
"description": "v1.5 Increment 5a: статус upload-сессии (polling по upload_ref). status: AWAITING_USER → VALIDATING → READY (stored_file_id готов) | VALIDATION_FAILED (error_message) | EXPIRED. Scope: mcp:platform-setup.",
|
|
5208
6251
|
"inputSchema": {
|
|
5209
6252
|
"type": "object",
|
|
5210
6253
|
"required": [
|
|
5211
|
-
"
|
|
5212
|
-
"pipeline_id",
|
|
5213
|
-
"status_id",
|
|
5214
|
-
"acknowledge_external_side_effect"
|
|
6254
|
+
"upload_ref"
|
|
5215
6255
|
],
|
|
5216
6256
|
"additionalProperties": false,
|
|
5217
6257
|
"properties": {
|
|
5218
6258
|
"workspace_id": {
|
|
5219
6259
|
"type": "string",
|
|
5220
|
-
"format": "uuid"
|
|
6260
|
+
"format": "uuid",
|
|
6261
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5221
6262
|
},
|
|
5222
|
-
"
|
|
6263
|
+
"upload_ref": {
|
|
5223
6264
|
"type": "string",
|
|
5224
|
-
"
|
|
5225
|
-
},
|
|
5226
|
-
"pipeline_id": {
|
|
5227
|
-
"type": "integer"
|
|
5228
|
-
},
|
|
5229
|
-
"status_id": {
|
|
5230
|
-
"type": "integer"
|
|
5231
|
-
},
|
|
5232
|
-
"name": {
|
|
5233
|
-
"type": "string"
|
|
5234
|
-
},
|
|
5235
|
-
"sort": {
|
|
5236
|
-
"type": "integer"
|
|
5237
|
-
},
|
|
5238
|
-
"color": {
|
|
5239
|
-
"type": "string"
|
|
5240
|
-
},
|
|
5241
|
-
"status_types": {
|
|
5242
|
-
"type": "array",
|
|
5243
|
-
"items": {
|
|
5244
|
-
"type": "string"
|
|
5245
|
-
}
|
|
5246
|
-
},
|
|
5247
|
-
"is_system_managed": {
|
|
5248
|
-
"type": "boolean",
|
|
5249
|
-
"description": "Главный переключатель управления статусом системой"
|
|
5250
|
-
},
|
|
5251
|
-
"is_editable": {
|
|
5252
|
-
"type": "boolean"
|
|
5253
|
-
},
|
|
5254
|
-
"is_bot_active": {
|
|
5255
|
-
"type": "boolean"
|
|
5256
|
-
},
|
|
5257
|
-
"is_operator_available": {
|
|
5258
|
-
"type": "boolean"
|
|
5259
|
-
},
|
|
5260
|
-
"on_message_received_move_to_status": {
|
|
5261
|
-
"type": [
|
|
5262
|
-
"integer",
|
|
5263
|
-
"null"
|
|
5264
|
-
]
|
|
5265
|
-
},
|
|
5266
|
-
"acknowledge_external_side_effect": {
|
|
5267
|
-
"const": true
|
|
6265
|
+
"minLength": 1
|
|
5268
6266
|
}
|
|
5269
6267
|
}
|
|
5270
6268
|
}
|
|
5271
6269
|
},
|
|
5272
6270
|
{
|
|
5273
|
-
"name": "
|
|
5274
|
-
"description": "v1.5 Increment
|
|
6271
|
+
"name": "besales_file_list",
|
|
6272
|
+
"description": "v1.5 Increment 5a: список файлов workspace (фильтры file_type/source/section_id + пагинация). Возвращает { files[], total }. Scope: mcp:platform-setup.",
|
|
5275
6273
|
"inputSchema": {
|
|
5276
6274
|
"type": "object",
|
|
5277
|
-
"required": [
|
|
5278
|
-
"crm_id",
|
|
5279
|
-
"pipeline_id",
|
|
5280
|
-
"status_id",
|
|
5281
|
-
"explicit_confirmation",
|
|
5282
|
-
"acknowledge_external_side_effect"
|
|
5283
|
-
],
|
|
6275
|
+
"required": [],
|
|
5284
6276
|
"additionalProperties": false,
|
|
5285
6277
|
"properties": {
|
|
5286
6278
|
"workspace_id": {
|
|
5287
6279
|
"type": "string",
|
|
5288
|
-
"format": "uuid"
|
|
6280
|
+
"format": "uuid",
|
|
6281
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5289
6282
|
},
|
|
5290
|
-
"
|
|
6283
|
+
"file_type": {
|
|
5291
6284
|
"type": "string",
|
|
5292
|
-
"
|
|
6285
|
+
"enum": [
|
|
6286
|
+
"IMAGE",
|
|
6287
|
+
"DOCUMENT",
|
|
6288
|
+
"VIDEO",
|
|
6289
|
+
"AUDIO",
|
|
6290
|
+
"VOICE",
|
|
6291
|
+
"VIDEO_NOTE",
|
|
6292
|
+
"OTHER"
|
|
6293
|
+
]
|
|
5293
6294
|
},
|
|
5294
|
-
"
|
|
5295
|
-
"type": "
|
|
6295
|
+
"source": {
|
|
6296
|
+
"type": "string",
|
|
6297
|
+
"enum": [
|
|
6298
|
+
"USER_UPLOAD",
|
|
6299
|
+
"AGENT_GREETING",
|
|
6300
|
+
"CAMPAIGN",
|
|
6301
|
+
"CRM_IMPORT",
|
|
6302
|
+
"OTHER"
|
|
6303
|
+
]
|
|
5296
6304
|
},
|
|
5297
|
-
"
|
|
5298
|
-
"type": "
|
|
6305
|
+
"section_id": {
|
|
6306
|
+
"type": "string"
|
|
5299
6307
|
},
|
|
5300
|
-
"
|
|
5301
|
-
"
|
|
6308
|
+
"limit": {
|
|
6309
|
+
"type": "integer",
|
|
6310
|
+
"minimum": 1,
|
|
6311
|
+
"maximum": 200
|
|
5302
6312
|
},
|
|
5303
|
-
"
|
|
5304
|
-
"
|
|
6313
|
+
"offset": {
|
|
6314
|
+
"type": "integer",
|
|
6315
|
+
"minimum": 0
|
|
5305
6316
|
}
|
|
5306
6317
|
}
|
|
5307
6318
|
}
|
|
5308
6319
|
},
|
|
5309
6320
|
{
|
|
5310
|
-
"name": "
|
|
5311
|
-
"description": "v1.5 Increment
|
|
6321
|
+
"name": "besales_platform_create_init",
|
|
6322
|
+
"description": "v1.5 Increment 5b: создать platform provisioning сессию (Setup URL pattern) для API-key канала. Секреты НЕ передаются через MCP — пользователь вводит их на setup_page_url. Возвращает { setup_ref, setup_page_url, expires_at, required_secret_fields }. OAuth-каналы (Instagram/Avito) — besales_platform_create_oauth_init; TelegramPersonal не поддержан. Scope: mcp:platform-setup.",
|
|
5312
6323
|
"inputSchema": {
|
|
5313
6324
|
"type": "object",
|
|
5314
6325
|
"required": [
|
|
5315
|
-
"
|
|
5316
|
-
"
|
|
5317
|
-
"pipeline_crm_id"
|
|
6326
|
+
"platform_type",
|
|
6327
|
+
"name"
|
|
5318
6328
|
],
|
|
5319
6329
|
"additionalProperties": false,
|
|
5320
6330
|
"properties": {
|
|
5321
6331
|
"workspace_id": {
|
|
5322
6332
|
"type": "string",
|
|
5323
|
-
"format": "uuid"
|
|
6333
|
+
"format": "uuid",
|
|
6334
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5324
6335
|
},
|
|
5325
|
-
"
|
|
6336
|
+
"platform_type": {
|
|
5326
6337
|
"type": "string",
|
|
5327
|
-
"
|
|
5328
|
-
|
|
5329
|
-
|
|
5330
|
-
|
|
6338
|
+
"enum": [
|
|
6339
|
+
"TelegramBot",
|
|
6340
|
+
"Wazzup",
|
|
6341
|
+
"Salebot",
|
|
6342
|
+
"SmsGorod",
|
|
6343
|
+
"VKon",
|
|
6344
|
+
"GetCourse",
|
|
6345
|
+
"WebWidget",
|
|
6346
|
+
"Bitrix24Bot"
|
|
6347
|
+
]
|
|
5331
6348
|
},
|
|
5332
|
-
"
|
|
6349
|
+
"name": {
|
|
5333
6350
|
"type": "string",
|
|
5334
|
-
"
|
|
6351
|
+
"minLength": 1,
|
|
6352
|
+
"maxLength": 255
|
|
5335
6353
|
},
|
|
5336
|
-
"
|
|
5337
|
-
"type": "
|
|
5338
|
-
"
|
|
6354
|
+
"fields": {
|
|
6355
|
+
"type": "object",
|
|
6356
|
+
"description": "Публичные non-secret поля канала (per-type allowlist; секреты — на setup-странице). Напр. Wazzup={wazzup_channel}, GetCourse={getcourse_account_domain,...}, Bitrix24Bot={bitrix24_bot_name}."
|
|
5339
6357
|
}
|
|
5340
6358
|
}
|
|
5341
6359
|
}
|
|
5342
6360
|
},
|
|
5343
6361
|
{
|
|
5344
|
-
"name": "
|
|
5345
|
-
"description": "v1.5 Increment
|
|
6362
|
+
"name": "besales_platform_create_status",
|
|
6363
|
+
"description": "v1.5 Increment 5b: статус platform provisioning сессии (polling по setup_ref; работает и для OAuth-сессий). status: AWAITING_USER → VALIDATING → READY (platform_id) | VALIDATION_FAILED (error_message) | EXPIRED. Scope: mcp:platform-setup.",
|
|
5346
6364
|
"inputSchema": {
|
|
5347
6365
|
"type": "object",
|
|
5348
6366
|
"required": [
|
|
5349
|
-
"
|
|
5350
|
-
"platform_pipeline_id",
|
|
5351
|
-
"explicit_confirmation"
|
|
6367
|
+
"setup_ref"
|
|
5352
6368
|
],
|
|
5353
6369
|
"additionalProperties": false,
|
|
5354
6370
|
"properties": {
|
|
5355
6371
|
"workspace_id": {
|
|
5356
6372
|
"type": "string",
|
|
5357
|
-
"format": "uuid"
|
|
5358
|
-
|
|
5359
|
-
"platform_id": {
|
|
5360
|
-
"type": "string",
|
|
5361
|
-
"format": "uuid"
|
|
6373
|
+
"format": "uuid",
|
|
6374
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5362
6375
|
},
|
|
5363
|
-
"
|
|
6376
|
+
"setup_ref": {
|
|
5364
6377
|
"type": "string",
|
|
5365
|
-
"
|
|
5366
|
-
},
|
|
5367
|
-
"explicit_confirmation": {
|
|
5368
|
-
"const": true
|
|
6378
|
+
"minLength": 1
|
|
5369
6379
|
}
|
|
5370
6380
|
}
|
|
5371
6381
|
}
|
|
5372
6382
|
},
|
|
5373
6383
|
{
|
|
5374
|
-
"name": "
|
|
5375
|
-
"description": "v1.5 Increment
|
|
6384
|
+
"name": "besales_platform_create_oauth_init",
|
|
6385
|
+
"description": "v1.5 Increment 5b Phase 2: создать OAuth provisioning сессию (Instagram/Avito) через Setup URL pattern. Возвращает { setup_ref, auth_url, expires_at } — пользователь открывает auth_url в браузере и авторизуется у провайдера; код авторизации НЕ проходит через MCP/LLM. Затем polling через besales_platform_create_status. Требует настроенного провайдер-приложения (Meta App / Avito app). Scope: mcp:platform-setup.",
|
|
5376
6386
|
"inputSchema": {
|
|
5377
6387
|
"type": "object",
|
|
5378
6388
|
"required": [
|
|
5379
|
-
"
|
|
5380
|
-
"target_platform_id",
|
|
5381
|
-
"include"
|
|
6389
|
+
"platform_type"
|
|
5382
6390
|
],
|
|
5383
6391
|
"additionalProperties": false,
|
|
5384
6392
|
"properties": {
|
|
5385
6393
|
"workspace_id": {
|
|
5386
6394
|
"type": "string",
|
|
5387
|
-
"format": "uuid"
|
|
6395
|
+
"format": "uuid",
|
|
6396
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5388
6397
|
},
|
|
5389
|
-
"
|
|
6398
|
+
"platform_type": {
|
|
5390
6399
|
"type": "string",
|
|
5391
|
-
"
|
|
6400
|
+
"enum": [
|
|
6401
|
+
"Instagram",
|
|
6402
|
+
"Avito"
|
|
6403
|
+
]
|
|
5392
6404
|
},
|
|
5393
|
-
"
|
|
6405
|
+
"name": {
|
|
5394
6406
|
"type": "string",
|
|
5395
|
-
"
|
|
5396
|
-
|
|
5397
|
-
|
|
5398
|
-
|
|
5399
|
-
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
"platform_settings": {
|
|
5414
|
-
"type": "boolean"
|
|
5415
|
-
},
|
|
5416
|
-
"pipeline_settings": {
|
|
5417
|
-
"type": "boolean"
|
|
5418
|
-
},
|
|
5419
|
-
"knowledge_space_links": {
|
|
5420
|
-
"type": "boolean"
|
|
5421
|
-
},
|
|
5422
|
-
"follow_up_sequences": {
|
|
5423
|
-
"type": "boolean"
|
|
5424
|
-
},
|
|
5425
|
-
"custom_variables": {
|
|
5426
|
-
"type": "boolean"
|
|
5427
|
-
}
|
|
5428
|
-
}
|
|
5429
|
-
},
|
|
5430
|
-
"conflict_mode": {
|
|
6407
|
+
"minLength": 1,
|
|
6408
|
+
"maxLength": 255,
|
|
6409
|
+
"description": "Опционально: канал обычно сам именует платформу из подключённого аккаунта."
|
|
6410
|
+
}
|
|
6411
|
+
}
|
|
6412
|
+
}
|
|
6413
|
+
},
|
|
6414
|
+
{
|
|
6415
|
+
"name": "besales_crm_create_init",
|
|
6416
|
+
"description": "v1.5 Increment 5c: создать CRM provisioning сессию (Setup URL pattern). И секреты, И несекретные поля (sub_domain/client_id/domain/account_domain/...) вводит ЧЕЛОВЕК на setup-странице, минуя чат — параметр fields опционален (только pre-fill). GETCOURSE/TELEGRAM (API-key) + AMOCRM/BITRIX24 (AmoCRM — долгосрочный токен; Bitrix24 далее завершает local-app install вебхуком). Возвращает { setup_ref, setup_page_url, expires_at, required_secret_fields, required_non_secret_fields }. Детали — besales://workflows/connect-crm-from-scratch. Scope: mcp:platform-setup.",
|
|
6417
|
+
"inputSchema": {
|
|
6418
|
+
"type": "object",
|
|
6419
|
+
"required": [
|
|
6420
|
+
"crm_type"
|
|
6421
|
+
],
|
|
6422
|
+
"additionalProperties": false,
|
|
6423
|
+
"properties": {
|
|
6424
|
+
"workspace_id": {
|
|
5431
6425
|
"type": "string",
|
|
5432
|
-
"
|
|
5433
|
-
|
|
5434
|
-
"merge",
|
|
5435
|
-
"overwrite"
|
|
5436
|
-
]
|
|
6426
|
+
"format": "uuid",
|
|
6427
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5437
6428
|
},
|
|
5438
|
-
"
|
|
6429
|
+
"crm_type": {
|
|
5439
6430
|
"type": "string",
|
|
5440
6431
|
"enum": [
|
|
5441
|
-
"
|
|
5442
|
-
"
|
|
6432
|
+
"GETCOURSE",
|
|
6433
|
+
"TELEGRAM",
|
|
6434
|
+
"AMOCRM",
|
|
6435
|
+
"BITRIX24"
|
|
5443
6436
|
]
|
|
6437
|
+
},
|
|
6438
|
+
"fields": {
|
|
6439
|
+
"type": "object",
|
|
6440
|
+
"description": "ОПЦИОНАЛЬНО (pre-fill). Несекретные поля можно НЕ передавать — человек введёт их на /setup/:ref вместе с секретами. Если передаёшь: GETCOURSE={account_domain, managed_tag_prefix?}; TELEGRAM={forum_group_id}; AMOCRM={sub_domain, client_id}; BITRIX24={domain, client_id}. Секреты — всегда на /setup/:ref, НЕ здесь."
|
|
5444
6441
|
}
|
|
5445
6442
|
}
|
|
5446
6443
|
}
|
|
5447
6444
|
},
|
|
5448
6445
|
{
|
|
5449
|
-
"name": "
|
|
5450
|
-
"description": "v1.5 Increment
|
|
6446
|
+
"name": "besales_crm_create_status",
|
|
6447
|
+
"description": "v1.5 Increment 5c: статус CRM provisioning сессии (polling по setup_ref). status: AWAITING_USER → VALIDATING → READY (crm_id) | VALIDATION_FAILED | EXPIRED. AmoCRM на READY авто-активируется, если это единственная CRM workspace (иначе inactive → besales_crm_activate). Scope: mcp:platform-setup.",
|
|
5451
6448
|
"inputSchema": {
|
|
5452
6449
|
"type": "object",
|
|
5453
6450
|
"required": [
|
|
5454
|
-
"
|
|
5455
|
-
"source_platform_id",
|
|
5456
|
-
"target_platform_id",
|
|
5457
|
-
"explicit_confirmation"
|
|
6451
|
+
"setup_ref"
|
|
5458
6452
|
],
|
|
5459
6453
|
"additionalProperties": false,
|
|
5460
6454
|
"properties": {
|
|
5461
6455
|
"workspace_id": {
|
|
5462
6456
|
"type": "string",
|
|
5463
|
-
"format": "uuid"
|
|
6457
|
+
"format": "uuid",
|
|
6458
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5464
6459
|
},
|
|
5465
|
-
"
|
|
6460
|
+
"setup_ref": {
|
|
5466
6461
|
"type": "string",
|
|
5467
|
-
"
|
|
5468
|
-
}
|
|
5469
|
-
|
|
6462
|
+
"minLength": 1
|
|
6463
|
+
}
|
|
6464
|
+
}
|
|
6465
|
+
}
|
|
6466
|
+
},
|
|
6467
|
+
{
|
|
6468
|
+
"name": "besales_crm_activate",
|
|
6469
|
+
"description": "Increment #3: активировать CRM (live-проверка токена + деактивация остальных CRM workspace + включение связанных триггеров). Активна одна CRM на workspace за раз — используй для переключения активной CRM или повторной активации после авто-отключения по 401. Битый/просроченный токен → ошибка активации. Scope: mcp:platform-setup.",
|
|
6470
|
+
"inputSchema": {
|
|
6471
|
+
"type": "object",
|
|
6472
|
+
"required": [
|
|
6473
|
+
"crm_id"
|
|
6474
|
+
],
|
|
6475
|
+
"additionalProperties": false,
|
|
6476
|
+
"properties": {
|
|
6477
|
+
"workspace_id": {
|
|
5470
6478
|
"type": "string",
|
|
5471
|
-
"format": "uuid"
|
|
6479
|
+
"format": "uuid",
|
|
6480
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5472
6481
|
},
|
|
5473
|
-
"
|
|
6482
|
+
"crm_id": {
|
|
5474
6483
|
"type": "string",
|
|
5475
6484
|
"format": "uuid"
|
|
5476
|
-
}
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
"
|
|
6485
|
+
}
|
|
6486
|
+
}
|
|
6487
|
+
}
|
|
6488
|
+
},
|
|
6489
|
+
{
|
|
6490
|
+
"name": "besales_crm_list",
|
|
6491
|
+
"description": "Список CRM workspace: id, type, status (active/inactive), is_active, account (поддомен AmoCRM / домен Bitrix24 / GetCourse), created_at. Пустой список → CRM не подключена (besales_crm_create_init). is_active=false → CRM есть, но не активна (besales_crm_activate) — объясняет, почему pipelines/field-mapping/operators могут не отвечать. Scope: mcp:platform-setup.",
|
|
6492
|
+
"inputSchema": {
|
|
6493
|
+
"type": "object",
|
|
6494
|
+
"required": [],
|
|
6495
|
+
"additionalProperties": false,
|
|
6496
|
+
"properties": {
|
|
6497
|
+
"workspace_id": {
|
|
5489
6498
|
"type": "string",
|
|
5490
|
-
"
|
|
6499
|
+
"format": "uuid",
|
|
6500
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5491
6501
|
}
|
|
5492
6502
|
}
|
|
5493
6503
|
}
|
|
5494
6504
|
},
|
|
5495
6505
|
{
|
|
5496
|
-
"name": "
|
|
5497
|
-
"description": "v1.5 Increment
|
|
6506
|
+
"name": "besales_crm_field_mapping_get",
|
|
6507
|
+
"description": "v1.5 Increment 5c: текущий маппинг полей CRM + доступные поля. Только AmoCRM/Bitrix24 (иначе unsupported_reason). Scope: mcp:platform-setup.",
|
|
5498
6508
|
"inputSchema": {
|
|
5499
6509
|
"type": "object",
|
|
5500
6510
|
"required": [
|
|
5501
|
-
"
|
|
6511
|
+
"crm_id"
|
|
5502
6512
|
],
|
|
5503
6513
|
"additionalProperties": false,
|
|
5504
6514
|
"properties": {
|
|
5505
6515
|
"workspace_id": {
|
|
5506
6516
|
"type": "string",
|
|
5507
|
-
"format": "uuid"
|
|
6517
|
+
"format": "uuid",
|
|
6518
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5508
6519
|
},
|
|
5509
|
-
"
|
|
6520
|
+
"crm_id": {
|
|
5510
6521
|
"type": "string",
|
|
5511
6522
|
"format": "uuid"
|
|
5512
6523
|
}
|
|
@@ -5514,12 +6525,15 @@
|
|
|
5514
6525
|
}
|
|
5515
6526
|
},
|
|
5516
6527
|
{
|
|
5517
|
-
"name": "
|
|
5518
|
-
"description": "v1.5 Increment
|
|
6528
|
+
"name": "besales_crm_field_mapping_upsert",
|
|
6529
|
+
"description": "v1.5 Increment 5c: заменить маппинг полей CRM (replace-all semantics — передаётся весь набор). Только AmoCRM/Bitrix24 (иначе unsupported_reason). Scope: mcp:platform-setup.",
|
|
5519
6530
|
"inputSchema": {
|
|
5520
6531
|
"type": "object",
|
|
5521
6532
|
"required": [
|
|
5522
|
-
"
|
|
6533
|
+
"crm_id",
|
|
6534
|
+
"replace_all_existing",
|
|
6535
|
+
"enabled",
|
|
6536
|
+
"field_mappings"
|
|
5523
6537
|
],
|
|
5524
6538
|
"additionalProperties": false,
|
|
5525
6539
|
"properties": {
|
|
@@ -5528,57 +6542,68 @@
|
|
|
5528
6542
|
"format": "uuid",
|
|
5529
6543
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5530
6544
|
},
|
|
5531
|
-
"
|
|
5532
|
-
"type": "string",
|
|
5533
|
-
"minLength": 1,
|
|
5534
|
-
"maxLength": 255,
|
|
5535
|
-
"description": "Желаемое уникальное имя файла в workspace."
|
|
5536
|
-
},
|
|
5537
|
-
"file_type": {
|
|
5538
|
-
"type": "string",
|
|
5539
|
-
"enum": [
|
|
5540
|
-
"IMAGE",
|
|
5541
|
-
"DOCUMENT",
|
|
5542
|
-
"VIDEO",
|
|
5543
|
-
"AUDIO",
|
|
5544
|
-
"VOICE",
|
|
5545
|
-
"VIDEO_NOTE",
|
|
5546
|
-
"OTHER"
|
|
5547
|
-
]
|
|
5548
|
-
},
|
|
5549
|
-
"section_id": {
|
|
6545
|
+
"crm_id": {
|
|
5550
6546
|
"type": "string",
|
|
5551
6547
|
"format": "uuid"
|
|
5552
6548
|
},
|
|
5553
|
-
"
|
|
5554
|
-
"
|
|
5555
|
-
"enum": [
|
|
5556
|
-
"USER_UPLOAD",
|
|
5557
|
-
"AGENT_GREETING",
|
|
5558
|
-
"CAMPAIGN",
|
|
5559
|
-
"CRM_IMPORT",
|
|
5560
|
-
"OTHER"
|
|
5561
|
-
]
|
|
6549
|
+
"replace_all_existing": {
|
|
6550
|
+
"const": true
|
|
5562
6551
|
},
|
|
5563
|
-
"
|
|
5564
|
-
"type": "
|
|
5565
|
-
"maxLength": 255
|
|
6552
|
+
"enabled": {
|
|
6553
|
+
"type": "boolean"
|
|
5566
6554
|
},
|
|
5567
|
-
"
|
|
5568
|
-
"type": "
|
|
5569
|
-
"
|
|
5570
|
-
|
|
6555
|
+
"field_mappings": {
|
|
6556
|
+
"type": "array",
|
|
6557
|
+
"items": {
|
|
6558
|
+
"type": "object",
|
|
6559
|
+
"additionalProperties": false,
|
|
6560
|
+
"required": [
|
|
6561
|
+
"crm_field_id",
|
|
6562
|
+
"save_as",
|
|
6563
|
+
"enabled"
|
|
6564
|
+
],
|
|
6565
|
+
"properties": {
|
|
6566
|
+
"crm_field_id": {
|
|
6567
|
+
"type": "string",
|
|
6568
|
+
"minLength": 1
|
|
6569
|
+
},
|
|
6570
|
+
"crm_field_name": {
|
|
6571
|
+
"type": "string"
|
|
6572
|
+
},
|
|
6573
|
+
"save_as": {
|
|
6574
|
+
"type": "string",
|
|
6575
|
+
"minLength": 1
|
|
6576
|
+
},
|
|
6577
|
+
"enabled": {
|
|
6578
|
+
"type": "boolean"
|
|
6579
|
+
},
|
|
6580
|
+
"special_purpose": {
|
|
6581
|
+
"type": "string",
|
|
6582
|
+
"enum": [
|
|
6583
|
+
"phone",
|
|
6584
|
+
"telegramId",
|
|
6585
|
+
"username",
|
|
6586
|
+
"avitoId",
|
|
6587
|
+
"instagramId",
|
|
6588
|
+
"vkonId"
|
|
6589
|
+
]
|
|
6590
|
+
},
|
|
6591
|
+
"category": {
|
|
6592
|
+
"type": "string"
|
|
6593
|
+
}
|
|
6594
|
+
}
|
|
6595
|
+
}
|
|
5571
6596
|
}
|
|
5572
6597
|
}
|
|
5573
6598
|
}
|
|
5574
6599
|
},
|
|
5575
6600
|
{
|
|
5576
|
-
"name": "
|
|
5577
|
-
"description": "v1.5 Increment
|
|
6601
|
+
"name": "besales_crm_operator_list",
|
|
6602
|
+
"description": "v1.5 Increment 5c: список операторов CRM (для assignee-стратегий PipelineSettings). Только AmoCRM/Bitrix24 (иначе unsupported_reason). sync=true пересинхронизирует. Scope: mcp:platform-setup.",
|
|
5578
6603
|
"inputSchema": {
|
|
5579
6604
|
"type": "object",
|
|
5580
6605
|
"required": [
|
|
5581
|
-
"
|
|
6606
|
+
"crm_id"
|
|
5582
6607
|
],
|
|
5583
6608
|
"additionalProperties": false,
|
|
5584
6609
|
"properties": {
|
|
@@ -5587,19 +6612,25 @@
|
|
|
5587
6612
|
"format": "uuid",
|
|
5588
6613
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5589
6614
|
},
|
|
5590
|
-
"
|
|
6615
|
+
"crm_id": {
|
|
5591
6616
|
"type": "string",
|
|
5592
|
-
"
|
|
6617
|
+
"format": "uuid"
|
|
6618
|
+
},
|
|
6619
|
+
"sync": {
|
|
6620
|
+
"type": "boolean"
|
|
5593
6621
|
}
|
|
5594
6622
|
}
|
|
5595
6623
|
}
|
|
5596
6624
|
},
|
|
5597
6625
|
{
|
|
5598
|
-
"name": "
|
|
5599
|
-
"description": "v1.5 Increment
|
|
6626
|
+
"name": "besales_crm_operator_update",
|
|
6627
|
+
"description": "v1.5 Increment 5c: вкл/выкл роли конкретного оператора CRM (is_operator — assignee диалогов, и/или is_sdr). Передаётся хотя бы один флаг; не указанный сохраняет текущее значение. Только AmoCRM/Bitrix24 (иначе unsupported_reason). Scope: mcp:platform-setup.",
|
|
5600
6628
|
"inputSchema": {
|
|
5601
6629
|
"type": "object",
|
|
5602
|
-
"required": [
|
|
6630
|
+
"required": [
|
|
6631
|
+
"crm_id",
|
|
6632
|
+
"operator_id"
|
|
6633
|
+
],
|
|
5603
6634
|
"additionalProperties": false,
|
|
5604
6635
|
"properties": {
|
|
5605
6636
|
"workspace_id": {
|
|
@@ -5607,51 +6638,30 @@
|
|
|
5607
6638
|
"format": "uuid",
|
|
5608
6639
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5609
6640
|
},
|
|
5610
|
-
"
|
|
6641
|
+
"crm_id": {
|
|
5611
6642
|
"type": "string",
|
|
5612
|
-
"
|
|
5613
|
-
"IMAGE",
|
|
5614
|
-
"DOCUMENT",
|
|
5615
|
-
"VIDEO",
|
|
5616
|
-
"AUDIO",
|
|
5617
|
-
"VOICE",
|
|
5618
|
-
"VIDEO_NOTE",
|
|
5619
|
-
"OTHER"
|
|
5620
|
-
]
|
|
6643
|
+
"format": "uuid"
|
|
5621
6644
|
},
|
|
5622
|
-
"
|
|
6645
|
+
"operator_id": {
|
|
5623
6646
|
"type": "string",
|
|
5624
|
-
"
|
|
5625
|
-
"USER_UPLOAD",
|
|
5626
|
-
"AGENT_GREETING",
|
|
5627
|
-
"CAMPAIGN",
|
|
5628
|
-
"CRM_IMPORT",
|
|
5629
|
-
"OTHER"
|
|
5630
|
-
]
|
|
5631
|
-
},
|
|
5632
|
-
"section_id": {
|
|
5633
|
-
"type": "string"
|
|
6647
|
+
"format": "uuid"
|
|
5634
6648
|
},
|
|
5635
|
-
"
|
|
5636
|
-
"type": "
|
|
5637
|
-
"minimum": 1,
|
|
5638
|
-
"maximum": 200
|
|
6649
|
+
"is_operator": {
|
|
6650
|
+
"type": "boolean"
|
|
5639
6651
|
},
|
|
5640
|
-
"
|
|
5641
|
-
"type": "
|
|
5642
|
-
"minimum": 0
|
|
6652
|
+
"is_sdr": {
|
|
6653
|
+
"type": "boolean"
|
|
5643
6654
|
}
|
|
5644
6655
|
}
|
|
5645
6656
|
}
|
|
5646
6657
|
},
|
|
5647
6658
|
{
|
|
5648
|
-
"name": "
|
|
5649
|
-
"description": "v1.5 Increment
|
|
6659
|
+
"name": "besales_datasource_create_init",
|
|
6660
|
+
"description": "v1.5 Increment 4f: создать data-source (1С) provisioning-сессию (Setup URL pattern). Пароль OData и несекретные поля (name/base_url/username/proxy_url?) вводит ЧЕЛОВЕК на /setup/:ref, минуя чат — fields опционален (pre-fill). Возвращает { setup_ref, setup_page_url, expires_at, required_secret_fields, required_non_secret_fields }. 1С — товарная БД (категория «БД»), доступ через OData; читает/пишет агент через ДЕЙСТВИЯ ТРИГГЕРОВ, не через tools. Scope: mcp:platform-setup.",
|
|
5650
6661
|
"inputSchema": {
|
|
5651
6662
|
"type": "object",
|
|
5652
6663
|
"required": [
|
|
5653
|
-
"
|
|
5654
|
-
"name"
|
|
6664
|
+
"data_source_type"
|
|
5655
6665
|
],
|
|
5656
6666
|
"additionalProperties": false,
|
|
5657
6667
|
"properties": {
|
|
@@ -5660,34 +6670,22 @@
|
|
|
5660
6670
|
"format": "uuid",
|
|
5661
6671
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5662
6672
|
},
|
|
5663
|
-
"
|
|
6673
|
+
"data_source_type": {
|
|
5664
6674
|
"type": "string",
|
|
5665
6675
|
"enum": [
|
|
5666
|
-
"
|
|
5667
|
-
"Wazzup",
|
|
5668
|
-
"Salebot",
|
|
5669
|
-
"SmsGorod",
|
|
5670
|
-
"VKon",
|
|
5671
|
-
"GetCourse",
|
|
5672
|
-
"WebWidget",
|
|
5673
|
-
"Bitrix24Bot"
|
|
6676
|
+
"ONE_C"
|
|
5674
6677
|
]
|
|
5675
6678
|
},
|
|
5676
|
-
"name": {
|
|
5677
|
-
"type": "string",
|
|
5678
|
-
"minLength": 1,
|
|
5679
|
-
"maxLength": 255
|
|
5680
|
-
},
|
|
5681
6679
|
"fields": {
|
|
5682
6680
|
"type": "object",
|
|
5683
|
-
"description": "
|
|
6681
|
+
"description": "ОПЦИОНАЛЬНО (pre-fill). Несекретные поля можно НЕ передавать — человек введёт на /setup/:ref вместе с паролем. Если передаёшь: { name, base_url, username, proxy_url? }. Пароль — всегда на /setup/:ref, НЕ здесь."
|
|
5684
6682
|
}
|
|
5685
6683
|
}
|
|
5686
6684
|
}
|
|
5687
6685
|
},
|
|
5688
6686
|
{
|
|
5689
|
-
"name": "
|
|
5690
|
-
"description": "v1.5 Increment
|
|
6687
|
+
"name": "besales_datasource_create_status",
|
|
6688
|
+
"description": "v1.5 Increment 4f: статус data-source provisioning-сессии по setup_ref. AWAITING_USER → VALIDATING → READY (data_source_id) | VALIDATION_FAILED (error_message) | EXPIRED. Scope: mcp:platform-setup.",
|
|
5691
6689
|
"inputSchema": {
|
|
5692
6690
|
"type": "object",
|
|
5693
6691
|
"required": [
|
|
@@ -5702,49 +6700,34 @@
|
|
|
5702
6700
|
},
|
|
5703
6701
|
"setup_ref": {
|
|
5704
6702
|
"type": "string",
|
|
5705
|
-
"
|
|
6703
|
+
"description": "Идентификатор сессии из besales_datasource_create_init."
|
|
5706
6704
|
}
|
|
5707
6705
|
}
|
|
5708
6706
|
}
|
|
5709
6707
|
},
|
|
5710
6708
|
{
|
|
5711
|
-
"name": "
|
|
5712
|
-
"description": "v1.5 Increment
|
|
6709
|
+
"name": "besales_datasource_list",
|
|
6710
|
+
"description": "v1.5 Increment 4f: список подключений data-source (1С) воркспейса: id, type, name, status (ACTIVE/ERROR/INACTIVE), enabled, base_url. Read-only. Scope: mcp:platform-setup.",
|
|
5713
6711
|
"inputSchema": {
|
|
5714
6712
|
"type": "object",
|
|
5715
|
-
"required": [
|
|
5716
|
-
"platform_type"
|
|
5717
|
-
],
|
|
6713
|
+
"required": [],
|
|
5718
6714
|
"additionalProperties": false,
|
|
5719
6715
|
"properties": {
|
|
5720
6716
|
"workspace_id": {
|
|
5721
6717
|
"type": "string",
|
|
5722
6718
|
"format": "uuid",
|
|
5723
6719
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5724
|
-
},
|
|
5725
|
-
"platform_type": {
|
|
5726
|
-
"type": "string",
|
|
5727
|
-
"enum": [
|
|
5728
|
-
"Instagram",
|
|
5729
|
-
"Avito"
|
|
5730
|
-
]
|
|
5731
|
-
},
|
|
5732
|
-
"name": {
|
|
5733
|
-
"type": "string",
|
|
5734
|
-
"minLength": 1,
|
|
5735
|
-
"maxLength": 255,
|
|
5736
|
-
"description": "Опционально: канал обычно сам именует платформу из подключённого аккаунта."
|
|
5737
6720
|
}
|
|
5738
6721
|
}
|
|
5739
6722
|
}
|
|
5740
6723
|
},
|
|
5741
6724
|
{
|
|
5742
|
-
"name": "
|
|
5743
|
-
"description": "v1.5 Increment
|
|
6725
|
+
"name": "besales_datasource_health",
|
|
6726
|
+
"description": "v1.5 Increment 4f: live health-check подключения 1С (ok=true → OData отвечает, статус → ACTIVE). Scope: mcp:platform-setup.",
|
|
5744
6727
|
"inputSchema": {
|
|
5745
6728
|
"type": "object",
|
|
5746
6729
|
"required": [
|
|
5747
|
-
"
|
|
6730
|
+
"data_source_id"
|
|
5748
6731
|
],
|
|
5749
6732
|
"additionalProperties": false,
|
|
5750
6733
|
"properties": {
|
|
@@ -5753,29 +6736,20 @@
|
|
|
5753
6736
|
"format": "uuid",
|
|
5754
6737
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5755
6738
|
},
|
|
5756
|
-
"
|
|
6739
|
+
"data_source_id": {
|
|
5757
6740
|
"type": "string",
|
|
5758
|
-
"
|
|
5759
|
-
"GETCOURSE",
|
|
5760
|
-
"TELEGRAM",
|
|
5761
|
-
"AMOCRM",
|
|
5762
|
-
"BITRIX24"
|
|
5763
|
-
]
|
|
5764
|
-
},
|
|
5765
|
-
"fields": {
|
|
5766
|
-
"type": "object",
|
|
5767
|
-
"description": "ОПЦИОНАЛЬНО (pre-fill). Несекретные поля можно НЕ передавать — человек введёт их на /setup/:ref вместе с секретами. Если передаёшь: GETCOURSE={account_domain, managed_tag_prefix?}; TELEGRAM={forum_group_id}; AMOCRM={sub_domain, client_id}; BITRIX24={domain, client_id}. Секреты — всегда на /setup/:ref, НЕ здесь."
|
|
6741
|
+
"format": "uuid"
|
|
5768
6742
|
}
|
|
5769
6743
|
}
|
|
5770
6744
|
}
|
|
5771
6745
|
},
|
|
5772
6746
|
{
|
|
5773
|
-
"name": "
|
|
5774
|
-
"description": "v1.5 Increment
|
|
6747
|
+
"name": "besales_datasource_catalogs",
|
|
6748
|
+
"description": "v1.5 Increment 4f: объекты 1С из $metadata (external_code, display_name, kind: catalog/document/register) для назначения ролей. Scope: mcp:platform-setup.",
|
|
5775
6749
|
"inputSchema": {
|
|
5776
6750
|
"type": "object",
|
|
5777
6751
|
"required": [
|
|
5778
|
-
"
|
|
6752
|
+
"data_source_id"
|
|
5779
6753
|
],
|
|
5780
6754
|
"additionalProperties": false,
|
|
5781
6755
|
"properties": {
|
|
@@ -5784,20 +6758,20 @@
|
|
|
5784
6758
|
"format": "uuid",
|
|
5785
6759
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5786
6760
|
},
|
|
5787
|
-
"
|
|
6761
|
+
"data_source_id": {
|
|
5788
6762
|
"type": "string",
|
|
5789
|
-
"
|
|
6763
|
+
"format": "uuid"
|
|
5790
6764
|
}
|
|
5791
6765
|
}
|
|
5792
6766
|
}
|
|
5793
6767
|
},
|
|
5794
6768
|
{
|
|
5795
|
-
"name": "
|
|
5796
|
-
"description": "Increment
|
|
6769
|
+
"name": "besales_datasource_catalog_roles",
|
|
6770
|
+
"description": "v1.5 Increment 4f: назначенные роли объектов 1С + флаг vectorized (включена ли векторизация каталога товаров). Read-only. Scope: mcp:platform-setup.",
|
|
5797
6771
|
"inputSchema": {
|
|
5798
6772
|
"type": "object",
|
|
5799
6773
|
"required": [
|
|
5800
|
-
"
|
|
6774
|
+
"data_source_id"
|
|
5801
6775
|
],
|
|
5802
6776
|
"additionalProperties": false,
|
|
5803
6777
|
"properties": {
|
|
@@ -5806,7 +6780,7 @@
|
|
|
5806
6780
|
"format": "uuid",
|
|
5807
6781
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5808
6782
|
},
|
|
5809
|
-
"
|
|
6783
|
+
"data_source_id": {
|
|
5810
6784
|
"type": "string",
|
|
5811
6785
|
"format": "uuid"
|
|
5812
6786
|
}
|
|
@@ -5814,28 +6788,60 @@
|
|
|
5814
6788
|
}
|
|
5815
6789
|
},
|
|
5816
6790
|
{
|
|
5817
|
-
"name": "
|
|
5818
|
-
"description": "
|
|
6791
|
+
"name": "besales_datasource_role_assign",
|
|
6792
|
+
"description": "v1.5 Increment 4f: назначить роль объекту 1С (one-role-per-object: прежние роли объекта снимаются). PRODUCT_CATALOG — товары; STOCK/PRICE — регистры остатков/цен (metadata.register.virtualTable=Balance/SliceLast); ORDER/CUSTOMER/OTHER. Scope: mcp:platform-setup.",
|
|
5819
6793
|
"inputSchema": {
|
|
5820
6794
|
"type": "object",
|
|
5821
|
-
"required": [
|
|
6795
|
+
"required": [
|
|
6796
|
+
"data_source_id",
|
|
6797
|
+
"role",
|
|
6798
|
+
"external_code",
|
|
6799
|
+
"display_name"
|
|
6800
|
+
],
|
|
5822
6801
|
"additionalProperties": false,
|
|
5823
6802
|
"properties": {
|
|
5824
6803
|
"workspace_id": {
|
|
5825
6804
|
"type": "string",
|
|
5826
6805
|
"format": "uuid",
|
|
5827
6806
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
6807
|
+
},
|
|
6808
|
+
"data_source_id": {
|
|
6809
|
+
"type": "string",
|
|
6810
|
+
"format": "uuid"
|
|
6811
|
+
},
|
|
6812
|
+
"role": {
|
|
6813
|
+
"type": "string",
|
|
6814
|
+
"enum": [
|
|
6815
|
+
"PRODUCT_CATALOG",
|
|
6816
|
+
"STOCK",
|
|
6817
|
+
"PRICE",
|
|
6818
|
+
"ORDER",
|
|
6819
|
+
"CUSTOMER",
|
|
6820
|
+
"OTHER"
|
|
6821
|
+
]
|
|
6822
|
+
},
|
|
6823
|
+
"external_code": {
|
|
6824
|
+
"type": "string",
|
|
6825
|
+
"description": "external_code объекта из besales_datasource_catalogs."
|
|
6826
|
+
},
|
|
6827
|
+
"display_name": {
|
|
6828
|
+
"type": "string"
|
|
6829
|
+
},
|
|
6830
|
+
"metadata": {
|
|
6831
|
+
"type": "object",
|
|
6832
|
+
"description": "Опц. Для регистров STOCK/PRICE: { register: { virtualTable: \"Balance\" | \"SliceLast\" } }."
|
|
5828
6833
|
}
|
|
5829
6834
|
}
|
|
5830
6835
|
}
|
|
5831
6836
|
},
|
|
5832
6837
|
{
|
|
5833
|
-
"name": "
|
|
5834
|
-
"description": "v1.5 Increment
|
|
6838
|
+
"name": "besales_datasource_enable",
|
|
6839
|
+
"description": "v1.5 Increment 4f: вкл/выкл подключение 1С (намерение). Выключенное НЕ используется действиями триггеров, даже если OData доступна. Scope: mcp:platform-setup.",
|
|
5835
6840
|
"inputSchema": {
|
|
5836
6841
|
"type": "object",
|
|
5837
6842
|
"required": [
|
|
5838
|
-
"
|
|
6843
|
+
"data_source_id",
|
|
6844
|
+
"enabled"
|
|
5839
6845
|
],
|
|
5840
6846
|
"additionalProperties": false,
|
|
5841
6847
|
"properties": {
|
|
@@ -5844,23 +6850,25 @@
|
|
|
5844
6850
|
"format": "uuid",
|
|
5845
6851
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5846
6852
|
},
|
|
5847
|
-
"
|
|
6853
|
+
"data_source_id": {
|
|
5848
6854
|
"type": "string",
|
|
5849
6855
|
"format": "uuid"
|
|
6856
|
+
},
|
|
6857
|
+
"enabled": {
|
|
6858
|
+
"type": "boolean"
|
|
5850
6859
|
}
|
|
5851
6860
|
}
|
|
5852
6861
|
}
|
|
5853
6862
|
},
|
|
5854
6863
|
{
|
|
5855
|
-
"name": "
|
|
5856
|
-
"description": "v1.5 Increment
|
|
6864
|
+
"name": "besales_datasource_vectorize",
|
|
6865
|
+
"description": "v1.5 Increment 4f: вкл/выкл семантический поиск по каталогу товаров 1С (роль PRODUCT_CATALOG): вкл → синк в Pinecone; выкл → удаление векторов. Требует объект с ролью PRODUCT_CATALOG + ACTIVE-подключение. Scope: mcp:platform-setup.",
|
|
5857
6866
|
"inputSchema": {
|
|
5858
6867
|
"type": "object",
|
|
5859
6868
|
"required": [
|
|
5860
|
-
"
|
|
5861
|
-
"
|
|
5862
|
-
"enabled"
|
|
5863
|
-
"field_mappings"
|
|
6869
|
+
"data_source_id",
|
|
6870
|
+
"catalog_external_code",
|
|
6871
|
+
"enabled"
|
|
5864
6872
|
],
|
|
5865
6873
|
"additionalProperties": false,
|
|
5866
6874
|
"properties": {
|
|
@@ -5869,154 +6877,192 @@
|
|
|
5869
6877
|
"format": "uuid",
|
|
5870
6878
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5871
6879
|
},
|
|
5872
|
-
"
|
|
6880
|
+
"data_source_id": {
|
|
5873
6881
|
"type": "string",
|
|
5874
6882
|
"format": "uuid"
|
|
5875
6883
|
},
|
|
5876
|
-
"
|
|
5877
|
-
"
|
|
6884
|
+
"catalog_external_code": {
|
|
6885
|
+
"type": "string"
|
|
5878
6886
|
},
|
|
5879
6887
|
"enabled": {
|
|
5880
6888
|
"type": "boolean"
|
|
5881
6889
|
},
|
|
5882
|
-
"
|
|
5883
|
-
"type": "
|
|
5884
|
-
"
|
|
5885
|
-
"type": "object",
|
|
5886
|
-
"additionalProperties": false,
|
|
5887
|
-
"required": [
|
|
5888
|
-
"crm_field_id",
|
|
5889
|
-
"save_as",
|
|
5890
|
-
"enabled"
|
|
5891
|
-
],
|
|
5892
|
-
"properties": {
|
|
5893
|
-
"crm_field_id": {
|
|
5894
|
-
"type": "string",
|
|
5895
|
-
"minLength": 1
|
|
5896
|
-
},
|
|
5897
|
-
"crm_field_name": {
|
|
5898
|
-
"type": "string"
|
|
5899
|
-
},
|
|
5900
|
-
"save_as": {
|
|
5901
|
-
"type": "string",
|
|
5902
|
-
"minLength": 1
|
|
5903
|
-
},
|
|
5904
|
-
"enabled": {
|
|
5905
|
-
"type": "boolean"
|
|
5906
|
-
},
|
|
5907
|
-
"special_purpose": {
|
|
5908
|
-
"type": "string",
|
|
5909
|
-
"enum": [
|
|
5910
|
-
"phone",
|
|
5911
|
-
"telegramId",
|
|
5912
|
-
"username",
|
|
5913
|
-
"avitoId",
|
|
5914
|
-
"instagramId",
|
|
5915
|
-
"vkonId"
|
|
5916
|
-
]
|
|
5917
|
-
},
|
|
5918
|
-
"category": {
|
|
5919
|
-
"type": "string"
|
|
5920
|
-
}
|
|
5921
|
-
}
|
|
5922
|
-
}
|
|
6890
|
+
"name": {
|
|
6891
|
+
"type": "string",
|
|
6892
|
+
"description": "Опц. имя векторной таблицы при включении."
|
|
5923
6893
|
}
|
|
5924
6894
|
}
|
|
5925
6895
|
}
|
|
5926
6896
|
},
|
|
5927
6897
|
{
|
|
5928
|
-
"name": "
|
|
5929
|
-
"description": "
|
|
6898
|
+
"name": "besales_workspace_use",
|
|
6899
|
+
"description": "Привязать ТЕКУЩУЮ Claude-сессию к воркспейсу (in-memory, до конца сессии). Для GUI-хостов (Claude Desktop), где нельзя задать env на сессию: если подключено несколько воркспейсов — этим тулом биндишь сессию к нужному, не трогая другие сессии и keychain `active`. workspace_id бери из besales_workspace_current. Запрещён, если сессия запиннена через BESALES_WORKSPACE_ID.",
|
|
5930
6900
|
"inputSchema": {
|
|
5931
6901
|
"type": "object",
|
|
5932
6902
|
"required": [
|
|
5933
|
-
"
|
|
6903
|
+
"workspace_id"
|
|
5934
6904
|
],
|
|
5935
|
-
"additionalProperties": false,
|
|
5936
6905
|
"properties": {
|
|
5937
6906
|
"workspace_id": {
|
|
5938
6907
|
"type": "string",
|
|
5939
6908
|
"format": "uuid",
|
|
5940
|
-
"description": "
|
|
5941
|
-
}
|
|
5942
|
-
|
|
6909
|
+
"description": "UUID подключённого воркспейса (см. besales_workspace_current.connected[].workspace_id)."
|
|
6910
|
+
}
|
|
6911
|
+
}
|
|
6912
|
+
}
|
|
6913
|
+
},
|
|
6914
|
+
{
|
|
6915
|
+
"name": "besales_workspace_current",
|
|
6916
|
+
"description": "Показать воркспейс текущей сессии (+ source: env/session/active/sole/none) и список всех подключённых воркспейсов. Read-only, без обращения к backend. Зови перед besales_workspace_use, чтобы узнать доступные workspace_id.",
|
|
6917
|
+
"inputSchema": {
|
|
6918
|
+
"type": "object",
|
|
6919
|
+
"required": [],
|
|
6920
|
+
"properties": {}
|
|
6921
|
+
}
|
|
6922
|
+
},
|
|
6923
|
+
{
|
|
6924
|
+
"name": "besales_model_catalog_list",
|
|
6925
|
+
"description": "Каталог моделей для сравнения промпта (model bake-off): id, label, tier (budget/balanced/premium), bestFor-теги «когда что лучше», notes, viaOpenRouter, defaultSelected, available (доступен ли провайдер сейчас) + лимиты. По этим тегам ИИ выбирает ~5 моделей под use-case агента. Read-only.",
|
|
6926
|
+
"inputSchema": {
|
|
6927
|
+
"type": "object",
|
|
6928
|
+
"required": [],
|
|
6929
|
+
"additionalProperties": false,
|
|
6930
|
+
"properties": {}
|
|
6931
|
+
}
|
|
6932
|
+
},
|
|
6933
|
+
{
|
|
6934
|
+
"name": "besales_model_comparison_run_start",
|
|
6935
|
+
"description": "Запустить прогон сравнения промпта агента на нескольких моделях (один и тот же набор диалогов, меняется только модель агента). ДОРОГО — только по явному запросу оператора, НЕ после каждого фикса. models опционально (по умолчанию ~5 defaultSelected из besales_model_catalog_list), 1..21. dialogue_count по умолчанию 5, до 20. Возвращает run_id для besales_model_comparison_get.",
|
|
6936
|
+
"inputSchema": {
|
|
6937
|
+
"type": "object",
|
|
6938
|
+
"required": [
|
|
6939
|
+
"agent_id"
|
|
6940
|
+
],
|
|
6941
|
+
"additionalProperties": false,
|
|
6942
|
+
"properties": {
|
|
6943
|
+
"agent_id": {
|
|
5943
6944
|
"type": "string",
|
|
5944
6945
|
"format": "uuid"
|
|
5945
6946
|
},
|
|
5946
|
-
"
|
|
5947
|
-
"type": "
|
|
6947
|
+
"models": {
|
|
6948
|
+
"type": "array",
|
|
6949
|
+
"items": {
|
|
6950
|
+
"type": "string"
|
|
6951
|
+
},
|
|
6952
|
+
"minItems": 1,
|
|
6953
|
+
"maxItems": 21,
|
|
6954
|
+
"description": "Runnable id моделей из каталога (1..21). По умолчанию набор defaultSelected."
|
|
6955
|
+
},
|
|
6956
|
+
"dialogue_count": {
|
|
6957
|
+
"type": "integer",
|
|
6958
|
+
"minimum": 1,
|
|
6959
|
+
"maximum": 20,
|
|
6960
|
+
"description": "Диалогов на модель (по умолчанию 5)."
|
|
6961
|
+
},
|
|
6962
|
+
"message_direction": {
|
|
6963
|
+
"type": "string",
|
|
6964
|
+
"enum": [
|
|
6965
|
+
"INBOUND",
|
|
6966
|
+
"OUTBOUND"
|
|
6967
|
+
]
|
|
5948
6968
|
}
|
|
5949
6969
|
}
|
|
5950
6970
|
}
|
|
5951
6971
|
},
|
|
5952
6972
|
{
|
|
5953
|
-
"name": "
|
|
5954
|
-
"description": "
|
|
6973
|
+
"name": "besales_model_comparison_get",
|
|
6974
|
+
"description": "Статус + результаты прогона сравнения: по каждой модели — диалоги + детерминированные метрики (стоимость-кредиты, длина ответа, completion, wall-clock) + сохранённый eval. Прочитай, оцени какая модель лучше по метрикам И качеству диалогов, ответь оператору с аргументами и выдержками, затем besales_model_comparison_eval_submit.",
|
|
5955
6975
|
"inputSchema": {
|
|
5956
6976
|
"type": "object",
|
|
5957
6977
|
"required": [
|
|
5958
|
-
"
|
|
5959
|
-
"operator_id"
|
|
6978
|
+
"run_id"
|
|
5960
6979
|
],
|
|
5961
6980
|
"additionalProperties": false,
|
|
5962
6981
|
"properties": {
|
|
5963
|
-
"
|
|
5964
|
-
"type": "string",
|
|
5965
|
-
"format": "uuid",
|
|
5966
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
5967
|
-
},
|
|
5968
|
-
"crm_id": {
|
|
5969
|
-
"type": "string",
|
|
5970
|
-
"format": "uuid"
|
|
5971
|
-
},
|
|
5972
|
-
"operator_id": {
|
|
6982
|
+
"run_id": {
|
|
5973
6983
|
"type": "string",
|
|
5974
6984
|
"format": "uuid"
|
|
5975
|
-
},
|
|
5976
|
-
"is_operator": {
|
|
5977
|
-
"type": "boolean"
|
|
5978
|
-
},
|
|
5979
|
-
"is_sdr": {
|
|
5980
|
-
"type": "boolean"
|
|
5981
6985
|
}
|
|
5982
6986
|
}
|
|
5983
6987
|
}
|
|
5984
6988
|
},
|
|
5985
6989
|
{
|
|
5986
|
-
"name": "
|
|
5987
|
-
"description": "
|
|
6990
|
+
"name": "besales_model_comparison_eval_submit",
|
|
6991
|
+
"description": "Записать вердикт ИИ по прогону (replace при повторе): победитель + обоснование + по каждой модели success_score (0-100), сильные/слабые стороны, выдержки из диалогов. Сохраняется для будущего UI. ИИ всё равно отвечает оператору в чате — submit фиксирует структуру.",
|
|
5988
6992
|
"inputSchema": {
|
|
5989
6993
|
"type": "object",
|
|
5990
6994
|
"required": [
|
|
5991
|
-
"
|
|
6995
|
+
"run_id",
|
|
6996
|
+
"winner",
|
|
6997
|
+
"rationale",
|
|
6998
|
+
"per_model"
|
|
5992
6999
|
],
|
|
5993
7000
|
"additionalProperties": false,
|
|
5994
7001
|
"properties": {
|
|
5995
|
-
"
|
|
7002
|
+
"run_id": {
|
|
5996
7003
|
"type": "string",
|
|
5997
|
-
"format": "uuid"
|
|
5998
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
7004
|
+
"format": "uuid"
|
|
5999
7005
|
},
|
|
6000
|
-
"
|
|
7006
|
+
"winner": {
|
|
6001
7007
|
"type": "string",
|
|
6002
|
-
"
|
|
6003
|
-
"ONE_C"
|
|
6004
|
-
]
|
|
7008
|
+
"description": "Runnable id модели-победителя."
|
|
6005
7009
|
},
|
|
6006
|
-
"
|
|
6007
|
-
"type": "
|
|
6008
|
-
|
|
7010
|
+
"rationale": {
|
|
7011
|
+
"type": "string"
|
|
7012
|
+
},
|
|
7013
|
+
"per_model": {
|
|
7014
|
+
"type": "array",
|
|
7015
|
+
"minItems": 1,
|
|
7016
|
+
"items": {
|
|
7017
|
+
"type": "object",
|
|
7018
|
+
"required": [
|
|
7019
|
+
"model",
|
|
7020
|
+
"success_score",
|
|
7021
|
+
"strengths",
|
|
7022
|
+
"weaknesses",
|
|
7023
|
+
"excerpts"
|
|
7024
|
+
],
|
|
7025
|
+
"additionalProperties": false,
|
|
7026
|
+
"properties": {
|
|
7027
|
+
"model": {
|
|
7028
|
+
"type": "string"
|
|
7029
|
+
},
|
|
7030
|
+
"success_score": {
|
|
7031
|
+
"type": "integer",
|
|
7032
|
+
"minimum": 0,
|
|
7033
|
+
"maximum": 100
|
|
7034
|
+
},
|
|
7035
|
+
"strengths": {
|
|
7036
|
+
"type": "array",
|
|
7037
|
+
"items": {
|
|
7038
|
+
"type": "string"
|
|
7039
|
+
}
|
|
7040
|
+
},
|
|
7041
|
+
"weaknesses": {
|
|
7042
|
+
"type": "array",
|
|
7043
|
+
"items": {
|
|
7044
|
+
"type": "string"
|
|
7045
|
+
}
|
|
7046
|
+
},
|
|
7047
|
+
"excerpts": {
|
|
7048
|
+
"type": "array",
|
|
7049
|
+
"items": {
|
|
7050
|
+
"type": "string"
|
|
7051
|
+
}
|
|
7052
|
+
}
|
|
7053
|
+
}
|
|
7054
|
+
}
|
|
6009
7055
|
}
|
|
6010
7056
|
}
|
|
6011
7057
|
}
|
|
6012
7058
|
},
|
|
6013
7059
|
{
|
|
6014
|
-
"name": "
|
|
6015
|
-
"description": "v1.5
|
|
7060
|
+
"name": "besales_external_api_channel_create",
|
|
7061
|
+
"description": "v1.5: создать канал External API (партнёрский relay, ChannelType.EXTERNAL_API). Ответ { channelId, apiKey, webhookSecret, ingestPath } — apiKey (Bearer для входящих партнёра) и webhookSecret (HMAC-подпись наших колбэков) показываются ОДИН раз. Перевыпуск — rotate-тулы. Scope: mcp:platform-setup.",
|
|
6016
7062
|
"inputSchema": {
|
|
6017
7063
|
"type": "object",
|
|
6018
7064
|
"required": [
|
|
6019
|
-
"
|
|
7065
|
+
"callback_url"
|
|
6020
7066
|
],
|
|
6021
7067
|
"additionalProperties": false,
|
|
6022
7068
|
"properties": {
|
|
@@ -6025,36 +7071,33 @@
|
|
|
6025
7071
|
"format": "uuid",
|
|
6026
7072
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
6027
7073
|
},
|
|
6028
|
-
"
|
|
7074
|
+
"name": {
|
|
6029
7075
|
"type": "string",
|
|
6030
|
-
"
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
{
|
|
6036
|
-
"name": "besales_datasource_list",
|
|
6037
|
-
"description": "v1.5 Increment 4f: список подключений data-source (1С) воркспейса: id, type, name, status (ACTIVE/ERROR/INACTIVE), enabled, base_url. Read-only. Scope: mcp:platform-setup.",
|
|
6038
|
-
"inputSchema": {
|
|
6039
|
-
"type": "object",
|
|
6040
|
-
"required": [],
|
|
6041
|
-
"additionalProperties": false,
|
|
6042
|
-
"properties": {
|
|
6043
|
-
"workspace_id": {
|
|
7076
|
+
"minLength": 1,
|
|
7077
|
+
"maxLength": 255,
|
|
7078
|
+
"description": "Опционально: display-имя канала."
|
|
7079
|
+
},
|
|
7080
|
+
"callback_url": {
|
|
6044
7081
|
"type": "string",
|
|
6045
|
-
"format": "
|
|
6046
|
-
"description": "
|
|
7082
|
+
"format": "uri",
|
|
7083
|
+
"description": "URL партнёра (HTTPS), куда POST'им ответы AI + follow-up (HMAC-подписанные колбэки)."
|
|
7084
|
+
},
|
|
7085
|
+
"source_channel": {
|
|
7086
|
+
"type": "string",
|
|
7087
|
+
"minLength": 1,
|
|
7088
|
+
"maxLength": 64,
|
|
7089
|
+
"description": "Опционально: метка транспорта по умолчанию (telegram|whatsapp|web|...)."
|
|
6047
7090
|
}
|
|
6048
7091
|
}
|
|
6049
7092
|
}
|
|
6050
7093
|
},
|
|
6051
7094
|
{
|
|
6052
|
-
"name": "
|
|
6053
|
-
"description": "v1.5
|
|
7095
|
+
"name": "besales_external_api_channel_rotate_key",
|
|
7096
|
+
"description": "v1.5: перевыпустить bsl-ключ External API канала. Ответ { apiKey } — новый ключ, показывается ОДИН раз; старый ОТОЗВАН немедленно (партнёр должен обновить интеграцию). Scope: mcp:platform-setup.",
|
|
6054
7097
|
"inputSchema": {
|
|
6055
7098
|
"type": "object",
|
|
6056
7099
|
"required": [
|
|
6057
|
-
"
|
|
7100
|
+
"channel_id"
|
|
6058
7101
|
],
|
|
6059
7102
|
"additionalProperties": false,
|
|
6060
7103
|
"properties": {
|
|
@@ -6063,7 +7106,7 @@
|
|
|
6063
7106
|
"format": "uuid",
|
|
6064
7107
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
6065
7108
|
},
|
|
6066
|
-
"
|
|
7109
|
+
"channel_id": {
|
|
6067
7110
|
"type": "string",
|
|
6068
7111
|
"format": "uuid"
|
|
6069
7112
|
}
|
|
@@ -6071,12 +7114,12 @@
|
|
|
6071
7114
|
}
|
|
6072
7115
|
},
|
|
6073
7116
|
{
|
|
6074
|
-
"name": "
|
|
6075
|
-
"description": "v1.5
|
|
7117
|
+
"name": "besales_external_api_channel_rotate_secret",
|
|
7118
|
+
"description": "v1.5: перевыпустить webhook-secret External API канала. Ответ { webhookSecret } — новый секрет, показывается ОДИН раз; старый инвалидирован (партнёр должен обновить проверку подписи колбэков). Scope: mcp:platform-setup.",
|
|
6076
7119
|
"inputSchema": {
|
|
6077
7120
|
"type": "object",
|
|
6078
7121
|
"required": [
|
|
6079
|
-
"
|
|
7122
|
+
"channel_id"
|
|
6080
7123
|
],
|
|
6081
7124
|
"additionalProperties": false,
|
|
6082
7125
|
"properties": {
|
|
@@ -6085,7 +7128,7 @@
|
|
|
6085
7128
|
"format": "uuid",
|
|
6086
7129
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
6087
7130
|
},
|
|
6088
|
-
"
|
|
7131
|
+
"channel_id": {
|
|
6089
7132
|
"type": "string",
|
|
6090
7133
|
"format": "uuid"
|
|
6091
7134
|
}
|
|
@@ -6093,12 +7136,12 @@
|
|
|
6093
7136
|
}
|
|
6094
7137
|
},
|
|
6095
7138
|
{
|
|
6096
|
-
"name": "
|
|
6097
|
-
"description": "v1.5
|
|
7139
|
+
"name": "besales_external_api_channel_update",
|
|
7140
|
+
"description": "v1.5: обновить несекретные настройки External API канала (callback_url / source_channel). Ключ и секрет НЕ меняются (для них rotate-тулы). Смена callback_url применяется немедленно. Scope: mcp:platform-setup.",
|
|
6098
7141
|
"inputSchema": {
|
|
6099
7142
|
"type": "object",
|
|
6100
7143
|
"required": [
|
|
6101
|
-
"
|
|
7144
|
+
"channel_id"
|
|
6102
7145
|
],
|
|
6103
7146
|
"additionalProperties": false,
|
|
6104
7147
|
"properties": {
|
|
@@ -6107,526 +7150,544 @@
|
|
|
6107
7150
|
"format": "uuid",
|
|
6108
7151
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
6109
7152
|
},
|
|
6110
|
-
"
|
|
7153
|
+
"channel_id": {
|
|
6111
7154
|
"type": "string",
|
|
6112
7155
|
"format": "uuid"
|
|
7156
|
+
},
|
|
7157
|
+
"callback_url": {
|
|
7158
|
+
"type": "string",
|
|
7159
|
+
"format": "uri",
|
|
7160
|
+
"description": "Опционально: новый callback URL."
|
|
7161
|
+
},
|
|
7162
|
+
"source_channel": {
|
|
7163
|
+
"type": "string",
|
|
7164
|
+
"minLength": 1,
|
|
7165
|
+
"maxLength": 64,
|
|
7166
|
+
"description": "Опционально: новая метка транспорта."
|
|
6113
7167
|
}
|
|
6114
7168
|
}
|
|
6115
7169
|
}
|
|
6116
7170
|
},
|
|
6117
7171
|
{
|
|
6118
|
-
"name": "
|
|
6119
|
-
"description": "
|
|
7172
|
+
"name": "besales_dialogues_query",
|
|
7173
|
+
"description": "Read-only манифест диалогов workspace по фильтрам: каналы, окно дат активности, CRM-статус, последнее work-log событие и выполненные trigger-actions (action_type/action_success/action_execution_mode). По каждому диалогу отдаёт точки атрибуции lastWaveSentAt/firstPaidAt/paidAmount — интервалы «касание → ответ → оплата» считаются прямо здесь, без отдельной выгрузки. Пагинация cursor + total. Тексты и факты действий берутся через besales_dialogue_transcript. Scope: read:conversations.",
|
|
6120
7174
|
"inputSchema": {
|
|
6121
7175
|
"type": "object",
|
|
6122
|
-
"required": [
|
|
6123
|
-
"data_source_id",
|
|
6124
|
-
"role",
|
|
6125
|
-
"external_code",
|
|
6126
|
-
"display_name"
|
|
6127
|
-
],
|
|
7176
|
+
"required": [],
|
|
6128
7177
|
"additionalProperties": false,
|
|
6129
7178
|
"properties": {
|
|
6130
7179
|
"workspace_id": {
|
|
6131
7180
|
"type": "string",
|
|
6132
7181
|
"format": "uuid",
|
|
6133
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session
|
|
7182
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6134
7183
|
},
|
|
6135
|
-
"
|
|
7184
|
+
"platform_ids": {
|
|
7185
|
+
"type": "array",
|
|
7186
|
+
"items": {
|
|
7187
|
+
"type": "string",
|
|
7188
|
+
"format": "uuid"
|
|
7189
|
+
},
|
|
7190
|
+
"description": "Фильтр по каналам (ChatUser.platformId)."
|
|
7191
|
+
},
|
|
7192
|
+
"date_from": {
|
|
6136
7193
|
"type": "string",
|
|
6137
|
-
"format": "
|
|
7194
|
+
"format": "date-time",
|
|
7195
|
+
"description": "ISO 8601, нижняя граница активности диалога."
|
|
6138
7196
|
},
|
|
6139
|
-
"
|
|
7197
|
+
"date_to": {
|
|
6140
7198
|
"type": "string",
|
|
6141
|
-
"
|
|
6142
|
-
|
|
6143
|
-
"STOCK",
|
|
6144
|
-
"PRICE",
|
|
6145
|
-
"ORDER",
|
|
6146
|
-
"CUSTOMER",
|
|
6147
|
-
"OTHER"
|
|
6148
|
-
]
|
|
7199
|
+
"format": "date-time",
|
|
7200
|
+
"description": "ISO 8601, верхняя граница активности диалога."
|
|
6149
7201
|
},
|
|
6150
|
-
"
|
|
7202
|
+
"lead_status": {
|
|
7203
|
+
"type": "array",
|
|
7204
|
+
"items": {
|
|
7205
|
+
"type": "string"
|
|
7206
|
+
},
|
|
7207
|
+
"description": "CRM лид-статусы (ChatUser.leadStatus)."
|
|
7208
|
+
},
|
|
7209
|
+
"deactivate_reason": {
|
|
7210
|
+
"type": "array",
|
|
7211
|
+
"items": {
|
|
7212
|
+
"type": "string"
|
|
7213
|
+
},
|
|
7214
|
+
"description": "Причины деактивации бота (ChatUser.deactivateReason)."
|
|
7215
|
+
},
|
|
7216
|
+
"work_log_event": {
|
|
7217
|
+
"type": "array",
|
|
7218
|
+
"items": {
|
|
7219
|
+
"type": "string",
|
|
7220
|
+
"enum": [
|
|
7221
|
+
"START",
|
|
7222
|
+
"IN_PROCESS",
|
|
7223
|
+
"FINISH_WIN",
|
|
7224
|
+
"FINISH_LOST",
|
|
7225
|
+
"FAILED",
|
|
7226
|
+
"OPERATOR_TAKEOVER",
|
|
7227
|
+
"FINISH_AUTO"
|
|
7228
|
+
]
|
|
7229
|
+
},
|
|
7230
|
+
"description": "Фильтр по ПОСЛЕДНЕМУ событию platform_work_logs диалога."
|
|
7231
|
+
},
|
|
7232
|
+
"action_type": {
|
|
7233
|
+
"type": "array",
|
|
7234
|
+
"items": {
|
|
7235
|
+
"type": "string",
|
|
7236
|
+
"minLength": 1
|
|
7237
|
+
},
|
|
7238
|
+
"description": "ActionType выполненного на сообщении действия; например GETCOURSE_CREATE_DEAL."
|
|
7239
|
+
},
|
|
7240
|
+
"action_success": {
|
|
7241
|
+
"type": "boolean",
|
|
7242
|
+
"description": "Успешность подходящего trigger-action."
|
|
7243
|
+
},
|
|
7244
|
+
"action_execution_mode": {
|
|
6151
7245
|
"type": "string",
|
|
6152
|
-
"
|
|
7246
|
+
"enum": [
|
|
7247
|
+
"production",
|
|
7248
|
+
"test"
|
|
7249
|
+
],
|
|
7250
|
+
"description": "Режим того же trigger execution; для production-аудита передайте production."
|
|
7251
|
+
},
|
|
7252
|
+
"ai_enabled": {
|
|
7253
|
+
"type": "boolean",
|
|
7254
|
+
"description": "ChatUser.isBotActive."
|
|
7255
|
+
},
|
|
7256
|
+
"followups_enabled": {
|
|
7257
|
+
"type": "boolean",
|
|
7258
|
+
"description": "ChatUser.isFollowUpActive."
|
|
6153
7259
|
},
|
|
6154
|
-
"
|
|
6155
|
-
"type": "
|
|
7260
|
+
"has_messages": {
|
|
7261
|
+
"type": "boolean",
|
|
7262
|
+
"description": "true — только диалоги с сообщениями; false — только без."
|
|
6156
7263
|
},
|
|
6157
|
-
"
|
|
6158
|
-
"type": "
|
|
6159
|
-
"
|
|
7264
|
+
"limit": {
|
|
7265
|
+
"type": "integer",
|
|
7266
|
+
"minimum": 1,
|
|
7267
|
+
"maximum": 100,
|
|
7268
|
+
"description": "Размер страницы (дефолт 50)."
|
|
7269
|
+
},
|
|
7270
|
+
"cursor": {
|
|
7271
|
+
"type": "string",
|
|
7272
|
+
"description": "Курсор пагинации из предыдущего ответа."
|
|
6160
7273
|
}
|
|
6161
7274
|
}
|
|
6162
7275
|
}
|
|
6163
7276
|
},
|
|
6164
7277
|
{
|
|
6165
|
-
"name": "
|
|
6166
|
-
"description": "
|
|
7278
|
+
"name": "besales_dialogue_transcript",
|
|
7279
|
+
"description": "Read-only полный транскрипт одного диалога + triggerExecutions, привязанные к messageId. Каждая реплика несёт время (sentAt, у ответа агента — фактическое время отправки) и authorType: AI_AGENT / AUTOMATION (наш follow-up, рассылка) / HUMAN_OPERATOR (живой человек) — по isAi автоматика и оператор неразличимы. Действия содержат type/success/time и безопасную выжимку dealId/dealNumber/skipped без сырого result. Пагинация сообщений через cursor. Scope: read:conversations.",
|
|
6167
7280
|
"inputSchema": {
|
|
6168
7281
|
"type": "object",
|
|
6169
7282
|
"required": [
|
|
6170
|
-
"
|
|
6171
|
-
"enabled"
|
|
7283
|
+
"conversation_id"
|
|
6172
7284
|
],
|
|
6173
7285
|
"additionalProperties": false,
|
|
6174
7286
|
"properties": {
|
|
6175
7287
|
"workspace_id": {
|
|
6176
7288
|
"type": "string",
|
|
6177
7289
|
"format": "uuid",
|
|
6178
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session
|
|
7290
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6179
7291
|
},
|
|
6180
|
-
"
|
|
7292
|
+
"conversation_id": {
|
|
6181
7293
|
"type": "string",
|
|
6182
|
-
"format": "uuid"
|
|
7294
|
+
"format": "uuid",
|
|
7295
|
+
"description": "ID диалога (= conversationId из манифеста / ChatUser.id)."
|
|
6183
7296
|
},
|
|
6184
|
-
"
|
|
6185
|
-
"type": "
|
|
7297
|
+
"limit": {
|
|
7298
|
+
"type": "integer",
|
|
7299
|
+
"minimum": 1,
|
|
7300
|
+
"maximum": 100,
|
|
7301
|
+
"description": "Сообщений на страницу (дефолт 50)."
|
|
7302
|
+
},
|
|
7303
|
+
"cursor": {
|
|
7304
|
+
"type": "string",
|
|
7305
|
+
"description": "Курсор пагинации сообщений (хронологический asc)."
|
|
6186
7306
|
}
|
|
6187
7307
|
}
|
|
6188
7308
|
}
|
|
6189
7309
|
},
|
|
6190
7310
|
{
|
|
6191
|
-
"name": "
|
|
6192
|
-
"description": "
|
|
7311
|
+
"name": "besales_broadcast_analytics_get",
|
|
7312
|
+
"description": "Read-only authoritative агрегат страницы /broadcast-analytics по дням и измерениям. Метрики считаются по получателям волн/доставке/событиям, а не по строкам сообщений. Scope: read:analytics.",
|
|
6193
7313
|
"inputSchema": {
|
|
6194
7314
|
"type": "object",
|
|
6195
|
-
"required": [
|
|
6196
|
-
"data_source_id",
|
|
6197
|
-
"catalog_external_code",
|
|
6198
|
-
"enabled"
|
|
6199
|
-
],
|
|
7315
|
+
"required": [],
|
|
6200
7316
|
"additionalProperties": false,
|
|
6201
7317
|
"properties": {
|
|
6202
7318
|
"workspace_id": {
|
|
6203
7319
|
"type": "string",
|
|
6204
7320
|
"format": "uuid",
|
|
6205
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session
|
|
7321
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6206
7322
|
},
|
|
6207
|
-
"
|
|
7323
|
+
"mode": {
|
|
6208
7324
|
"type": "string",
|
|
6209
|
-
"
|
|
6210
|
-
|
|
6211
|
-
|
|
6212
|
-
|
|
7325
|
+
"enum": [
|
|
7326
|
+
"all",
|
|
7327
|
+
"days",
|
|
7328
|
+
"range"
|
|
7329
|
+
],
|
|
7330
|
+
"default": "days",
|
|
7331
|
+
"description": "Режим периода. Для точной даты используйте range."
|
|
6213
7332
|
},
|
|
6214
|
-
"
|
|
6215
|
-
"type": "
|
|
7333
|
+
"days": {
|
|
7334
|
+
"type": "integer",
|
|
7335
|
+
"minimum": 1,
|
|
7336
|
+
"description": "Последние N дней для mode=days."
|
|
6216
7337
|
},
|
|
6217
|
-
"
|
|
7338
|
+
"from": {
|
|
6218
7339
|
"type": "string",
|
|
6219
|
-
"
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
},
|
|
6224
|
-
{
|
|
6225
|
-
"name": "besales_workspace_use",
|
|
6226
|
-
"description": "Привязать ТЕКУЩУЮ Claude-сессию к воркспейсу (in-memory, до конца сессии). Для GUI-хостов (Claude Desktop), где нельзя задать env на сессию: если подключено несколько воркспейсов — этим тулом биндишь сессию к нужному, не трогая другие сессии и keychain `active`. workspace_id бери из besales_workspace_current. Запрещён, если сессия запиннена через BESALES_WORKSPACE_ID.",
|
|
6227
|
-
"inputSchema": {
|
|
6228
|
-
"type": "object",
|
|
6229
|
-
"required": [
|
|
6230
|
-
"workspace_id"
|
|
6231
|
-
],
|
|
6232
|
-
"properties": {
|
|
6233
|
-
"workspace_id": {
|
|
7340
|
+
"format": "date",
|
|
7341
|
+
"description": "Начальная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
7342
|
+
},
|
|
7343
|
+
"to": {
|
|
6234
7344
|
"type": "string",
|
|
6235
|
-
"format": "
|
|
6236
|
-
"description": "
|
|
6237
|
-
}
|
|
6238
|
-
|
|
6239
|
-
}
|
|
6240
|
-
},
|
|
6241
|
-
{
|
|
6242
|
-
"name": "besales_workspace_current",
|
|
6243
|
-
"description": "Показать воркспейс текущей сессии (+ source: env/session/active/sole/none) и список всех подключённых воркспейсов. Read-only, без обращения к backend. Зови перед besales_workspace_use, чтобы узнать доступные workspace_id.",
|
|
6244
|
-
"inputSchema": {
|
|
6245
|
-
"type": "object",
|
|
6246
|
-
"required": [],
|
|
6247
|
-
"properties": {}
|
|
6248
|
-
}
|
|
6249
|
-
},
|
|
6250
|
-
{
|
|
6251
|
-
"name": "besales_model_catalog_list",
|
|
6252
|
-
"description": "Каталог моделей для сравнения промпта (model bake-off): id, label, tier (budget/balanced/premium), bestFor-теги «когда что лучше», notes, viaOpenRouter, defaultSelected, available (доступен ли провайдер сейчас) + лимиты. По этим тегам ИИ выбирает ~5 моделей под use-case агента. Read-only.",
|
|
6253
|
-
"inputSchema": {
|
|
6254
|
-
"type": "object",
|
|
6255
|
-
"required": [],
|
|
6256
|
-
"additionalProperties": false,
|
|
6257
|
-
"properties": {}
|
|
6258
|
-
}
|
|
6259
|
-
},
|
|
6260
|
-
{
|
|
6261
|
-
"name": "besales_model_comparison_run_start",
|
|
6262
|
-
"description": "Запустить прогон сравнения промпта агента на нескольких моделях (один и тот же набор диалогов, меняется только модель агента). ДОРОГО — только по явному запросу оператора, НЕ после каждого фикса. models опционально (по умолчанию ~5 defaultSelected из besales_model_catalog_list), 1..18. dialogue_count по умолчанию 5, до 20. Возвращает run_id для besales_model_comparison_get.",
|
|
6263
|
-
"inputSchema": {
|
|
6264
|
-
"type": "object",
|
|
6265
|
-
"required": [
|
|
6266
|
-
"agent_id"
|
|
6267
|
-
],
|
|
6268
|
-
"additionalProperties": false,
|
|
6269
|
-
"properties": {
|
|
6270
|
-
"agent_id": {
|
|
7345
|
+
"format": "date",
|
|
7346
|
+
"description": "Конечная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
7347
|
+
},
|
|
7348
|
+
"platform_id": {
|
|
6271
7349
|
"type": "string",
|
|
6272
7350
|
"format": "uuid"
|
|
6273
7351
|
},
|
|
6274
|
-
"
|
|
6275
|
-
"type": "
|
|
6276
|
-
"
|
|
6277
|
-
|
|
6278
|
-
},
|
|
6279
|
-
"minItems": 1,
|
|
6280
|
-
"maxItems": 18,
|
|
6281
|
-
"description": "Runnable id моделей из каталога (1..18). По умолчанию набор defaultSelected."
|
|
7352
|
+
"funnel": {
|
|
7353
|
+
"type": "string",
|
|
7354
|
+
"minLength": 1,
|
|
7355
|
+
"description": "Точная бизнес-воронка волны."
|
|
6282
7356
|
},
|
|
6283
|
-
"
|
|
6284
|
-
"type": "
|
|
6285
|
-
"
|
|
6286
|
-
|
|
6287
|
-
|
|
7357
|
+
"funnel_mode": {
|
|
7358
|
+
"type": "string",
|
|
7359
|
+
"enum": [
|
|
7360
|
+
"none"
|
|
7361
|
+
],
|
|
7362
|
+
"description": "Явно выбрать строки без воронки."
|
|
6288
7363
|
},
|
|
6289
|
-
"
|
|
7364
|
+
"segment": {
|
|
7365
|
+
"type": "string",
|
|
7366
|
+
"minLength": 1
|
|
7367
|
+
},
|
|
7368
|
+
"product": {
|
|
7369
|
+
"type": "string",
|
|
7370
|
+
"minLength": 1
|
|
7371
|
+
},
|
|
7372
|
+
"product_mode": {
|
|
6290
7373
|
"type": "string",
|
|
6291
7374
|
"enum": [
|
|
6292
|
-
"
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
}
|
|
6296
|
-
|
|
6297
|
-
}
|
|
6298
|
-
},
|
|
6299
|
-
{
|
|
6300
|
-
"name": "besales_model_comparison_get",
|
|
6301
|
-
"description": "Статус + результаты прогона сравнения: по каждой модели — диалоги + детерминированные метрики (стоимость-кредиты, длина ответа, completion, wall-clock) + сохранённый eval. Прочитай, оцени какая модель лучше по метрикам И качеству диалогов, ответь оператору с аргументами и выдержками, затем besales_model_comparison_eval_submit.",
|
|
6302
|
-
"inputSchema": {
|
|
6303
|
-
"type": "object",
|
|
6304
|
-
"required": [
|
|
6305
|
-
"run_id"
|
|
6306
|
-
],
|
|
6307
|
-
"additionalProperties": false,
|
|
6308
|
-
"properties": {
|
|
6309
|
-
"run_id": {
|
|
7375
|
+
"none"
|
|
7376
|
+
],
|
|
7377
|
+
"description": "Явно выбрать строки без продукта."
|
|
7378
|
+
},
|
|
7379
|
+
"view": {
|
|
6310
7380
|
"type": "string",
|
|
6311
|
-
"
|
|
7381
|
+
"enum": [
|
|
7382
|
+
"cohort",
|
|
7383
|
+
"period"
|
|
7384
|
+
],
|
|
7385
|
+
"default": "period",
|
|
7386
|
+
"description": "period — по дате события (как вкладка по дням); cohort — по дате запуска волны."
|
|
6312
7387
|
}
|
|
6313
7388
|
}
|
|
6314
7389
|
}
|
|
6315
7390
|
},
|
|
6316
7391
|
{
|
|
6317
|
-
"name": "
|
|
6318
|
-
"description": "
|
|
7392
|
+
"name": "besales_broadcast_cohorts_list",
|
|
7393
|
+
"description": "Read-only результаты отдельных запусков рассылок: label, funnel, segment, product, channels, found/sent/delivered/entered/handed/payments/notSent. Scope: read:analytics.",
|
|
6319
7394
|
"inputSchema": {
|
|
6320
7395
|
"type": "object",
|
|
6321
|
-
"required": [
|
|
6322
|
-
"run_id",
|
|
6323
|
-
"winner",
|
|
6324
|
-
"rationale",
|
|
6325
|
-
"per_model"
|
|
6326
|
-
],
|
|
7396
|
+
"required": [],
|
|
6327
7397
|
"additionalProperties": false,
|
|
6328
7398
|
"properties": {
|
|
6329
|
-
"
|
|
7399
|
+
"workspace_id": {
|
|
6330
7400
|
"type": "string",
|
|
6331
|
-
"format": "uuid"
|
|
7401
|
+
"format": "uuid",
|
|
7402
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6332
7403
|
},
|
|
6333
|
-
"
|
|
7404
|
+
"mode": {
|
|
6334
7405
|
"type": "string",
|
|
6335
|
-
"
|
|
7406
|
+
"enum": [
|
|
7407
|
+
"all",
|
|
7408
|
+
"days",
|
|
7409
|
+
"range"
|
|
7410
|
+
],
|
|
7411
|
+
"default": "days"
|
|
6336
7412
|
},
|
|
6337
|
-
"
|
|
6338
|
-
"type": "
|
|
7413
|
+
"days": {
|
|
7414
|
+
"type": "integer",
|
|
7415
|
+
"minimum": 1
|
|
6339
7416
|
},
|
|
6340
|
-
"
|
|
6341
|
-
"type": "
|
|
6342
|
-
"
|
|
6343
|
-
"
|
|
6344
|
-
|
|
6345
|
-
|
|
6346
|
-
|
|
6347
|
-
|
|
6348
|
-
|
|
6349
|
-
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6355
|
-
"type": "string"
|
|
6356
|
-
},
|
|
6357
|
-
"success_score": {
|
|
6358
|
-
"type": "integer",
|
|
6359
|
-
"minimum": 0,
|
|
6360
|
-
"maximum": 100
|
|
6361
|
-
},
|
|
6362
|
-
"strengths": {
|
|
6363
|
-
"type": "array",
|
|
6364
|
-
"items": {
|
|
6365
|
-
"type": "string"
|
|
6366
|
-
}
|
|
6367
|
-
},
|
|
6368
|
-
"weaknesses": {
|
|
6369
|
-
"type": "array",
|
|
6370
|
-
"items": {
|
|
6371
|
-
"type": "string"
|
|
6372
|
-
}
|
|
6373
|
-
},
|
|
6374
|
-
"excerpts": {
|
|
6375
|
-
"type": "array",
|
|
6376
|
-
"items": {
|
|
6377
|
-
"type": "string"
|
|
6378
|
-
}
|
|
6379
|
-
}
|
|
6380
|
-
}
|
|
6381
|
-
}
|
|
6382
|
-
}
|
|
6383
|
-
}
|
|
6384
|
-
}
|
|
6385
|
-
},
|
|
6386
|
-
{
|
|
6387
|
-
"name": "besales_external_api_channel_create",
|
|
6388
|
-
"description": "v1.5: создать канал External API (партнёрский relay, ChannelType.EXTERNAL_API). Ответ { channelId, apiKey, webhookSecret, ingestPath } — apiKey (Bearer для входящих партнёра) и webhookSecret (HMAC-подпись наших колбэков) показываются ОДИН раз. Перевыпуск — rotate-тулы. Scope: mcp:platform-setup.",
|
|
6389
|
-
"inputSchema": {
|
|
6390
|
-
"type": "object",
|
|
6391
|
-
"required": [
|
|
6392
|
-
"callback_url"
|
|
6393
|
-
],
|
|
6394
|
-
"additionalProperties": false,
|
|
6395
|
-
"properties": {
|
|
6396
|
-
"workspace_id": {
|
|
7417
|
+
"from": {
|
|
7418
|
+
"type": "string",
|
|
7419
|
+
"format": "date",
|
|
7420
|
+
"description": "Начальная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
7421
|
+
},
|
|
7422
|
+
"to": {
|
|
7423
|
+
"type": "string",
|
|
7424
|
+
"format": "date",
|
|
7425
|
+
"description": "Конечная календарная дата МСК (YYYY-MM-DD) для mode=range."
|
|
7426
|
+
},
|
|
7427
|
+
"platform_id": {
|
|
7428
|
+
"type": "string",
|
|
7429
|
+
"format": "uuid"
|
|
7430
|
+
},
|
|
7431
|
+
"funnel": {
|
|
6397
7432
|
"type": "string",
|
|
6398
|
-
"
|
|
6399
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
7433
|
+
"minLength": 1
|
|
6400
7434
|
},
|
|
6401
|
-
"
|
|
7435
|
+
"funnel_mode": {
|
|
6402
7436
|
"type": "string",
|
|
6403
|
-
"
|
|
6404
|
-
|
|
6405
|
-
|
|
7437
|
+
"enum": [
|
|
7438
|
+
"none"
|
|
7439
|
+
]
|
|
6406
7440
|
},
|
|
6407
|
-
"
|
|
7441
|
+
"segment": {
|
|
6408
7442
|
"type": "string",
|
|
6409
|
-
"
|
|
6410
|
-
"description": "URL партнёра (HTTPS), куда POST'им ответы AI + follow-up (HMAC-подписанные колбэки)."
|
|
7443
|
+
"minLength": 1
|
|
6411
7444
|
},
|
|
6412
|
-
"
|
|
7445
|
+
"product": {
|
|
6413
7446
|
"type": "string",
|
|
6414
|
-
"minLength": 1
|
|
6415
|
-
|
|
6416
|
-
|
|
7447
|
+
"minLength": 1
|
|
7448
|
+
},
|
|
7449
|
+
"product_mode": {
|
|
7450
|
+
"type": "string",
|
|
7451
|
+
"enum": [
|
|
7452
|
+
"none"
|
|
7453
|
+
]
|
|
6417
7454
|
}
|
|
6418
7455
|
}
|
|
6419
7456
|
}
|
|
6420
7457
|
},
|
|
6421
7458
|
{
|
|
6422
|
-
"name": "
|
|
6423
|
-
"description": "
|
|
7459
|
+
"name": "besales_followup_sequence_list",
|
|
7460
|
+
"description": "Read-only список follow-up-цепочек канала: id, имя, тип, триггер, enabled, число шагов. Полный config — только по sequence_id или include_config=true (иначе ответ раздувает контекст). Upsert заменяет config ЦЕЛИКОМ, поэтому перед правкой одного шага прочитай конфиг здесь. Scope: read:analytics.",
|
|
6424
7461
|
"inputSchema": {
|
|
6425
7462
|
"type": "object",
|
|
6426
7463
|
"required": [
|
|
6427
|
-
"
|
|
7464
|
+
"platform_id"
|
|
6428
7465
|
],
|
|
6429
7466
|
"additionalProperties": false,
|
|
6430
7467
|
"properties": {
|
|
6431
|
-
"
|
|
7468
|
+
"platform_id": {
|
|
6432
7469
|
"type": "string",
|
|
6433
|
-
"format": "uuid"
|
|
6434
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
7470
|
+
"format": "uuid"
|
|
6435
7471
|
},
|
|
6436
|
-
"
|
|
7472
|
+
"sequence_id": {
|
|
6437
7473
|
"type": "string",
|
|
6438
|
-
"format": "uuid"
|
|
7474
|
+
"format": "uuid",
|
|
7475
|
+
"description": "Вернуть одну цепочку вместе с полным конфигом."
|
|
7476
|
+
},
|
|
7477
|
+
"include_config": {
|
|
7478
|
+
"type": "boolean",
|
|
7479
|
+
"description": "Отдать конфиги всех цепочек. По умолчанию не отдаются — они объёмные."
|
|
6439
7480
|
}
|
|
6440
7481
|
}
|
|
6441
7482
|
}
|
|
6442
7483
|
},
|
|
6443
7484
|
{
|
|
6444
|
-
"name": "
|
|
6445
|
-
"description": "
|
|
7485
|
+
"name": "besales_followup_step_stats",
|
|
7486
|
+
"description": "Read-only витрина по шагам follow-up-цепочки: сколько ушло, сколько пропущено и почему (условие, плейсхолдер, окно валидности, закрытый слот). Окно по умолчанию 30 дней. Scope: read:analytics.",
|
|
6446
7487
|
"inputSchema": {
|
|
6447
7488
|
"type": "object",
|
|
6448
7489
|
"required": [
|
|
6449
|
-
"
|
|
7490
|
+
"platform_id",
|
|
7491
|
+
"sequence_id"
|
|
6450
7492
|
],
|
|
6451
7493
|
"additionalProperties": false,
|
|
6452
7494
|
"properties": {
|
|
6453
|
-
"
|
|
7495
|
+
"platform_id": {
|
|
6454
7496
|
"type": "string",
|
|
6455
|
-
"format": "uuid"
|
|
6456
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session (BESALES_WORKSPACE_ID or active connection)."
|
|
7497
|
+
"format": "uuid"
|
|
6457
7498
|
},
|
|
6458
|
-
"
|
|
7499
|
+
"sequence_id": {
|
|
6459
7500
|
"type": "string",
|
|
6460
7501
|
"format": "uuid"
|
|
7502
|
+
},
|
|
7503
|
+
"from": {
|
|
7504
|
+
"type": "string",
|
|
7505
|
+
"format": "date",
|
|
7506
|
+
"description": "Начало окна (YYYY-MM-DD). По умолчанию 30 дней назад."
|
|
7507
|
+
},
|
|
7508
|
+
"to": {
|
|
7509
|
+
"type": "string",
|
|
7510
|
+
"format": "date",
|
|
7511
|
+
"description": "Конец окна (YYYY-MM-DD). По умолчанию сейчас."
|
|
6461
7512
|
}
|
|
6462
7513
|
}
|
|
6463
7514
|
}
|
|
6464
7515
|
},
|
|
6465
7516
|
{
|
|
6466
|
-
"name": "
|
|
6467
|
-
"description": "
|
|
7517
|
+
"name": "besales_scheduled_task_list",
|
|
7518
|
+
"description": "Read-only список плановых задач канала (модуль «Задачи»). Единственный тип — DIALOGUE_ANALYSIS (суфлёр: саммари дня + почасовой «Статус коммуникации»). Scope: mcp:platform-setup.",
|
|
6468
7519
|
"inputSchema": {
|
|
6469
7520
|
"type": "object",
|
|
6470
7521
|
"required": [
|
|
6471
|
-
"
|
|
7522
|
+
"platform_id"
|
|
6472
7523
|
],
|
|
6473
7524
|
"additionalProperties": false,
|
|
6474
7525
|
"properties": {
|
|
6475
|
-
"
|
|
7526
|
+
"platform_id": {
|
|
6476
7527
|
"type": "string",
|
|
6477
7528
|
"format": "uuid",
|
|
6478
|
-
"description": "
|
|
6479
|
-
},
|
|
6480
|
-
"channel_id": {
|
|
6481
|
-
"type": "string",
|
|
6482
|
-
"format": "uuid"
|
|
6483
|
-
},
|
|
6484
|
-
"callback_url": {
|
|
6485
|
-
"type": "string",
|
|
6486
|
-
"format": "uri",
|
|
6487
|
-
"description": "Опционально: новый callback URL."
|
|
6488
|
-
},
|
|
6489
|
-
"source_channel": {
|
|
6490
|
-
"type": "string",
|
|
6491
|
-
"minLength": 1,
|
|
6492
|
-
"maxLength": 64,
|
|
6493
|
-
"description": "Опционально: новая метка транспорта."
|
|
7529
|
+
"description": "Канал (только Bitrix24Bot)."
|
|
6494
7530
|
}
|
|
6495
7531
|
}
|
|
6496
7532
|
}
|
|
6497
7533
|
},
|
|
6498
7534
|
{
|
|
6499
|
-
"name": "
|
|
6500
|
-
"description": "
|
|
7535
|
+
"name": "besales_scheduled_task_update",
|
|
7536
|
+
"description": "Создать/обновить плановую задачу канала. Конфиг мержится на сервере — присылай только изменяемые поля. Требует explicit_confirmation: задача пишет в CRM клиента по расписанию. Scope: mcp:platform-setup.",
|
|
6501
7537
|
"inputSchema": {
|
|
6502
7538
|
"type": "object",
|
|
6503
|
-
"required": [
|
|
7539
|
+
"required": [
|
|
7540
|
+
"platform_id",
|
|
7541
|
+
"is_enabled"
|
|
7542
|
+
],
|
|
6504
7543
|
"additionalProperties": false,
|
|
6505
7544
|
"properties": {
|
|
6506
|
-
"
|
|
7545
|
+
"platform_id": {
|
|
6507
7546
|
"type": "string",
|
|
6508
7547
|
"format": "uuid",
|
|
6509
|
-
"description": "
|
|
6510
|
-
},
|
|
6511
|
-
"platform_ids": {
|
|
6512
|
-
"type": "array",
|
|
6513
|
-
"items": {
|
|
6514
|
-
"type": "string",
|
|
6515
|
-
"format": "uuid"
|
|
6516
|
-
},
|
|
6517
|
-
"description": "Фильтр по каналам (ChatUser.platformId)."
|
|
7548
|
+
"description": "Канал (только Bitrix24Bot)."
|
|
6518
7549
|
},
|
|
6519
|
-
"
|
|
7550
|
+
"type": {
|
|
6520
7551
|
"type": "string",
|
|
6521
|
-
"
|
|
6522
|
-
|
|
7552
|
+
"enum": [
|
|
7553
|
+
"DIALOGUE_ANALYSIS"
|
|
7554
|
+
],
|
|
7555
|
+
"default": "DIALOGUE_ANALYSIS"
|
|
6523
7556
|
},
|
|
6524
|
-
"
|
|
6525
|
-
"type": "
|
|
6526
|
-
"
|
|
6527
|
-
"description": "ISO 8601, верхняя граница активности диалога."
|
|
7557
|
+
"is_enabled": {
|
|
7558
|
+
"type": "boolean",
|
|
7559
|
+
"description": "Выключено — не выполняется вовсе, независимо от режимов."
|
|
6528
7560
|
},
|
|
6529
|
-
"
|
|
6530
|
-
"type": "
|
|
6531
|
-
"
|
|
6532
|
-
|
|
7561
|
+
"daily": {
|
|
7562
|
+
"type": "object",
|
|
7563
|
+
"additionalProperties": false,
|
|
7564
|
+
"required": [
|
|
7565
|
+
"enabled"
|
|
7566
|
+
],
|
|
7567
|
+
"properties": {
|
|
7568
|
+
"enabled": {
|
|
7569
|
+
"type": "boolean"
|
|
7570
|
+
},
|
|
7571
|
+
"summary_time": {
|
|
7572
|
+
"type": "string",
|
|
7573
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7574
|
+
"description": "Локальное время канала, HH:mm"
|
|
7575
|
+
},
|
|
7576
|
+
"output": {
|
|
7577
|
+
"type": "string",
|
|
7578
|
+
"enum": [
|
|
7579
|
+
"note",
|
|
7580
|
+
"hidden"
|
|
7581
|
+
],
|
|
7582
|
+
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
7583
|
+
}
|
|
6533
7584
|
},
|
|
6534
|
-
"description": "
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
7585
|
+
"description": "Саммари дня. Пишется ПОСЛЕ summary_time по локальному времени канала.",
|
|
7586
|
+
"if": {
|
|
7587
|
+
"properties": {
|
|
7588
|
+
"enabled": {
|
|
7589
|
+
"const": true
|
|
7590
|
+
}
|
|
7591
|
+
},
|
|
7592
|
+
"required": [
|
|
7593
|
+
"enabled"
|
|
7594
|
+
]
|
|
6540
7595
|
},
|
|
6541
|
-
"
|
|
7596
|
+
"then": {
|
|
7597
|
+
"required": [
|
|
7598
|
+
"enabled",
|
|
7599
|
+
"summary_time"
|
|
7600
|
+
]
|
|
7601
|
+
}
|
|
6542
7602
|
},
|
|
6543
|
-
"
|
|
6544
|
-
"type": "
|
|
6545
|
-
"
|
|
6546
|
-
|
|
6547
|
-
"
|
|
6548
|
-
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
"
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
"
|
|
7603
|
+
"hourly": {
|
|
7604
|
+
"type": "object",
|
|
7605
|
+
"additionalProperties": false,
|
|
7606
|
+
"required": [
|
|
7607
|
+
"enabled"
|
|
7608
|
+
],
|
|
7609
|
+
"properties": {
|
|
7610
|
+
"enabled": {
|
|
7611
|
+
"type": "boolean"
|
|
7612
|
+
},
|
|
7613
|
+
"window_start": {
|
|
7614
|
+
"type": "string",
|
|
7615
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7616
|
+
"description": "Локальное время канала, HH:mm"
|
|
7617
|
+
},
|
|
7618
|
+
"window_end": {
|
|
7619
|
+
"type": "string",
|
|
7620
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7621
|
+
"description": "Локальное время канала, HH:mm"
|
|
7622
|
+
},
|
|
7623
|
+
"min_new_events": {
|
|
7624
|
+
"type": "integer",
|
|
7625
|
+
"minimum": 1,
|
|
7626
|
+
"description": "Порог новых событий: не набрано — разбор не запускается и заметка не пишется."
|
|
7627
|
+
},
|
|
7628
|
+
"output": {
|
|
7629
|
+
"type": "string",
|
|
7630
|
+
"enum": [
|
|
7631
|
+
"note",
|
|
7632
|
+
"hidden"
|
|
7633
|
+
],
|
|
7634
|
+
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
7635
|
+
}
|
|
7636
|
+
},
|
|
7637
|
+
"description": "«Статус коммуникации» — раз в час внутри рабочего окна и только при новых сообщениях.",
|
|
7638
|
+
"if": {
|
|
7639
|
+
"properties": {
|
|
7640
|
+
"enabled": {
|
|
7641
|
+
"const": true
|
|
7642
|
+
}
|
|
7643
|
+
},
|
|
7644
|
+
"required": [
|
|
7645
|
+
"enabled"
|
|
6555
7646
|
]
|
|
6556
7647
|
},
|
|
6557
|
-
"
|
|
7648
|
+
"then": {
|
|
7649
|
+
"required": [
|
|
7650
|
+
"enabled",
|
|
7651
|
+
"window_start",
|
|
7652
|
+
"window_end"
|
|
7653
|
+
]
|
|
7654
|
+
}
|
|
6558
7655
|
},
|
|
6559
|
-
"
|
|
7656
|
+
"funnels": {
|
|
6560
7657
|
"type": "array",
|
|
6561
7658
|
"items": {
|
|
6562
7659
|
"type": "string",
|
|
6563
7660
|
"minLength": 1
|
|
6564
7661
|
},
|
|
6565
|
-
"description": "
|
|
6566
|
-
},
|
|
6567
|
-
"action_success": {
|
|
6568
|
-
"type": "boolean",
|
|
6569
|
-
"description": "Успешность подходящего trigger-action."
|
|
7662
|
+
"description": "ID воронок CRM. Пусто = без фильтра."
|
|
6570
7663
|
},
|
|
6571
|
-
"
|
|
6572
|
-
"type": "
|
|
6573
|
-
"
|
|
6574
|
-
|
|
7664
|
+
"managers": {
|
|
7665
|
+
"type": "array",
|
|
7666
|
+
"items": {
|
|
7667
|
+
"type": "integer",
|
|
7668
|
+
"minimum": 1
|
|
7669
|
+
},
|
|
7670
|
+
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Пусто = без фильтра."
|
|
6575
7671
|
},
|
|
6576
|
-
"
|
|
6577
|
-
"type":
|
|
6578
|
-
|
|
7672
|
+
"daily_prompt": {
|
|
7673
|
+
"type": [
|
|
7674
|
+
"string",
|
|
7675
|
+
"null"
|
|
7676
|
+
],
|
|
7677
|
+
"minLength": 1,
|
|
7678
|
+
"description": "Переопределение системного промпта саммари дня. Пусто = встроенный (написан под «ткани/производство»). null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
6579
7679
|
},
|
|
6580
|
-
"
|
|
6581
|
-
"type":
|
|
6582
|
-
|
|
7680
|
+
"hourly_prompt": {
|
|
7681
|
+
"type": [
|
|
7682
|
+
"string",
|
|
7683
|
+
"null"
|
|
7684
|
+
],
|
|
7685
|
+
"minLength": 1,
|
|
7686
|
+
"description": "Переопределение системного промпта почасового статуса. null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
6583
7687
|
},
|
|
6584
|
-
"
|
|
7688
|
+
"explicit_confirmation": {
|
|
6585
7689
|
"type": "boolean",
|
|
6586
|
-
"description": "true
|
|
6587
|
-
},
|
|
6588
|
-
"limit": {
|
|
6589
|
-
"type": "integer",
|
|
6590
|
-
"minimum": 1,
|
|
6591
|
-
"maximum": 100,
|
|
6592
|
-
"description": "Размер страницы (дефолт 50)."
|
|
6593
|
-
},
|
|
6594
|
-
"cursor": {
|
|
6595
|
-
"type": "string",
|
|
6596
|
-
"description": "Курсор пагинации из предыдущего ответа."
|
|
6597
|
-
}
|
|
6598
|
-
}
|
|
6599
|
-
}
|
|
6600
|
-
},
|
|
6601
|
-
{
|
|
6602
|
-
"name": "besales_dialogue_transcript",
|
|
6603
|
-
"description": "Read-only полный транскрипт одного диалога + triggerExecutions, привязанные к messageId. Действия содержат type/success/time и безопасную выжимку dealId/dealNumber/skipped без сырого result. Пагинация сообщений через cursor. Scope: read:conversations.",
|
|
6604
|
-
"inputSchema": {
|
|
6605
|
-
"type": "object",
|
|
6606
|
-
"required": [
|
|
6607
|
-
"conversation_id"
|
|
6608
|
-
],
|
|
6609
|
-
"additionalProperties": false,
|
|
6610
|
-
"properties": {
|
|
6611
|
-
"workspace_id": {
|
|
6612
|
-
"type": "string",
|
|
6613
|
-
"format": "uuid",
|
|
6614
|
-
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
6615
|
-
},
|
|
6616
|
-
"conversation_id": {
|
|
6617
|
-
"type": "string",
|
|
6618
|
-
"format": "uuid",
|
|
6619
|
-
"description": "ID диалога (= conversationId из манифеста / ChatUser.id)."
|
|
6620
|
-
},
|
|
6621
|
-
"limit": {
|
|
6622
|
-
"type": "integer",
|
|
6623
|
-
"minimum": 1,
|
|
6624
|
-
"maximum": 100,
|
|
6625
|
-
"description": "Сообщений на страницу (дефолт 50)."
|
|
6626
|
-
},
|
|
6627
|
-
"cursor": {
|
|
6628
|
-
"type": "string",
|
|
6629
|
-
"description": "Курсор пагинации сообщений (хронологический asc)."
|
|
7690
|
+
"description": "Обязательно true после подтверждения оператором."
|
|
6630
7691
|
}
|
|
6631
7692
|
}
|
|
6632
7693
|
}
|
|
@@ -6821,9 +7882,9 @@
|
|
|
6821
7882
|
}
|
|
6822
7883
|
],
|
|
6823
7884
|
"summary": {
|
|
6824
|
-
"total_tools":
|
|
7885
|
+
"total_tools": 156,
|
|
6825
7886
|
"tools_by_category": {
|
|
6826
|
-
"getcourse_wave":
|
|
7887
|
+
"getcourse_wave": 6,
|
|
6827
7888
|
"files_upload": 3,
|
|
6828
7889
|
"platform_provisioning": 3,
|
|
6829
7890
|
"crm_provisioning": 6,
|
|
@@ -6856,7 +7917,10 @@
|
|
|
6856
7917
|
"platform_clone": 3,
|
|
6857
7918
|
"session_workspace": 2,
|
|
6858
7919
|
"model_comparison": 4,
|
|
6859
|
-
"dialog_script": 2
|
|
7920
|
+
"dialog_script": 2,
|
|
7921
|
+
"broadcast_analytics": 2,
|
|
7922
|
+
"scheduled_tasks": 2,
|
|
7923
|
+
"follow_up_read": 2
|
|
6860
7924
|
},
|
|
6861
7925
|
"external_execution_pairs": [
|
|
6862
7926
|
"besales_icp_analysis_get_instructions / submit",
|