@besales/mcp 0.31.0 → 0.33.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 +9 -2
- package/dist/instructions/server-instructions.d.ts +1 -1
- package/dist/instructions/server-instructions.js +8 -0
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/resources/docs/crm-integration.md +2 -2
- package/dist/schemas/mcp-tools.json +1036 -5
- 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/platform-setup.d.ts +91 -0
- package/dist/tools/definitions/platform-setup.js +355 -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 +4 -0
- package/dist/tools/definitions/shared.js +14 -0
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions.d.ts +123 -2
- package/dist/tools/definitions.js +4 -0
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +1 -1
|
@@ -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.",
|
|
@@ -1490,6 +1490,611 @@
|
|
|
1490
1490
|
}
|
|
1491
1491
|
}
|
|
1492
1492
|
},
|
|
1493
|
+
{
|
|
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
|
+
"inputSchema": {
|
|
1497
|
+
"type": "object",
|
|
1498
|
+
"required": [
|
|
1499
|
+
"platform_id",
|
|
1500
|
+
"crm_id",
|
|
1501
|
+
"channels",
|
|
1502
|
+
"contacts"
|
|
1503
|
+
],
|
|
1504
|
+
"properties": {
|
|
1505
|
+
"workspace_id": {
|
|
1506
|
+
"type": "string",
|
|
1507
|
+
"format": "uuid",
|
|
1508
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1509
|
+
},
|
|
1510
|
+
"platform_id": {
|
|
1511
|
+
"type": "string",
|
|
1512
|
+
"format": "uuid",
|
|
1513
|
+
"description": "GetCourse PLATFORM uuid."
|
|
1514
|
+
},
|
|
1515
|
+
"crm_id": {
|
|
1516
|
+
"type": "string",
|
|
1517
|
+
"format": "uuid",
|
|
1518
|
+
"description": "GetCourse CRM uuid."
|
|
1519
|
+
},
|
|
1520
|
+
"launch_type": {
|
|
1521
|
+
"type": "string",
|
|
1522
|
+
"enum": [
|
|
1523
|
+
"status"
|
|
1524
|
+
],
|
|
1525
|
+
"description": "Only status mode is supported. For board/group use besales_getcourse_wave_import."
|
|
1526
|
+
},
|
|
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": {
|
|
1536
|
+
"type": "string",
|
|
1537
|
+
"maxLength": 200,
|
|
1538
|
+
"description": "Canonical business-funnel key/name for analytics."
|
|
1539
|
+
},
|
|
1540
|
+
"segment": {
|
|
1541
|
+
"type": "string",
|
|
1542
|
+
"maxLength": 200,
|
|
1543
|
+
"description": "Wave segment label for analytics."
|
|
1544
|
+
},
|
|
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": {
|
|
1585
|
+
"type": "array",
|
|
1586
|
+
"minItems": 1,
|
|
1587
|
+
"maxItems": 5000,
|
|
1588
|
+
"description": "Durable-run cohort.",
|
|
1589
|
+
"items": {
|
|
1590
|
+
"type": "object",
|
|
1591
|
+
"required": [
|
|
1592
|
+
"contact_id"
|
|
1593
|
+
],
|
|
1594
|
+
"properties": {
|
|
1595
|
+
"contact_id": {
|
|
1596
|
+
"type": "string",
|
|
1597
|
+
"description": "GetCourse user id."
|
|
1598
|
+
},
|
|
1599
|
+
"deal_id": {
|
|
1600
|
+
"type": "string",
|
|
1601
|
+
"description": "Optional order id to pin."
|
|
1602
|
+
},
|
|
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."
|
|
1620
|
+
}
|
|
1621
|
+
},
|
|
1622
|
+
"additionalProperties": false
|
|
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."
|
|
1699
|
+
}
|
|
1700
|
+
},
|
|
1701
|
+
"additionalProperties": false
|
|
1702
|
+
}
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
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.",
|
|
1707
|
+
"inputSchema": {
|
|
1708
|
+
"type": "object",
|
|
1709
|
+
"required": [
|
|
1710
|
+
"run_id"
|
|
1711
|
+
],
|
|
1712
|
+
"properties": {
|
|
1713
|
+
"workspace_id": {
|
|
1714
|
+
"type": "string",
|
|
1715
|
+
"format": "uuid",
|
|
1716
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1717
|
+
},
|
|
1718
|
+
"run_id": {
|
|
1719
|
+
"type": "string",
|
|
1720
|
+
"format": "uuid",
|
|
1721
|
+
"description": "Durable run uuid returned by besales_getcourse_wave_run_start or an HTTP 409 response."
|
|
1722
|
+
}
|
|
1723
|
+
},
|
|
1724
|
+
"additionalProperties": false
|
|
1725
|
+
}
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
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.",
|
|
1730
|
+
"inputSchema": {
|
|
1731
|
+
"type": "object",
|
|
1732
|
+
"required": [
|
|
1733
|
+
"run_id"
|
|
1734
|
+
],
|
|
1735
|
+
"properties": {
|
|
1736
|
+
"workspace_id": {
|
|
1737
|
+
"type": "string",
|
|
1738
|
+
"format": "uuid",
|
|
1739
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1740
|
+
},
|
|
1741
|
+
"run_id": {
|
|
1742
|
+
"type": "string",
|
|
1743
|
+
"format": "uuid",
|
|
1744
|
+
"description": "Durable GetCourse wave run uuid."
|
|
1745
|
+
},
|
|
1746
|
+
"status": {
|
|
1747
|
+
"type": "string",
|
|
1748
|
+
"enum": [
|
|
1749
|
+
"PENDING",
|
|
1750
|
+
"CLAIMED",
|
|
1751
|
+
"SENT",
|
|
1752
|
+
"SKIPPED",
|
|
1753
|
+
"FAILED",
|
|
1754
|
+
"UNKNOWN"
|
|
1755
|
+
],
|
|
1756
|
+
"description": "Optional per-contact status filter."
|
|
1757
|
+
},
|
|
1758
|
+
"cursor": {
|
|
1759
|
+
"type": "string",
|
|
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_getcourse_wave_run_batch_start",
|
|
1799
|
+
"description": "Start an idempotent GetCourse status-mode wave-run batch with 1..10 sequential segments (at most 2000 contacts per segment and 5000 total). Generate batch_key once per attempt and reuse it for retries: the same key returns the existing batch, while a new key creates a second campaign. A changed composition with the same key returns HTTP 409. Only batch-level platform_id, crm_id and confirm are accepted. WITHOUT confirm=true this is a DRY-RUN. A real launch also requires MCP-only explicit_confirmation=true. Poll only besales_getcourse_wave_run_batch_status. Scope: mcp:platform-setup.",
|
|
1800
|
+
"inputSchema": {
|
|
1801
|
+
"type": "object",
|
|
1802
|
+
"required": [
|
|
1803
|
+
"batch_key",
|
|
1804
|
+
"platform_id",
|
|
1805
|
+
"crm_id",
|
|
1806
|
+
"segments"
|
|
1807
|
+
],
|
|
1808
|
+
"properties": {
|
|
1809
|
+
"workspace_id": {
|
|
1810
|
+
"type": "string",
|
|
1811
|
+
"format": "uuid",
|
|
1812
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1813
|
+
},
|
|
1814
|
+
"batch_key": {
|
|
1815
|
+
"type": "string",
|
|
1816
|
+
"description": "Idempotency key. Generate it once for this attempt and reuse it unchanged for every retry."
|
|
1817
|
+
},
|
|
1818
|
+
"platform_id": {
|
|
1819
|
+
"type": "string",
|
|
1820
|
+
"format": "uuid",
|
|
1821
|
+
"description": "GetCourse platform uuid; valid only at batch level."
|
|
1822
|
+
},
|
|
1823
|
+
"crm_id": {
|
|
1824
|
+
"type": "string",
|
|
1825
|
+
"format": "uuid",
|
|
1826
|
+
"description": "GetCourse CRM uuid; valid only at batch level."
|
|
1827
|
+
},
|
|
1828
|
+
"segments": {
|
|
1829
|
+
"type": "array",
|
|
1830
|
+
"minItems": 1,
|
|
1831
|
+
"maxItems": 10,
|
|
1832
|
+
"description": "Sequential status-mode segments. At most 2000 contacts per segment and 5000 contacts across the whole batch.",
|
|
1833
|
+
"items": {
|
|
1834
|
+
"type": "object",
|
|
1835
|
+
"required": [
|
|
1836
|
+
"mode",
|
|
1837
|
+
"contacts",
|
|
1838
|
+
"channels",
|
|
1839
|
+
"deal_fields"
|
|
1840
|
+
],
|
|
1841
|
+
"properties": {
|
|
1842
|
+
"mode": {
|
|
1843
|
+
"type": "string",
|
|
1844
|
+
"enum": [
|
|
1845
|
+
"status"
|
|
1846
|
+
],
|
|
1847
|
+
"description": "Only status mode is supported."
|
|
1848
|
+
},
|
|
1849
|
+
"contacts": {
|
|
1850
|
+
"type": "array",
|
|
1851
|
+
"minItems": 1,
|
|
1852
|
+
"maxItems": 2000,
|
|
1853
|
+
"description": "Cohort of this segment.",
|
|
1854
|
+
"items": {
|
|
1855
|
+
"type": "object",
|
|
1856
|
+
"required": [
|
|
1857
|
+
"contact_id"
|
|
1858
|
+
],
|
|
1859
|
+
"properties": {
|
|
1860
|
+
"contact_id": {
|
|
1861
|
+
"type": "string",
|
|
1862
|
+
"description": "GetCourse user id."
|
|
1863
|
+
},
|
|
1864
|
+
"deal_id": {
|
|
1865
|
+
"type": "string",
|
|
1866
|
+
"description": "Optional order id to pin."
|
|
1867
|
+
},
|
|
1868
|
+
"transport": {
|
|
1869
|
+
"type": "string",
|
|
1870
|
+
"description": "Optional known transport of the contact."
|
|
1871
|
+
},
|
|
1872
|
+
"dialog_id": {
|
|
1873
|
+
"type": "string",
|
|
1874
|
+
"description": "Optional GetCourse dialog id (resp_id)."
|
|
1875
|
+
},
|
|
1876
|
+
"lead_last_active_at": {
|
|
1877
|
+
"type": "string",
|
|
1878
|
+
"format": "date-time",
|
|
1879
|
+
"description": "Legacy ISO timestamp of the lead's last activity."
|
|
1880
|
+
},
|
|
1881
|
+
"segment_entered_at": {
|
|
1882
|
+
"type": "string",
|
|
1883
|
+
"format": "date-time",
|
|
1884
|
+
"description": "Exact ISO timestamp when the contact entered this segment."
|
|
1885
|
+
}
|
|
1886
|
+
},
|
|
1887
|
+
"additionalProperties": false
|
|
1888
|
+
}
|
|
1889
|
+
},
|
|
1890
|
+
"channels": {
|
|
1891
|
+
"type": "array",
|
|
1892
|
+
"items": {
|
|
1893
|
+
"type": "string"
|
|
1894
|
+
},
|
|
1895
|
+
"minItems": 1,
|
|
1896
|
+
"description": "Wave channels (GetCourseTransport: VK|Telegram|MAX|SMS|Email|Site) for analytics."
|
|
1897
|
+
},
|
|
1898
|
+
"deal_fields": {
|
|
1899
|
+
"type": "object",
|
|
1900
|
+
"additionalProperties": {
|
|
1901
|
+
"type": [
|
|
1902
|
+
"string",
|
|
1903
|
+
"number",
|
|
1904
|
+
"boolean",
|
|
1905
|
+
"null"
|
|
1906
|
+
]
|
|
1907
|
+
},
|
|
1908
|
+
"description": "status mode: { \"<numeric fieldId>\": value } applied to every contact's deal."
|
|
1909
|
+
},
|
|
1910
|
+
"funnel": {
|
|
1911
|
+
"type": "string",
|
|
1912
|
+
"maxLength": 200,
|
|
1913
|
+
"description": "Canonical business-funnel key/name for analytics."
|
|
1914
|
+
},
|
|
1915
|
+
"segment": {
|
|
1916
|
+
"type": "string",
|
|
1917
|
+
"maxLength": 200,
|
|
1918
|
+
"description": "Segment label for analytics."
|
|
1919
|
+
},
|
|
1920
|
+
"cohort_label": {
|
|
1921
|
+
"type": "string",
|
|
1922
|
+
"maxLength": 200,
|
|
1923
|
+
"description": "Human-readable name of this concrete segment run."
|
|
1924
|
+
},
|
|
1925
|
+
"message_variant": {
|
|
1926
|
+
"type": "string",
|
|
1927
|
+
"maxLength": 120,
|
|
1928
|
+
"description": "Welcome-message variant for segment analytics."
|
|
1929
|
+
},
|
|
1930
|
+
"found_count": {
|
|
1931
|
+
"type": "integer",
|
|
1932
|
+
"minimum": 0,
|
|
1933
|
+
"maximum": 10000000,
|
|
1934
|
+
"description": "Contacts found in the source before deduplication and filters."
|
|
1935
|
+
},
|
|
1936
|
+
"product_code": {
|
|
1937
|
+
"type": "string",
|
|
1938
|
+
"maxLength": 100,
|
|
1939
|
+
"pattern": "^[^\\s/]+$",
|
|
1940
|
+
"description": "Product code for the funnel→product analytics dictionary."
|
|
1941
|
+
},
|
|
1942
|
+
"product_name": {
|
|
1943
|
+
"type": "string",
|
|
1944
|
+
"maxLength": 200,
|
|
1945
|
+
"description": "Display name of the analytics product."
|
|
1946
|
+
},
|
|
1947
|
+
"preflight": {
|
|
1948
|
+
"type": "object",
|
|
1949
|
+
"description": "Per-contact pre-send gate.",
|
|
1950
|
+
"properties": {
|
|
1951
|
+
"enabled": {
|
|
1952
|
+
"type": "boolean",
|
|
1953
|
+
"description": "false disables the row-level preflight gate."
|
|
1954
|
+
},
|
|
1955
|
+
"product_title": {
|
|
1956
|
+
"type": "string",
|
|
1957
|
+
"maxLength": 500,
|
|
1958
|
+
"description": "Human product title used to build the match key."
|
|
1959
|
+
},
|
|
1960
|
+
"product_match_key": {
|
|
1961
|
+
"type": "string",
|
|
1962
|
+
"maxLength": 500,
|
|
1963
|
+
"description": "Pre-normalized product match key."
|
|
1964
|
+
},
|
|
1965
|
+
"offer_id": {
|
|
1966
|
+
"type": "integer",
|
|
1967
|
+
"minimum": 1,
|
|
1968
|
+
"description": "Optional GetCourse offer id."
|
|
1969
|
+
},
|
|
1970
|
+
"other_product_active_deal_mode": {
|
|
1971
|
+
"type": "string",
|
|
1972
|
+
"enum": [
|
|
1973
|
+
"warn",
|
|
1974
|
+
"block",
|
|
1975
|
+
"ignore"
|
|
1976
|
+
],
|
|
1977
|
+
"description": "How to handle an active deal for another product."
|
|
1978
|
+
}
|
|
1979
|
+
},
|
|
1980
|
+
"additionalProperties": false
|
|
1981
|
+
},
|
|
1982
|
+
"check_messenger_presence": {
|
|
1983
|
+
"type": "boolean",
|
|
1984
|
+
"description": "Whether to skip contacts without Telegram/Max/VK messenger presence."
|
|
1985
|
+
},
|
|
1986
|
+
"dedup_window_days": {
|
|
1987
|
+
"type": "integer",
|
|
1988
|
+
"minimum": 1,
|
|
1989
|
+
"maximum": 365,
|
|
1990
|
+
"description": "Deduplication window in days. 0 is forbidden for batched wave runs."
|
|
1991
|
+
},
|
|
1992
|
+
"dedup_scope": {
|
|
1993
|
+
"type": "string",
|
|
1994
|
+
"enum": [
|
|
1995
|
+
"any",
|
|
1996
|
+
"same_funnel"
|
|
1997
|
+
],
|
|
1998
|
+
"description": "Deduplicate against any wave or only the same canonical funnel."
|
|
1999
|
+
},
|
|
2000
|
+
"chunk_size": {
|
|
2001
|
+
"type": "integer",
|
|
2002
|
+
"minimum": 1,
|
|
2003
|
+
"maximum": 500,
|
|
2004
|
+
"description": "Contacts per sequential durable-run chunk."
|
|
2005
|
+
}
|
|
2006
|
+
},
|
|
2007
|
+
"additionalProperties": false
|
|
2008
|
+
}
|
|
2009
|
+
},
|
|
2010
|
+
"confirm": {
|
|
2011
|
+
"type": "boolean",
|
|
2012
|
+
"description": "Without true the call is a DRY-RUN: no batch is created and nothing is sent. Valid only at batch level."
|
|
2013
|
+
},
|
|
2014
|
+
"explicit_confirmation": {
|
|
2015
|
+
"type": "boolean",
|
|
2016
|
+
"enum": [
|
|
2017
|
+
true
|
|
2018
|
+
],
|
|
2019
|
+
"description": "Required together with confirm=true for a real batch. MCP-only safety gate; not sent to the backend."
|
|
2020
|
+
},
|
|
2021
|
+
"confirmation_reason": {
|
|
2022
|
+
"type": "string",
|
|
2023
|
+
"description": "Optional human-readable reason accompanying explicit confirmation; not sent to the backend."
|
|
2024
|
+
}
|
|
2025
|
+
},
|
|
2026
|
+
"additionalProperties": false
|
|
2027
|
+
}
|
|
2028
|
+
},
|
|
2029
|
+
{
|
|
2030
|
+
"name": "besales_getcourse_wave_run_batch_status",
|
|
2031
|
+
"description": "Get the aggregate status of an idempotent GetCourse wave-run batch. The queue runs segments sequentially with only one run on the platform; poll this one endpoint instead of collecting segment statuses manually. A batch pauses after two consecutive rejected segments and is resumed with besales_getcourse_wave_run_batch_resume. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2032
|
+
"inputSchema": {
|
|
2033
|
+
"type": "object",
|
|
2034
|
+
"required": [
|
|
2035
|
+
"batch_id"
|
|
2036
|
+
],
|
|
2037
|
+
"properties": {
|
|
2038
|
+
"workspace_id": {
|
|
2039
|
+
"type": "string",
|
|
2040
|
+
"format": "uuid",
|
|
2041
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2042
|
+
},
|
|
2043
|
+
"batch_id": {
|
|
2044
|
+
"type": "string",
|
|
2045
|
+
"format": "uuid",
|
|
2046
|
+
"description": "Wave-run batch uuid returned by besales_getcourse_wave_run_batch_start."
|
|
2047
|
+
}
|
|
2048
|
+
},
|
|
2049
|
+
"additionalProperties": false
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
2052
|
+
{
|
|
2053
|
+
"name": "besales_getcourse_wave_run_batch_cancel",
|
|
2054
|
+
"description": "Cancel a GetCourse wave-run batch. Then poll only besales_getcourse_wave_run_batch_status for the aggregate queue state; do not collect segment statuses manually. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2055
|
+
"inputSchema": {
|
|
2056
|
+
"type": "object",
|
|
2057
|
+
"required": [
|
|
2058
|
+
"batch_id"
|
|
2059
|
+
],
|
|
2060
|
+
"properties": {
|
|
2061
|
+
"workspace_id": {
|
|
2062
|
+
"type": "string",
|
|
2063
|
+
"format": "uuid",
|
|
2064
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2065
|
+
},
|
|
2066
|
+
"batch_id": {
|
|
2067
|
+
"type": "string",
|
|
2068
|
+
"format": "uuid",
|
|
2069
|
+
"description": "Wave-run batch uuid."
|
|
2070
|
+
}
|
|
2071
|
+
},
|
|
2072
|
+
"additionalProperties": false
|
|
2073
|
+
}
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
"name": "besales_getcourse_wave_run_batch_resume",
|
|
2077
|
+
"description": "Resume a paused GetCourse wave-run batch after two consecutive rejected segments. The queue continues sequentially with one run on the platform; poll only besales_getcourse_wave_run_batch_status. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2078
|
+
"inputSchema": {
|
|
2079
|
+
"type": "object",
|
|
2080
|
+
"required": [
|
|
2081
|
+
"batch_id"
|
|
2082
|
+
],
|
|
2083
|
+
"properties": {
|
|
2084
|
+
"workspace_id": {
|
|
2085
|
+
"type": "string",
|
|
2086
|
+
"format": "uuid",
|
|
2087
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2088
|
+
},
|
|
2089
|
+
"batch_id": {
|
|
2090
|
+
"type": "string",
|
|
2091
|
+
"format": "uuid",
|
|
2092
|
+
"description": "Paused wave-run batch uuid."
|
|
2093
|
+
}
|
|
2094
|
+
},
|
|
2095
|
+
"additionalProperties": false
|
|
2096
|
+
}
|
|
2097
|
+
},
|
|
1493
2098
|
{
|
|
1494
2099
|
"name": "besales_wazzup_templates_list",
|
|
1495
2100
|
"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.",
|
|
@@ -2700,7 +3305,169 @@
|
|
|
2700
3305
|
]
|
|
2701
3306
|
},
|
|
2702
3307
|
"config": {
|
|
2703
|
-
"type": "object"
|
|
3308
|
+
"type": "object",
|
|
3309
|
+
"description": "Конфигурация цепочки. Ключи — camelCase (передаётся в бэкенд без преобразования). Поля ниже описывают INACTIVE_USER_REACTIVATION; для MEETING_REMINDER/LOST_CLIENTS структура своя и произвольные поля разрешены.",
|
|
3310
|
+
"properties": {
|
|
3311
|
+
"enabled": {
|
|
3312
|
+
"type": "boolean"
|
|
3313
|
+
},
|
|
3314
|
+
"filterMode": {
|
|
3315
|
+
"type": "string",
|
|
3316
|
+
"enum": [
|
|
3317
|
+
"status",
|
|
3318
|
+
"eventType",
|
|
3319
|
+
"variable"
|
|
3320
|
+
],
|
|
3321
|
+
"description": "Режим отбора контактов. Неизвестное значение НЕ включает ни один фильтр — цепочка ушла бы всем контактам канала, поэтому бэкенд его отвергает."
|
|
3322
|
+
},
|
|
3323
|
+
"sequenceConditions": {
|
|
3324
|
+
"type": "array",
|
|
3325
|
+
"items": {
|
|
3326
|
+
"type": "object",
|
|
3327
|
+
"required": [
|
|
3328
|
+
"variable",
|
|
3329
|
+
"op",
|
|
3330
|
+
"value"
|
|
3331
|
+
],
|
|
3332
|
+
"properties": {
|
|
3333
|
+
"variable": {
|
|
3334
|
+
"type": "string",
|
|
3335
|
+
"description": "Имя per-contact переменной канала."
|
|
3336
|
+
},
|
|
3337
|
+
"op": {
|
|
3338
|
+
"type": "string",
|
|
3339
|
+
"enum": [
|
|
3340
|
+
"eq",
|
|
3341
|
+
"neq",
|
|
3342
|
+
"in"
|
|
3343
|
+
]
|
|
3344
|
+
},
|
|
3345
|
+
"value": {
|
|
3346
|
+
"description": "Строка для eq/neq; непустой массив непустых строк для in.",
|
|
3347
|
+
"oneOf": [
|
|
3348
|
+
{
|
|
3349
|
+
"type": "string"
|
|
3350
|
+
},
|
|
3351
|
+
{
|
|
3352
|
+
"type": "array",
|
|
3353
|
+
"items": {
|
|
3354
|
+
"type": "string"
|
|
3355
|
+
}
|
|
3356
|
+
}
|
|
3357
|
+
]
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
},
|
|
3361
|
+
"description": "Обязателен и непуст при filterMode=variable."
|
|
3362
|
+
},
|
|
3363
|
+
"steps": {
|
|
3364
|
+
"type": "array",
|
|
3365
|
+
"minItems": 1,
|
|
3366
|
+
"description": "Шаги цепочки. Пустой массив отвергается: цепочка без шагов ничего не отправит.",
|
|
3367
|
+
"items": {
|
|
3368
|
+
"type": "object",
|
|
3369
|
+
"properties": {
|
|
3370
|
+
"stepType": {
|
|
3371
|
+
"type": "string",
|
|
3372
|
+
"enum": [
|
|
3373
|
+
"message",
|
|
3374
|
+
"webhook"
|
|
3375
|
+
]
|
|
3376
|
+
},
|
|
3377
|
+
"scheduleMode": {
|
|
3378
|
+
"type": "string",
|
|
3379
|
+
"enum": [
|
|
3380
|
+
"offset",
|
|
3381
|
+
"clock"
|
|
3382
|
+
],
|
|
3383
|
+
"description": "clock — время суток + сдвиг дней вместо задержки от последней активности."
|
|
3384
|
+
},
|
|
3385
|
+
"anchorMode": {
|
|
3386
|
+
"type": "string",
|
|
3387
|
+
"enum": [
|
|
3388
|
+
"last_inbound",
|
|
3389
|
+
"variable"
|
|
3390
|
+
],
|
|
3391
|
+
"description": "variable — расписание считается от даты из переменной контакта (календарная цепочка)."
|
|
3392
|
+
},
|
|
3393
|
+
"anchorVariable": {
|
|
3394
|
+
"type": "string",
|
|
3395
|
+
"description": "Имя переменной с якорной датой. Обязательно при anchorMode=variable; переменная должна существовать у канала и НЕ быть константой."
|
|
3396
|
+
},
|
|
3397
|
+
"atTime": {
|
|
3398
|
+
"type": "string",
|
|
3399
|
+
"description": "Время суток HH:MM для scheduleMode=clock."
|
|
3400
|
+
},
|
|
3401
|
+
"dayOffset": {
|
|
3402
|
+
"type": "integer",
|
|
3403
|
+
"minimum": 0,
|
|
3404
|
+
"maximum": 30,
|
|
3405
|
+
"description": "Сдвиг в днях от якоря."
|
|
3406
|
+
},
|
|
3407
|
+
"validityMinutes": {
|
|
3408
|
+
"type": "integer",
|
|
3409
|
+
"minimum": 1,
|
|
3410
|
+
"description": "Окно валидности слота. Меньше 10 минут крон почти всегда промахнётся."
|
|
3411
|
+
},
|
|
3412
|
+
"slotGroup": {
|
|
3413
|
+
"type": "string",
|
|
3414
|
+
"description": "Метка взаимоисключающих вариантов одного момента (first-match-wins). Варианты ОБЯЗАНЫ идти в steps подряд."
|
|
3415
|
+
},
|
|
3416
|
+
"conditions": {
|
|
3417
|
+
"type": "array",
|
|
3418
|
+
"maxItems": 3,
|
|
3419
|
+
"items": {
|
|
3420
|
+
"type": "object",
|
|
3421
|
+
"required": [
|
|
3422
|
+
"variable",
|
|
3423
|
+
"op",
|
|
3424
|
+
"value"
|
|
3425
|
+
],
|
|
3426
|
+
"properties": {
|
|
3427
|
+
"variable": {
|
|
3428
|
+
"type": "string",
|
|
3429
|
+
"description": "Имя per-contact переменной канала."
|
|
3430
|
+
},
|
|
3431
|
+
"op": {
|
|
3432
|
+
"type": "string",
|
|
3433
|
+
"enum": [
|
|
3434
|
+
"eq",
|
|
3435
|
+
"neq",
|
|
3436
|
+
"in"
|
|
3437
|
+
]
|
|
3438
|
+
},
|
|
3439
|
+
"value": {
|
|
3440
|
+
"description": "Строка для eq/neq; непустой массив непустых строк для in.",
|
|
3441
|
+
"oneOf": [
|
|
3442
|
+
{
|
|
3443
|
+
"type": "string"
|
|
3444
|
+
},
|
|
3445
|
+
{
|
|
3446
|
+
"type": "array",
|
|
3447
|
+
"items": {
|
|
3448
|
+
"type": "string"
|
|
3449
|
+
}
|
|
3450
|
+
}
|
|
3451
|
+
]
|
|
3452
|
+
}
|
|
3453
|
+
}
|
|
3454
|
+
},
|
|
3455
|
+
"description": "Условия на переменные контакта; не прошли — шаг пропускается."
|
|
3456
|
+
},
|
|
3457
|
+
"delayHours": {
|
|
3458
|
+
"type": "number"
|
|
3459
|
+
},
|
|
3460
|
+
"delayMinutes": {
|
|
3461
|
+
"type": "number"
|
|
3462
|
+
},
|
|
3463
|
+
"messageConfig": {
|
|
3464
|
+
"type": "object",
|
|
3465
|
+
"description": "Текст/шаблон касания. Плейсхолдеры {name} календарного шага обязаны резолвиться, иначе шаг пропускается в рантайме."
|
|
3466
|
+
}
|
|
3467
|
+
}
|
|
3468
|
+
}
|
|
3469
|
+
}
|
|
3470
|
+
}
|
|
2704
3471
|
},
|
|
2705
3472
|
"explicit_confirmation": {
|
|
2706
3473
|
"type": "boolean"
|
|
@@ -3233,6 +4000,31 @@
|
|
|
3233
4000
|
"MAX"
|
|
3234
4001
|
]
|
|
3235
4002
|
}
|
|
4003
|
+
},
|
|
4004
|
+
"create_missing_deal_enabled": {
|
|
4005
|
+
"type": "boolean",
|
|
4006
|
+
"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."
|
|
4007
|
+
},
|
|
4008
|
+
"create_missing_deal_offer_id": {
|
|
4009
|
+
"type": [
|
|
4010
|
+
"integer",
|
|
4011
|
+
"null"
|
|
4012
|
+
],
|
|
4013
|
+
"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."
|
|
4014
|
+
},
|
|
4015
|
+
"create_missing_deal_funnel_id": {
|
|
4016
|
+
"type": [
|
|
4017
|
+
"integer",
|
|
4018
|
+
"null"
|
|
4019
|
+
],
|
|
4020
|
+
"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."
|
|
4021
|
+
},
|
|
4022
|
+
"create_missing_deal_stage_id": {
|
|
4023
|
+
"type": [
|
|
4024
|
+
"integer",
|
|
4025
|
+
"null"
|
|
4026
|
+
],
|
|
4027
|
+
"description": "OPTIONAL GetCourse stage id inside the funnel above. Must be set together with create_missing_deal_funnel_id."
|
|
3236
4028
|
}
|
|
3237
4029
|
}
|
|
3238
4030
|
},
|
|
@@ -6963,6 +7755,243 @@
|
|
|
6963
7755
|
}
|
|
6964
7756
|
}
|
|
6965
7757
|
}
|
|
7758
|
+
},
|
|
7759
|
+
{
|
|
7760
|
+
"name": "besales_followup_sequence_list",
|
|
7761
|
+
"description": "Read-only список follow-up-цепочек канала: id, имя, тип, триггер, enabled, число шагов. Полный config — только по sequence_id или include_config=true (иначе ответ раздувает контекст). Upsert заменяет config ЦЕЛИКОМ, поэтому перед правкой одного шага прочитай конфиг здесь. Scope: read:analytics.",
|
|
7762
|
+
"inputSchema": {
|
|
7763
|
+
"type": "object",
|
|
7764
|
+
"required": [
|
|
7765
|
+
"platform_id"
|
|
7766
|
+
],
|
|
7767
|
+
"additionalProperties": false,
|
|
7768
|
+
"properties": {
|
|
7769
|
+
"platform_id": {
|
|
7770
|
+
"type": "string",
|
|
7771
|
+
"format": "uuid"
|
|
7772
|
+
},
|
|
7773
|
+
"sequence_id": {
|
|
7774
|
+
"type": "string",
|
|
7775
|
+
"format": "uuid",
|
|
7776
|
+
"description": "Вернуть одну цепочку вместе с полным конфигом."
|
|
7777
|
+
},
|
|
7778
|
+
"include_config": {
|
|
7779
|
+
"type": "boolean",
|
|
7780
|
+
"description": "Отдать конфиги всех цепочек. По умолчанию не отдаются — они объёмные."
|
|
7781
|
+
}
|
|
7782
|
+
}
|
|
7783
|
+
}
|
|
7784
|
+
},
|
|
7785
|
+
{
|
|
7786
|
+
"name": "besales_followup_step_stats",
|
|
7787
|
+
"description": "Read-only витрина по шагам follow-up-цепочки: сколько ушло, сколько пропущено и почему (условие, плейсхолдер, окно валидности, закрытый слот). Окно по умолчанию 30 дней. Scope: read:analytics.",
|
|
7788
|
+
"inputSchema": {
|
|
7789
|
+
"type": "object",
|
|
7790
|
+
"required": [
|
|
7791
|
+
"platform_id",
|
|
7792
|
+
"sequence_id"
|
|
7793
|
+
],
|
|
7794
|
+
"additionalProperties": false,
|
|
7795
|
+
"properties": {
|
|
7796
|
+
"platform_id": {
|
|
7797
|
+
"type": "string",
|
|
7798
|
+
"format": "uuid"
|
|
7799
|
+
},
|
|
7800
|
+
"sequence_id": {
|
|
7801
|
+
"type": "string",
|
|
7802
|
+
"format": "uuid"
|
|
7803
|
+
},
|
|
7804
|
+
"from": {
|
|
7805
|
+
"type": "string",
|
|
7806
|
+
"format": "date",
|
|
7807
|
+
"description": "Начало окна (YYYY-MM-DD). По умолчанию 30 дней назад."
|
|
7808
|
+
},
|
|
7809
|
+
"to": {
|
|
7810
|
+
"type": "string",
|
|
7811
|
+
"format": "date",
|
|
7812
|
+
"description": "Конец окна (YYYY-MM-DD). По умолчанию сейчас."
|
|
7813
|
+
}
|
|
7814
|
+
}
|
|
7815
|
+
}
|
|
7816
|
+
},
|
|
7817
|
+
{
|
|
7818
|
+
"name": "besales_scheduled_task_list",
|
|
7819
|
+
"description": "Read-only список плановых задач канала (модуль «Задачи»). Единственный тип — DIALOGUE_ANALYSIS (суфлёр: саммари дня + почасовой «Статус коммуникации»). Scope: mcp:platform-setup.",
|
|
7820
|
+
"inputSchema": {
|
|
7821
|
+
"type": "object",
|
|
7822
|
+
"required": [
|
|
7823
|
+
"platform_id"
|
|
7824
|
+
],
|
|
7825
|
+
"additionalProperties": false,
|
|
7826
|
+
"properties": {
|
|
7827
|
+
"platform_id": {
|
|
7828
|
+
"type": "string",
|
|
7829
|
+
"format": "uuid",
|
|
7830
|
+
"description": "Канал (только Bitrix24Bot)."
|
|
7831
|
+
}
|
|
7832
|
+
}
|
|
7833
|
+
}
|
|
7834
|
+
},
|
|
7835
|
+
{
|
|
7836
|
+
"name": "besales_scheduled_task_update",
|
|
7837
|
+
"description": "Создать/обновить плановую задачу канала. Конфиг мержится на сервере — присылай только изменяемые поля. Требует explicit_confirmation: задача пишет в CRM клиента по расписанию. Scope: mcp:platform-setup.",
|
|
7838
|
+
"inputSchema": {
|
|
7839
|
+
"type": "object",
|
|
7840
|
+
"required": [
|
|
7841
|
+
"platform_id",
|
|
7842
|
+
"is_enabled"
|
|
7843
|
+
],
|
|
7844
|
+
"additionalProperties": false,
|
|
7845
|
+
"properties": {
|
|
7846
|
+
"platform_id": {
|
|
7847
|
+
"type": "string",
|
|
7848
|
+
"format": "uuid",
|
|
7849
|
+
"description": "Канал (только Bitrix24Bot)."
|
|
7850
|
+
},
|
|
7851
|
+
"type": {
|
|
7852
|
+
"type": "string",
|
|
7853
|
+
"enum": [
|
|
7854
|
+
"DIALOGUE_ANALYSIS"
|
|
7855
|
+
],
|
|
7856
|
+
"default": "DIALOGUE_ANALYSIS"
|
|
7857
|
+
},
|
|
7858
|
+
"is_enabled": {
|
|
7859
|
+
"type": "boolean",
|
|
7860
|
+
"description": "Выключено — не выполняется вовсе, независимо от режимов."
|
|
7861
|
+
},
|
|
7862
|
+
"daily": {
|
|
7863
|
+
"type": "object",
|
|
7864
|
+
"additionalProperties": false,
|
|
7865
|
+
"required": [
|
|
7866
|
+
"enabled"
|
|
7867
|
+
],
|
|
7868
|
+
"properties": {
|
|
7869
|
+
"enabled": {
|
|
7870
|
+
"type": "boolean"
|
|
7871
|
+
},
|
|
7872
|
+
"summary_time": {
|
|
7873
|
+
"type": "string",
|
|
7874
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7875
|
+
"description": "Локальное время канала, HH:mm"
|
|
7876
|
+
},
|
|
7877
|
+
"output": {
|
|
7878
|
+
"type": "string",
|
|
7879
|
+
"enum": [
|
|
7880
|
+
"note",
|
|
7881
|
+
"hidden"
|
|
7882
|
+
],
|
|
7883
|
+
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
7884
|
+
}
|
|
7885
|
+
},
|
|
7886
|
+
"description": "Саммари дня. Пишется ПОСЛЕ summary_time по локальному времени канала.",
|
|
7887
|
+
"if": {
|
|
7888
|
+
"properties": {
|
|
7889
|
+
"enabled": {
|
|
7890
|
+
"const": true
|
|
7891
|
+
}
|
|
7892
|
+
},
|
|
7893
|
+
"required": [
|
|
7894
|
+
"enabled"
|
|
7895
|
+
]
|
|
7896
|
+
},
|
|
7897
|
+
"then": {
|
|
7898
|
+
"required": [
|
|
7899
|
+
"enabled",
|
|
7900
|
+
"summary_time"
|
|
7901
|
+
]
|
|
7902
|
+
}
|
|
7903
|
+
},
|
|
7904
|
+
"hourly": {
|
|
7905
|
+
"type": "object",
|
|
7906
|
+
"additionalProperties": false,
|
|
7907
|
+
"required": [
|
|
7908
|
+
"enabled"
|
|
7909
|
+
],
|
|
7910
|
+
"properties": {
|
|
7911
|
+
"enabled": {
|
|
7912
|
+
"type": "boolean"
|
|
7913
|
+
},
|
|
7914
|
+
"window_start": {
|
|
7915
|
+
"type": "string",
|
|
7916
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7917
|
+
"description": "Локальное время канала, HH:mm"
|
|
7918
|
+
},
|
|
7919
|
+
"window_end": {
|
|
7920
|
+
"type": "string",
|
|
7921
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
7922
|
+
"description": "Локальное время канала, HH:mm"
|
|
7923
|
+
},
|
|
7924
|
+
"min_new_events": {
|
|
7925
|
+
"type": "integer",
|
|
7926
|
+
"minimum": 1,
|
|
7927
|
+
"description": "Порог новых событий: не набрано — разбор не запускается и заметка не пишется."
|
|
7928
|
+
},
|
|
7929
|
+
"output": {
|
|
7930
|
+
"type": "string",
|
|
7931
|
+
"enum": [
|
|
7932
|
+
"note",
|
|
7933
|
+
"hidden"
|
|
7934
|
+
],
|
|
7935
|
+
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
7936
|
+
}
|
|
7937
|
+
},
|
|
7938
|
+
"description": "«Статус коммуникации» — раз в час внутри рабочего окна и только при новых сообщениях.",
|
|
7939
|
+
"if": {
|
|
7940
|
+
"properties": {
|
|
7941
|
+
"enabled": {
|
|
7942
|
+
"const": true
|
|
7943
|
+
}
|
|
7944
|
+
},
|
|
7945
|
+
"required": [
|
|
7946
|
+
"enabled"
|
|
7947
|
+
]
|
|
7948
|
+
},
|
|
7949
|
+
"then": {
|
|
7950
|
+
"required": [
|
|
7951
|
+
"enabled",
|
|
7952
|
+
"window_start",
|
|
7953
|
+
"window_end"
|
|
7954
|
+
]
|
|
7955
|
+
}
|
|
7956
|
+
},
|
|
7957
|
+
"funnels": {
|
|
7958
|
+
"type": "array",
|
|
7959
|
+
"items": {
|
|
7960
|
+
"type": "string",
|
|
7961
|
+
"minLength": 1
|
|
7962
|
+
},
|
|
7963
|
+
"description": "ID воронок CRM. Пусто = без фильтра."
|
|
7964
|
+
},
|
|
7965
|
+
"managers": {
|
|
7966
|
+
"type": "array",
|
|
7967
|
+
"items": {
|
|
7968
|
+
"type": "integer",
|
|
7969
|
+
"minimum": 1
|
|
7970
|
+
},
|
|
7971
|
+
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Пусто = без фильтра."
|
|
7972
|
+
},
|
|
7973
|
+
"daily_prompt": {
|
|
7974
|
+
"type": [
|
|
7975
|
+
"string",
|
|
7976
|
+
"null"
|
|
7977
|
+
],
|
|
7978
|
+
"minLength": 1,
|
|
7979
|
+
"description": "Переопределение системного промпта саммари дня. Пусто = встроенный (написан под «ткани/производство»). null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
7980
|
+
},
|
|
7981
|
+
"hourly_prompt": {
|
|
7982
|
+
"type": [
|
|
7983
|
+
"string",
|
|
7984
|
+
"null"
|
|
7985
|
+
],
|
|
7986
|
+
"minLength": 1,
|
|
7987
|
+
"description": "Переопределение системного промпта почасового статуса. null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
7988
|
+
},
|
|
7989
|
+
"explicit_confirmation": {
|
|
7990
|
+
"type": "boolean",
|
|
7991
|
+
"description": "Обязательно true после подтверждения оператором."
|
|
7992
|
+
}
|
|
7993
|
+
}
|
|
7994
|
+
}
|
|
6966
7995
|
}
|
|
6967
7996
|
],
|
|
6968
7997
|
"resources": [
|
|
@@ -7154,9 +8183,9 @@
|
|
|
7154
8183
|
}
|
|
7155
8184
|
],
|
|
7156
8185
|
"summary": {
|
|
7157
|
-
"total_tools":
|
|
8186
|
+
"total_tools": 160,
|
|
7158
8187
|
"tools_by_category": {
|
|
7159
|
-
"getcourse_wave":
|
|
8188
|
+
"getcourse_wave": 10,
|
|
7160
8189
|
"files_upload": 3,
|
|
7161
8190
|
"platform_provisioning": 3,
|
|
7162
8191
|
"crm_provisioning": 6,
|
|
@@ -7190,7 +8219,9 @@
|
|
|
7190
8219
|
"session_workspace": 2,
|
|
7191
8220
|
"model_comparison": 4,
|
|
7192
8221
|
"dialog_script": 2,
|
|
7193
|
-
"broadcast_analytics": 2
|
|
8222
|
+
"broadcast_analytics": 2,
|
|
8223
|
+
"scheduled_tasks": 2,
|
|
8224
|
+
"follow_up_read": 2
|
|
7194
8225
|
},
|
|
7195
8226
|
"external_execution_pairs": [
|
|
7196
8227
|
"besales_icp_analysis_get_instructions / submit",
|