@carrierllc/mcp 0.2.2 → 0.2.4
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/dist/.metadata_never_index +0 -0
- package/dist/index.js +987 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -74,6 +74,9 @@ async function checkCallQuota(env, sub, tier) {
|
|
|
74
74
|
if (tier === "enterprise") {
|
|
75
75
|
return { allowed: true, remaining: Infinity, resetAt, tier };
|
|
76
76
|
}
|
|
77
|
+
if (!env.CARRIER_USERS) {
|
|
78
|
+
return { allowed: true, remaining: Infinity, resetAt, tier };
|
|
79
|
+
}
|
|
77
80
|
const month = currentMonth();
|
|
78
81
|
const usageKey = `usage:${sub}:${month}`;
|
|
79
82
|
const raw = await env.CARRIER_USERS.get(usageKey, "json").catch(() => null);
|
|
@@ -87,6 +90,7 @@ async function checkCallQuota(env, sub, tier) {
|
|
|
87
90
|
};
|
|
88
91
|
}
|
|
89
92
|
function recordUsage(env, sub, tier) {
|
|
93
|
+
if (!env.CARRIER_USERS) return;
|
|
90
94
|
(async () => {
|
|
91
95
|
const month = currentMonth();
|
|
92
96
|
const usageKey = `usage:${sub}:${month}`;
|
|
@@ -107,6 +111,7 @@ function recordUsage(env, sub, tier) {
|
|
|
107
111
|
async function pushStripeUsageRecord(env, sub, quantity) {
|
|
108
112
|
const stripeKey = env.STRIPE_SECRET_KEY;
|
|
109
113
|
if (!stripeKey) return;
|
|
114
|
+
if (!env.CARRIER_USERS) return;
|
|
110
115
|
const subItemId = await env.CARRIER_USERS.get(`stripe_sub_item_id:${sub}`);
|
|
111
116
|
if (!subItemId) return;
|
|
112
117
|
const body = new URLSearchParams({
|
|
@@ -1475,6 +1480,979 @@ function registerAllTools(server2, ctx) {
|
|
|
1475
1480
|
// src/intelligence.ts
|
|
1476
1481
|
import { z as z2 } from "zod";
|
|
1477
1482
|
|
|
1483
|
+
// ../../packages/ocs-spec/ocs-methods.json
|
|
1484
|
+
var ocs_methods_default = {
|
|
1485
|
+
version: "1.0.0",
|
|
1486
|
+
captured_at: "2026-05-10T20:55:08.779899+00:00",
|
|
1487
|
+
sources: {
|
|
1488
|
+
live_docs_url: "https://docs.esimvault.cloud/ocs-api",
|
|
1489
|
+
server_source_repo: "auroracapital/esimmcp.com",
|
|
1490
|
+
server_source_commit: "8793971",
|
|
1491
|
+
server_source_branch: "feat/intelligence-tools@e200c42 merged to main via restore-mcp-to-main PR#31",
|
|
1492
|
+
notes: "Live docs SPA rendered via Kapture (2026-05-10). Server is a strict subset of live docs (43/52 methods). Zero server\u2192live drift confirmed. 9 live-only methods are v1.1 backlog."
|
|
1493
|
+
},
|
|
1494
|
+
v1_methods: [
|
|
1495
|
+
{
|
|
1496
|
+
name: "list_reseller_accounts",
|
|
1497
|
+
ocs_method: "listResellerAccount",
|
|
1498
|
+
category: "reseller",
|
|
1499
|
+
scope: "read",
|
|
1500
|
+
description: "List all accounts across all resellers",
|
|
1501
|
+
params: {
|
|
1502
|
+
resellerId: { type: "number", required: false }
|
|
1503
|
+
},
|
|
1504
|
+
response: {},
|
|
1505
|
+
annotations: "readOnlyHint",
|
|
1506
|
+
verified_against_server: true,
|
|
1507
|
+
verified_against_live_docs: true
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
name: "get_reseller_info",
|
|
1511
|
+
ocs_method: "getResellerInfo",
|
|
1512
|
+
category: "reseller",
|
|
1513
|
+
scope: "read",
|
|
1514
|
+
description: "Retrieve reseller details",
|
|
1515
|
+
params: {
|
|
1516
|
+
resellerId: { type: "number", required: false }
|
|
1517
|
+
},
|
|
1518
|
+
response: {},
|
|
1519
|
+
annotations: "readOnlyHint",
|
|
1520
|
+
verified_against_server: true,
|
|
1521
|
+
verified_against_live_docs: true
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
name: "esim_status_per_account",
|
|
1525
|
+
ocs_method: "esimStatusPerAccount",
|
|
1526
|
+
category: "reseller",
|
|
1527
|
+
scope: "read",
|
|
1528
|
+
description: "eSIM status breakdown per account",
|
|
1529
|
+
params: {
|
|
1530
|
+
accountId: { type: "number", required: false }
|
|
1531
|
+
},
|
|
1532
|
+
response: {},
|
|
1533
|
+
annotations: "readOnlyHint",
|
|
1534
|
+
verified_against_server: true,
|
|
1535
|
+
verified_against_live_docs: true
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
name: "list_sponsors",
|
|
1539
|
+
ocs_method: "listSponsor",
|
|
1540
|
+
category: "reseller",
|
|
1541
|
+
scope: "read",
|
|
1542
|
+
description: "List all sponsor networks",
|
|
1543
|
+
params: {},
|
|
1544
|
+
response: {},
|
|
1545
|
+
annotations: "readOnlyHint",
|
|
1546
|
+
verified_against_server: true,
|
|
1547
|
+
verified_against_live_docs: true
|
|
1548
|
+
},
|
|
1549
|
+
{
|
|
1550
|
+
name: "list_steering_lists",
|
|
1551
|
+
ocs_method: "listSteeringList",
|
|
1552
|
+
category: "reseller",
|
|
1553
|
+
scope: "read",
|
|
1554
|
+
description: "List all network steering lists",
|
|
1555
|
+
params: {},
|
|
1556
|
+
response: {},
|
|
1557
|
+
annotations: "readOnlyHint",
|
|
1558
|
+
verified_against_server: true,
|
|
1559
|
+
verified_against_live_docs: true
|
|
1560
|
+
},
|
|
1561
|
+
{
|
|
1562
|
+
name: "modify_account_balance",
|
|
1563
|
+
ocs_method: "modifyAccountBalance",
|
|
1564
|
+
category: "reseller",
|
|
1565
|
+
scope: "admin",
|
|
1566
|
+
description: "Adjust or set reseller account balance",
|
|
1567
|
+
params: {
|
|
1568
|
+
accountId: { type: "number", required: true },
|
|
1569
|
+
amount: { type: "number", required: true },
|
|
1570
|
+
mode: { type: "enum[adapt,set]", required: true }
|
|
1571
|
+
},
|
|
1572
|
+
response: {},
|
|
1573
|
+
annotations: "destructiveHint",
|
|
1574
|
+
verified_against_server: true,
|
|
1575
|
+
verified_against_live_docs: true
|
|
1576
|
+
},
|
|
1577
|
+
{
|
|
1578
|
+
name: "get_subscriber",
|
|
1579
|
+
ocs_method: "getSingleSubscriber",
|
|
1580
|
+
category: "subscriber",
|
|
1581
|
+
scope: "read",
|
|
1582
|
+
description: "Get full subscriber details by ICCID or MSISDN",
|
|
1583
|
+
params: {
|
|
1584
|
+
iccid: { type: "string", required: false },
|
|
1585
|
+
msisdn: { type: "string", required: false },
|
|
1586
|
+
with_gz_counter: { type: "boolean", required: false, ocs_field: "withGzCounter", description: "When true, include greenZoneCounter { subscriberId, volumeOnGZ (bytes), lastResetDate, lastUpdateDate } in response" }
|
|
1587
|
+
},
|
|
1588
|
+
response: {
|
|
1589
|
+
greenZoneCounter: { type: "object", present_when: "with_gz_counter=true", fields: { subscriberId: "number", volumeOnGZ: "number (bytes)", lastResetDate: "string (ISO8601)", lastUpdateDate: "string (ISO8601)" } }
|
|
1590
|
+
},
|
|
1591
|
+
annotations: "readOnlyHint",
|
|
1592
|
+
verified_against_server: true,
|
|
1593
|
+
verified_against_live_docs: true
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
name: "list_subscribers",
|
|
1597
|
+
ocs_method: "listSubscriber",
|
|
1598
|
+
category: "subscriber",
|
|
1599
|
+
scope: "read",
|
|
1600
|
+
description: "List subscribers with optional filters",
|
|
1601
|
+
params: {
|
|
1602
|
+
accountId: { type: "number", required: false },
|
|
1603
|
+
status: { type: "string", required: false },
|
|
1604
|
+
offset: { type: "number", required: false },
|
|
1605
|
+
limit: { type: "number", required: false }
|
|
1606
|
+
},
|
|
1607
|
+
response: {},
|
|
1608
|
+
annotations: "readOnlyHint",
|
|
1609
|
+
verified_against_server: true,
|
|
1610
|
+
verified_against_live_docs: true
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
name: "modify_subscriber_balance",
|
|
1614
|
+
ocs_method: "modifySubscriberBalance",
|
|
1615
|
+
category: "subscriber",
|
|
1616
|
+
scope: "write",
|
|
1617
|
+
description: "Adjust or set subscriber balance",
|
|
1618
|
+
params: {
|
|
1619
|
+
iccid: { type: "string", required: true },
|
|
1620
|
+
amount: { type: "number", required: true },
|
|
1621
|
+
mode: { type: "enum[adapt,set]", required: true }
|
|
1622
|
+
},
|
|
1623
|
+
response: {},
|
|
1624
|
+
annotations: "destructiveHint",
|
|
1625
|
+
verified_against_server: true,
|
|
1626
|
+
verified_against_live_docs: true
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
name: "modify_subscriber_status",
|
|
1630
|
+
ocs_method: "modifySubscriberStatus",
|
|
1631
|
+
category: "subscriber",
|
|
1632
|
+
scope: "write",
|
|
1633
|
+
description: "Change subscriber OCS status",
|
|
1634
|
+
params: {
|
|
1635
|
+
iccid: { type: "string", required: true },
|
|
1636
|
+
status: { type: "string", required: true }
|
|
1637
|
+
},
|
|
1638
|
+
response: {},
|
|
1639
|
+
annotations: "destructiveHint",
|
|
1640
|
+
verified_against_server: true,
|
|
1641
|
+
verified_against_live_docs: true
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
name: "change_sim_status",
|
|
1645
|
+
ocs_method: "changeSimStatus",
|
|
1646
|
+
category: "subscriber",
|
|
1647
|
+
scope: "write",
|
|
1648
|
+
description: "Change SIM status at provider level",
|
|
1649
|
+
params: {
|
|
1650
|
+
iccid: { type: "string", required: true },
|
|
1651
|
+
simStatus: { type: "string", required: true }
|
|
1652
|
+
},
|
|
1653
|
+
response: {},
|
|
1654
|
+
annotations: "destructiveHint",
|
|
1655
|
+
verified_against_server: true,
|
|
1656
|
+
verified_against_live_docs: true
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
name: "get_sim_provider_status",
|
|
1660
|
+
ocs_method: "getSimProviderStatus",
|
|
1661
|
+
category: "subscriber",
|
|
1662
|
+
scope: "read",
|
|
1663
|
+
description: "Check SIM provider-level status",
|
|
1664
|
+
params: {
|
|
1665
|
+
iccid: { type: "string", required: true }
|
|
1666
|
+
},
|
|
1667
|
+
response: {},
|
|
1668
|
+
annotations: "readOnlyHint",
|
|
1669
|
+
verified_against_server: true,
|
|
1670
|
+
verified_against_live_docs: true
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
name: "get_subscriber_location",
|
|
1674
|
+
ocs_method: "getSubscriberLocation",
|
|
1675
|
+
category: "subscriber",
|
|
1676
|
+
scope: "read",
|
|
1677
|
+
description: "Get last known subscriber location",
|
|
1678
|
+
params: {
|
|
1679
|
+
iccid: { type: "string", required: true }
|
|
1680
|
+
},
|
|
1681
|
+
response: {},
|
|
1682
|
+
annotations: "readOnlyHint",
|
|
1683
|
+
verified_against_server: true,
|
|
1684
|
+
verified_against_live_docs: true
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
name: "modify_subscriber_contact_info",
|
|
1688
|
+
ocs_method: "modifySubscriberContactInfo",
|
|
1689
|
+
category: "subscriber",
|
|
1690
|
+
scope: "write",
|
|
1691
|
+
description: "Update subscriber contact info",
|
|
1692
|
+
params: {
|
|
1693
|
+
iccid: { type: "string", required: true },
|
|
1694
|
+
firstName: { type: "string", required: false },
|
|
1695
|
+
lastName: { type: "string", required: false },
|
|
1696
|
+
email: { type: "string", required: false },
|
|
1697
|
+
phoneNumber: { type: "string", required: false }
|
|
1698
|
+
},
|
|
1699
|
+
response: {},
|
|
1700
|
+
annotations: "destructiveHint",
|
|
1701
|
+
verified_against_server: true,
|
|
1702
|
+
verified_against_live_docs: true
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
name: "set_subscriber_traffic_restrictions",
|
|
1706
|
+
ocs_method: "setSubscriberTrafficRestrictions",
|
|
1707
|
+
category: "subscriber",
|
|
1708
|
+
scope: "write",
|
|
1709
|
+
description: "Configure traffic restrictions for a subscriber",
|
|
1710
|
+
params: {
|
|
1711
|
+
iccid: { type: "string", required: true },
|
|
1712
|
+
restrictions: { type: "string(JSON)", required: true }
|
|
1713
|
+
},
|
|
1714
|
+
response: {},
|
|
1715
|
+
annotations: "destructiveHint",
|
|
1716
|
+
verified_against_server: true,
|
|
1717
|
+
verified_against_live_docs: true
|
|
1718
|
+
},
|
|
1719
|
+
{
|
|
1720
|
+
name: "modify_subscriber_steering_list",
|
|
1721
|
+
ocs_method: "modifySubscriberSteeringList",
|
|
1722
|
+
category: "subscriber",
|
|
1723
|
+
scope: "write",
|
|
1724
|
+
description: "Change network steering list for a subscriber",
|
|
1725
|
+
params: {
|
|
1726
|
+
iccid: { type: "string", required: true },
|
|
1727
|
+
steeringListId: { type: "number", required: true }
|
|
1728
|
+
},
|
|
1729
|
+
response: {},
|
|
1730
|
+
annotations: "destructiveHint",
|
|
1731
|
+
verified_against_server: true,
|
|
1732
|
+
verified_against_live_docs: true
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
name: "move_subscriber_range_to_account",
|
|
1736
|
+
ocs_method: "moveSubscriberRangeToAccount",
|
|
1737
|
+
category: "subscriber",
|
|
1738
|
+
scope: "admin",
|
|
1739
|
+
description: "Move subscriber range to another account",
|
|
1740
|
+
params: {
|
|
1741
|
+
iccidFrom: { type: "string", required: true },
|
|
1742
|
+
iccidTo: { type: "string", required: true },
|
|
1743
|
+
accountId: { type: "number", required: true }
|
|
1744
|
+
},
|
|
1745
|
+
response: {},
|
|
1746
|
+
annotations: "destructiveHint",
|
|
1747
|
+
verified_against_server: true,
|
|
1748
|
+
verified_against_live_docs: true
|
|
1749
|
+
},
|
|
1750
|
+
{
|
|
1751
|
+
name: "hlr_set_bitrate",
|
|
1752
|
+
ocs_method: "hlrSetBitrate",
|
|
1753
|
+
category: "subscriber",
|
|
1754
|
+
scope: "write",
|
|
1755
|
+
description: "Set HLR bitrate for a subscriber",
|
|
1756
|
+
params: {
|
|
1757
|
+
iccid: { type: "string", required: true },
|
|
1758
|
+
bitrate: { type: "number", required: true }
|
|
1759
|
+
},
|
|
1760
|
+
response: {},
|
|
1761
|
+
annotations: "destructiveHint",
|
|
1762
|
+
verified_against_server: true,
|
|
1763
|
+
verified_against_live_docs: true
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
name: "hlr_get_bitrate",
|
|
1767
|
+
ocs_method: "hlrGetBitrate",
|
|
1768
|
+
category: "subscriber",
|
|
1769
|
+
scope: "read",
|
|
1770
|
+
description: "Get HLR bitrate for a subscriber",
|
|
1771
|
+
params: {
|
|
1772
|
+
iccid: { type: "string", required: true }
|
|
1773
|
+
},
|
|
1774
|
+
response: {},
|
|
1775
|
+
annotations: "readOnlyHint",
|
|
1776
|
+
verified_against_server: true,
|
|
1777
|
+
verified_against_live_docs: true
|
|
1778
|
+
},
|
|
1779
|
+
{
|
|
1780
|
+
name: "list_subscriber_packages",
|
|
1781
|
+
ocs_method: "listSubscriberPrepaidPackages",
|
|
1782
|
+
category: "packages",
|
|
1783
|
+
scope: "read",
|
|
1784
|
+
description: "List all prepaid packages assigned to a subscriber",
|
|
1785
|
+
params: {
|
|
1786
|
+
iccid: { type: "string", required: true }
|
|
1787
|
+
},
|
|
1788
|
+
response: {},
|
|
1789
|
+
annotations: "readOnlyHint",
|
|
1790
|
+
verified_against_server: true,
|
|
1791
|
+
verified_against_live_docs: true
|
|
1792
|
+
},
|
|
1793
|
+
{
|
|
1794
|
+
name: "assign_package",
|
|
1795
|
+
ocs_method: "affectPackageToSubscriber",
|
|
1796
|
+
category: "packages",
|
|
1797
|
+
scope: "write",
|
|
1798
|
+
description: "Assign prepaid package template to subscriber",
|
|
1799
|
+
params: {
|
|
1800
|
+
iccid: { type: "string", required: true },
|
|
1801
|
+
packageTemplateId: { type: "number", required: true }
|
|
1802
|
+
},
|
|
1803
|
+
response: {},
|
|
1804
|
+
annotations: "destructiveHint",
|
|
1805
|
+
verified_against_server: true,
|
|
1806
|
+
verified_against_live_docs: true
|
|
1807
|
+
},
|
|
1808
|
+
{
|
|
1809
|
+
name: "assign_recurring_package",
|
|
1810
|
+
ocs_method: "affectRecurringPackageToSubscriber",
|
|
1811
|
+
category: "packages",
|
|
1812
|
+
scope: "write",
|
|
1813
|
+
description: "Assign recurring prepaid package to subscriber",
|
|
1814
|
+
params: {
|
|
1815
|
+
iccid: { type: "string", required: true },
|
|
1816
|
+
packageTemplateId: { type: "number", required: true }
|
|
1817
|
+
},
|
|
1818
|
+
response: {},
|
|
1819
|
+
annotations: "destructiveHint",
|
|
1820
|
+
verified_against_server: true,
|
|
1821
|
+
verified_against_live_docs: true
|
|
1822
|
+
},
|
|
1823
|
+
{
|
|
1824
|
+
name: "modify_package_limits",
|
|
1825
|
+
ocs_method: "modifySubscriberPrepaidPackageLimits",
|
|
1826
|
+
category: "packages",
|
|
1827
|
+
scope: "write",
|
|
1828
|
+
description: "Change data/voice/SMS limits on active package",
|
|
1829
|
+
params: {
|
|
1830
|
+
iccid: { type: "string", required: true },
|
|
1831
|
+
packageId: { type: "number", required: true },
|
|
1832
|
+
limits: { type: "string(JSON)", required: true }
|
|
1833
|
+
},
|
|
1834
|
+
response: {},
|
|
1835
|
+
annotations: "destructiveHint",
|
|
1836
|
+
verified_against_server: true,
|
|
1837
|
+
verified_against_live_docs: true
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
name: "modify_package_expiry",
|
|
1841
|
+
ocs_method: "modifySubscriberPrepaidPackageExpDate",
|
|
1842
|
+
category: "packages",
|
|
1843
|
+
scope: "write",
|
|
1844
|
+
description: "Change expiration date of active package",
|
|
1845
|
+
params: {
|
|
1846
|
+
iccid: { type: "string", required: true },
|
|
1847
|
+
packageId: { type: "number", required: true },
|
|
1848
|
+
expirationDate: { type: "string(ISO8601)", required: true }
|
|
1849
|
+
},
|
|
1850
|
+
response: {},
|
|
1851
|
+
annotations: "destructiveHint",
|
|
1852
|
+
verified_against_server: true,
|
|
1853
|
+
verified_against_live_docs: true
|
|
1854
|
+
},
|
|
1855
|
+
{
|
|
1856
|
+
name: "modify_package_status",
|
|
1857
|
+
ocs_method: "modifySubscriberPrepaidPackageStatus",
|
|
1858
|
+
category: "packages",
|
|
1859
|
+
scope: "write",
|
|
1860
|
+
description: "Activate or deactivate a subscriber package",
|
|
1861
|
+
params: {
|
|
1862
|
+
iccid: { type: "string", required: true },
|
|
1863
|
+
packageId: { type: "number", required: true },
|
|
1864
|
+
status: { type: "string", required: true }
|
|
1865
|
+
},
|
|
1866
|
+
response: {},
|
|
1867
|
+
annotations: "destructiveHint",
|
|
1868
|
+
verified_against_server: true,
|
|
1869
|
+
verified_against_live_docs: true
|
|
1870
|
+
},
|
|
1871
|
+
{
|
|
1872
|
+
name: "stop_resume_recurring_package",
|
|
1873
|
+
ocs_method: "stopResumeSubsRecurringPackage",
|
|
1874
|
+
category: "packages",
|
|
1875
|
+
scope: "write",
|
|
1876
|
+
description: "Stop or resume recurring package auto-renewal",
|
|
1877
|
+
params: {
|
|
1878
|
+
iccid: { type: "string", required: true },
|
|
1879
|
+
packageId: { type: "number", required: true },
|
|
1880
|
+
action: { type: "enum[stop,resume]", required: true }
|
|
1881
|
+
},
|
|
1882
|
+
response: {},
|
|
1883
|
+
annotations: "destructiveHint",
|
|
1884
|
+
verified_against_server: true,
|
|
1885
|
+
verified_against_live_docs: true
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
name: "delete_subscriber_package",
|
|
1889
|
+
ocs_method: "deleteSubscriberPackage",
|
|
1890
|
+
category: "packages",
|
|
1891
|
+
scope: "admin",
|
|
1892
|
+
description: "Remove a package from a subscriber",
|
|
1893
|
+
params: {
|
|
1894
|
+
iccid: { type: "string", required: true },
|
|
1895
|
+
packageId: { type: "number", required: true }
|
|
1896
|
+
},
|
|
1897
|
+
response: {},
|
|
1898
|
+
annotations: "destructiveHint",
|
|
1899
|
+
verified_against_server: true,
|
|
1900
|
+
verified_against_live_docs: true
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
name: "clean_all_packages",
|
|
1904
|
+
ocs_method: "cleanSubscriberAllPackages",
|
|
1905
|
+
category: "packages",
|
|
1906
|
+
scope: "admin",
|
|
1907
|
+
description: "Remove ALL packages from a subscriber",
|
|
1908
|
+
params: {
|
|
1909
|
+
iccid: { type: "string", required: true }
|
|
1910
|
+
},
|
|
1911
|
+
response: {},
|
|
1912
|
+
annotations: "destructiveHint",
|
|
1913
|
+
verified_against_server: true,
|
|
1914
|
+
verified_against_live_docs: true
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
name: "list_package_templates",
|
|
1918
|
+
ocs_method: "listPrepaidPackageTemplate",
|
|
1919
|
+
category: "templates",
|
|
1920
|
+
scope: "read",
|
|
1921
|
+
description: "List all prepaid package templates",
|
|
1922
|
+
params: {
|
|
1923
|
+
accountId: { type: "number", required: false }
|
|
1924
|
+
},
|
|
1925
|
+
response: {},
|
|
1926
|
+
annotations: "readOnlyHint",
|
|
1927
|
+
verified_against_server: true,
|
|
1928
|
+
verified_against_live_docs: true
|
|
1929
|
+
},
|
|
1930
|
+
{
|
|
1931
|
+
name: "create_package_template",
|
|
1932
|
+
ocs_method: "createPrepaidPackageTemplate",
|
|
1933
|
+
category: "templates",
|
|
1934
|
+
scope: "admin",
|
|
1935
|
+
description: "Create a new prepaid package template",
|
|
1936
|
+
params: {
|
|
1937
|
+
template: { type: "string(JSON)", required: true }
|
|
1938
|
+
},
|
|
1939
|
+
response: {},
|
|
1940
|
+
annotations: "destructiveHint",
|
|
1941
|
+
verified_against_server: true,
|
|
1942
|
+
verified_against_live_docs: true
|
|
1943
|
+
},
|
|
1944
|
+
{
|
|
1945
|
+
name: "modify_template_core",
|
|
1946
|
+
ocs_method: "modifyPPTCore",
|
|
1947
|
+
category: "templates",
|
|
1948
|
+
scope: "admin",
|
|
1949
|
+
description: "Modify core settings of a package template",
|
|
1950
|
+
params: {
|
|
1951
|
+
templateId: { type: "number", required: true },
|
|
1952
|
+
changes: { type: "string(JSON)", required: true }
|
|
1953
|
+
},
|
|
1954
|
+
response: {},
|
|
1955
|
+
annotations: "destructiveHint",
|
|
1956
|
+
verified_against_server: true,
|
|
1957
|
+
verified_against_live_docs: true
|
|
1958
|
+
},
|
|
1959
|
+
{
|
|
1960
|
+
name: "modify_template_recurring",
|
|
1961
|
+
ocs_method: "modifyPPTRecurring",
|
|
1962
|
+
category: "templates",
|
|
1963
|
+
scope: "admin",
|
|
1964
|
+
description: "Modify recurring settings of a package template",
|
|
1965
|
+
params: {
|
|
1966
|
+
templateId: { type: "number", required: true },
|
|
1967
|
+
changes: { type: "string(JSON)", required: true }
|
|
1968
|
+
},
|
|
1969
|
+
response: {},
|
|
1970
|
+
annotations: "destructiveHint",
|
|
1971
|
+
verified_against_server: true,
|
|
1972
|
+
verified_against_live_docs: true
|
|
1973
|
+
},
|
|
1974
|
+
{
|
|
1975
|
+
name: "modify_template_throttling",
|
|
1976
|
+
ocs_method: "modifyPPTThrottling",
|
|
1977
|
+
category: "templates",
|
|
1978
|
+
scope: "admin",
|
|
1979
|
+
description: "Modify throttling settings of a package template",
|
|
1980
|
+
params: {
|
|
1981
|
+
templateId: { type: "number", required: true },
|
|
1982
|
+
changes: { type: "string(JSON)", required: true }
|
|
1983
|
+
},
|
|
1984
|
+
response: {},
|
|
1985
|
+
annotations: "destructiveHint",
|
|
1986
|
+
verified_against_server: true,
|
|
1987
|
+
verified_against_live_docs: true
|
|
1988
|
+
},
|
|
1989
|
+
{
|
|
1990
|
+
name: "list_location_zones",
|
|
1991
|
+
ocs_method: "listLocationZoneElement",
|
|
1992
|
+
category: "templates",
|
|
1993
|
+
scope: "read",
|
|
1994
|
+
description: "List countries/networks in a location zone",
|
|
1995
|
+
params: {
|
|
1996
|
+
locationZoneId: { type: "number", required: false }
|
|
1997
|
+
},
|
|
1998
|
+
response: {},
|
|
1999
|
+
annotations: "readOnlyHint",
|
|
2000
|
+
verified_against_server: true,
|
|
2001
|
+
verified_against_live_docs: true
|
|
2002
|
+
},
|
|
2003
|
+
{
|
|
2004
|
+
name: "list_detailed_location_zones",
|
|
2005
|
+
ocs_method: "listDetailedLocationZone",
|
|
2006
|
+
category: "templates",
|
|
2007
|
+
scope: "read",
|
|
2008
|
+
description: "Get detailed location zone definitions",
|
|
2009
|
+
params: {},
|
|
2010
|
+
response: {},
|
|
2011
|
+
annotations: "readOnlyHint",
|
|
2012
|
+
verified_against_server: true,
|
|
2013
|
+
verified_against_live_docs: true
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
name: "list_destination_prefixes",
|
|
2017
|
+
ocs_method: "listDestinationListPrefix",
|
|
2018
|
+
category: "templates",
|
|
2019
|
+
scope: "read",
|
|
2020
|
+
description: "List phone number prefixes in destination lists",
|
|
2021
|
+
params: {
|
|
2022
|
+
destinationListId: { type: "number", required: false }
|
|
2023
|
+
},
|
|
2024
|
+
response: {},
|
|
2025
|
+
annotations: "readOnlyHint",
|
|
2026
|
+
verified_against_server: true,
|
|
2027
|
+
verified_against_live_docs: true
|
|
2028
|
+
},
|
|
2029
|
+
{
|
|
2030
|
+
name: "create_location_zone",
|
|
2031
|
+
ocs_method: "createLocationZone",
|
|
2032
|
+
category: "templates",
|
|
2033
|
+
scope: "admin",
|
|
2034
|
+
description: "Create a new location zone",
|
|
2035
|
+
params: {
|
|
2036
|
+
zone: { type: "string(JSON)", required: true }
|
|
2037
|
+
},
|
|
2038
|
+
response: {},
|
|
2039
|
+
annotations: "destructiveHint",
|
|
2040
|
+
verified_against_server: true,
|
|
2041
|
+
verified_against_live_docs: true
|
|
2042
|
+
},
|
|
2043
|
+
{
|
|
2044
|
+
name: "subscriber_usage",
|
|
2045
|
+
ocs_method: "subscriberUsageOverPeriod",
|
|
2046
|
+
category: "statistics",
|
|
2047
|
+
scope: "read",
|
|
2048
|
+
description: "Get daily usage for a subscriber (max 7 days)",
|
|
2049
|
+
params: {
|
|
2050
|
+
iccid: { type: "string", required: true },
|
|
2051
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2052
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true }
|
|
2053
|
+
},
|
|
2054
|
+
response: {},
|
|
2055
|
+
annotations: "readOnlyHint",
|
|
2056
|
+
verified_against_server: true,
|
|
2057
|
+
verified_against_live_docs: true
|
|
2058
|
+
},
|
|
2059
|
+
{
|
|
2060
|
+
name: "subscriber_network_events",
|
|
2061
|
+
ocs_method: "subscriberNetworkEventsOverPeriod",
|
|
2062
|
+
category: "statistics",
|
|
2063
|
+
scope: "read",
|
|
2064
|
+
description: "Get network events for a subscriber (max 7 days)",
|
|
2065
|
+
params: {
|
|
2066
|
+
iccid: { type: "string", required: true },
|
|
2067
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2068
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true }
|
|
2069
|
+
},
|
|
2070
|
+
response: {},
|
|
2071
|
+
annotations: "readOnlyHint",
|
|
2072
|
+
verified_against_server: true,
|
|
2073
|
+
verified_against_live_docs: true
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
name: "subscriber_active_period",
|
|
2077
|
+
ocs_method: "getSubscriberActivePeriod",
|
|
2078
|
+
category: "statistics",
|
|
2079
|
+
scope: "read",
|
|
2080
|
+
description: "Get subscriber active period",
|
|
2081
|
+
params: {
|
|
2082
|
+
iccid: { type: "string", required: true }
|
|
2083
|
+
},
|
|
2084
|
+
response: {},
|
|
2085
|
+
annotations: "readOnlyHint",
|
|
2086
|
+
verified_against_server: true,
|
|
2087
|
+
verified_against_live_docs: true
|
|
2088
|
+
},
|
|
2089
|
+
{
|
|
2090
|
+
name: "get_tariff",
|
|
2091
|
+
ocs_method: "getCustomerTariff",
|
|
2092
|
+
category: "tariff",
|
|
2093
|
+
scope: "read",
|
|
2094
|
+
description: "Retrieve customer tariff/pricing table",
|
|
2095
|
+
params: {},
|
|
2096
|
+
response: {},
|
|
2097
|
+
annotations: "readOnlyHint",
|
|
2098
|
+
verified_against_server: true,
|
|
2099
|
+
verified_against_live_docs: true
|
|
2100
|
+
},
|
|
2101
|
+
{
|
|
2102
|
+
name: "send_sms",
|
|
2103
|
+
ocs_method: "sendMtSms",
|
|
2104
|
+
category: "messaging",
|
|
2105
|
+
scope: "write",
|
|
2106
|
+
description: "Send MT SMS to a subscriber",
|
|
2107
|
+
params: {
|
|
2108
|
+
iccid: { type: "string", required: true },
|
|
2109
|
+
msisdn: { type: "string", required: true },
|
|
2110
|
+
message: { type: "string", required: true },
|
|
2111
|
+
sender: { type: "string", required: false }
|
|
2112
|
+
},
|
|
2113
|
+
response: {},
|
|
2114
|
+
annotations: "destructiveHint",
|
|
2115
|
+
verified_against_server: true,
|
|
2116
|
+
verified_against_live_docs: true
|
|
2117
|
+
},
|
|
2118
|
+
{
|
|
2119
|
+
name: "list_network_profiles",
|
|
2120
|
+
ocs_method: "listNetworkProfile",
|
|
2121
|
+
category: "network",
|
|
2122
|
+
scope: "read",
|
|
2123
|
+
description: "List all available network profiles",
|
|
2124
|
+
params: {},
|
|
2125
|
+
response: {},
|
|
2126
|
+
annotations: "readOnlyHint",
|
|
2127
|
+
verified_against_server: true,
|
|
2128
|
+
verified_against_live_docs: true
|
|
2129
|
+
}
|
|
2130
|
+
],
|
|
2131
|
+
v1_intelligence_methods: [
|
|
2132
|
+
{
|
|
2133
|
+
name: "diagnose_subscriber",
|
|
2134
|
+
category: "intelligence",
|
|
2135
|
+
scope: "read",
|
|
2136
|
+
description: "AI diagnostic: chains 5 OCS calls to diagnose connectivity issues",
|
|
2137
|
+
wraps: ["getSingleSubscriber", "getSimProviderStatus", "listSubscriberPrepaidPackages", "subscriberNetworkEventsOverPeriod", "hlrGetBitrate"],
|
|
2138
|
+
params: {
|
|
2139
|
+
iccid: { type: "string", required: true },
|
|
2140
|
+
startDate: { type: "string(YYYY-MM-DD)", required: false },
|
|
2141
|
+
endDate: { type: "string(YYYY-MM-DD)", required: false }
|
|
2142
|
+
},
|
|
2143
|
+
verified_against_server: true,
|
|
2144
|
+
verified_against_live_docs: false
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
name: "fleet_health",
|
|
2148
|
+
category: "intelligence",
|
|
2149
|
+
scope: "read",
|
|
2150
|
+
description: "Single-call fleet overview: accounts, eSIM counts, low-balance alerts",
|
|
2151
|
+
wraps: ["listResellerAccount", "esimStatusPerAccount", "listSubscriberPrepaidPackages"],
|
|
2152
|
+
params: {},
|
|
2153
|
+
verified_against_server: true,
|
|
2154
|
+
verified_against_live_docs: false
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
name: "detect_usage_anomalies",
|
|
2158
|
+
category: "intelligence",
|
|
2159
|
+
scope: "read",
|
|
2160
|
+
description: "Detect abnormal usage patterns across subscribers",
|
|
2161
|
+
wraps: ["listSubscriber", "subscriberUsageOverPeriod"],
|
|
2162
|
+
params: {
|
|
2163
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2164
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2165
|
+
accountId: { type: "number", required: false }
|
|
2166
|
+
},
|
|
2167
|
+
verified_against_server: true,
|
|
2168
|
+
verified_against_live_docs: false
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
name: "optimize_package",
|
|
2172
|
+
category: "intelligence",
|
|
2173
|
+
scope: "read",
|
|
2174
|
+
description: "Package optimization: match subscriber usage to best template",
|
|
2175
|
+
wraps: ["getSingleSubscriber", "listSubscriberPrepaidPackages", "subscriberUsageOverPeriod", "listPrepaidPackageTemplate"],
|
|
2176
|
+
params: {
|
|
2177
|
+
iccid: { type: "string", required: true },
|
|
2178
|
+
startDate: { type: "string(YYYY-MM-DD)", required: false },
|
|
2179
|
+
endDate: { type: "string(YYYY-MM-DD)", required: false }
|
|
2180
|
+
},
|
|
2181
|
+
verified_against_server: true,
|
|
2182
|
+
verified_against_live_docs: false
|
|
2183
|
+
},
|
|
2184
|
+
{
|
|
2185
|
+
name: "churn_risk",
|
|
2186
|
+
category: "intelligence",
|
|
2187
|
+
scope: "read",
|
|
2188
|
+
description: "Identify subscribers at risk of churn based on usage patterns",
|
|
2189
|
+
wraps: ["listSubscriber", "subscriberUsageOverPeriod", "getSubscriberActivePeriod"],
|
|
2190
|
+
params: {
|
|
2191
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2192
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2193
|
+
accountId: { type: "number", required: false }
|
|
2194
|
+
},
|
|
2195
|
+
verified_against_server: true,
|
|
2196
|
+
verified_against_live_docs: false
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
name: "audit_network_coverage",
|
|
2200
|
+
category: "intelligence",
|
|
2201
|
+
scope: "read",
|
|
2202
|
+
description: "Audit network coverage and steering effectiveness",
|
|
2203
|
+
wraps: ["listDetailedLocationZone", "listSteeringList", "getSubscriberLocation"],
|
|
2204
|
+
params: {
|
|
2205
|
+
iccid: { type: "string", required: false }
|
|
2206
|
+
},
|
|
2207
|
+
verified_against_server: true,
|
|
2208
|
+
verified_against_live_docs: false
|
|
2209
|
+
},
|
|
2210
|
+
{
|
|
2211
|
+
name: "marketing_intelligence",
|
|
2212
|
+
category: "intelligence",
|
|
2213
|
+
scope: "read",
|
|
2214
|
+
description: "Marketing insights: segment analysis, upsell opportunities",
|
|
2215
|
+
wraps: ["listResellerAccount", "esimStatusPerAccount", "listPrepaidPackageTemplate", "subscriberUsageOverPeriod"],
|
|
2216
|
+
params: {
|
|
2217
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2218
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true }
|
|
2219
|
+
},
|
|
2220
|
+
verified_against_server: true,
|
|
2221
|
+
verified_against_live_docs: false
|
|
2222
|
+
},
|
|
2223
|
+
{
|
|
2224
|
+
name: "high_cost_subscribers",
|
|
2225
|
+
category: "intelligence",
|
|
2226
|
+
scope: "read",
|
|
2227
|
+
description: "Identify highest-cost subscribers for cost optimization",
|
|
2228
|
+
wraps: ["listSubscriber", "subscriberUsageOverPeriod", "getCustomerTariff"],
|
|
2229
|
+
params: {
|
|
2230
|
+
startDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2231
|
+
endDate: { type: "string(YYYY-MM-DD)", required: true },
|
|
2232
|
+
accountId: { type: "number", required: false }
|
|
2233
|
+
},
|
|
2234
|
+
verified_against_server: true,
|
|
2235
|
+
verified_against_live_docs: false
|
|
2236
|
+
}
|
|
2237
|
+
],
|
|
2238
|
+
v1_1_backlog: [
|
|
2239
|
+
{
|
|
2240
|
+
name: "affect_subscriber_phone_number",
|
|
2241
|
+
ocs_method: "affectSubscriberFakePhoneNumber / affectSubscriberRealPhoneNumber",
|
|
2242
|
+
category: "subscriber",
|
|
2243
|
+
scope: "write",
|
|
2244
|
+
status: "implemented",
|
|
2245
|
+
description: "Assign a fake or real MSISDN to a subscriber \u2014 single MCP tool wraps both OCS methods via phone_type param",
|
|
2246
|
+
params: {
|
|
2247
|
+
iccid: { type: "string", required: true },
|
|
2248
|
+
phone_number: { type: "string(E.164)", required: true },
|
|
2249
|
+
phone_type: { type: "enum[fake,real]", required: true }
|
|
2250
|
+
},
|
|
2251
|
+
annotations: "destructiveHint",
|
|
2252
|
+
verified_against_server: true,
|
|
2253
|
+
verified_against_live_docs: true
|
|
2254
|
+
},
|
|
2255
|
+
{
|
|
2256
|
+
name: "get_subscriber_location_by_cell_id",
|
|
2257
|
+
ocs_method: "getSubscriberLocationByCellId",
|
|
2258
|
+
category: "subscriber",
|
|
2259
|
+
scope: "read",
|
|
2260
|
+
status: "implemented",
|
|
2261
|
+
description: "Resolve a cell tower tuple (radioType + MCC + MNC + LAC + optional cellId) to lat/lon via Bridge4IP GeoSense. No subscriber identifier required \u2014 caller supplies cell params directly.",
|
|
2262
|
+
params: {
|
|
2263
|
+
radio_type: { type: "enum[2G,3G,4G,5G,NB-IoT]", required: true },
|
|
2264
|
+
mcc: { type: "integer", required: true },
|
|
2265
|
+
mnc: { type: "integer", required: true },
|
|
2266
|
+
lac: { type: "integer", required: true },
|
|
2267
|
+
cell_id: { type: "integer", required: false },
|
|
2268
|
+
signal_strength: { type: "number", required: false }
|
|
2269
|
+
},
|
|
2270
|
+
response: {
|
|
2271
|
+
latitude: { type: "number" },
|
|
2272
|
+
longitude: { type: "number" },
|
|
2273
|
+
accuracy: { type: "integer", notes: "median error in meters at 50% confidence" }
|
|
2274
|
+
},
|
|
2275
|
+
annotations: "readOnlyHint",
|
|
2276
|
+
verified_against_server: true,
|
|
2277
|
+
verified_against_live_docs: true
|
|
2278
|
+
},
|
|
2279
|
+
{
|
|
2280
|
+
name: "list_destination_lists",
|
|
2281
|
+
ocs_method: "listDetailedDestinationList",
|
|
2282
|
+
category: "templates",
|
|
2283
|
+
scope: "read",
|
|
2284
|
+
status: "implemented",
|
|
2285
|
+
description: "List all destination lists with full detail (prefix sets for voice/SMS routing control)",
|
|
2286
|
+
params: {},
|
|
2287
|
+
annotations: "readOnlyHint",
|
|
2288
|
+
verified_against_server: true,
|
|
2289
|
+
verified_against_live_docs: true
|
|
2290
|
+
},
|
|
2291
|
+
{
|
|
2292
|
+
name: "modify_subscriber_mobile_plan",
|
|
2293
|
+
ocs_method: "modifySubscriberMobilePlan",
|
|
2294
|
+
category: "subscriber",
|
|
2295
|
+
scope: "write",
|
|
2296
|
+
status: "implemented",
|
|
2297
|
+
description: "Change the mobile plan assigned to a subscriber",
|
|
2298
|
+
params: {
|
|
2299
|
+
iccid: { type: "string", required: true },
|
|
2300
|
+
mobile_plan_id: { type: "number", required: true }
|
|
2301
|
+
},
|
|
2302
|
+
annotations: "destructiveHint",
|
|
2303
|
+
verified_against_server: true,
|
|
2304
|
+
verified_against_live_docs: true
|
|
2305
|
+
},
|
|
2306
|
+
{
|
|
2307
|
+
name: "modify_subscriber_package_active_period",
|
|
2308
|
+
ocs_method: "modifySubscriberPrepaidPackageActivePeriod",
|
|
2309
|
+
category: "packages",
|
|
2310
|
+
scope: "write",
|
|
2311
|
+
status: "implemented",
|
|
2312
|
+
description: "Change the active period (start/end dates) of a prepaid package on a subscriber",
|
|
2313
|
+
params: {
|
|
2314
|
+
iccid: { type: "string", required: true },
|
|
2315
|
+
package_id: { type: "number", required: true },
|
|
2316
|
+
start_date: { type: "string(ISO8601)", required: false },
|
|
2317
|
+
end_date: { type: "string(ISO8601)", required: false }
|
|
2318
|
+
},
|
|
2319
|
+
annotations: "destructiveHint",
|
|
2320
|
+
verified_against_server: true,
|
|
2321
|
+
verified_against_live_docs: true
|
|
2322
|
+
},
|
|
2323
|
+
{
|
|
2324
|
+
name: "modify_subscriber_voip_plan",
|
|
2325
|
+
ocs_method: "modifySubscriberVoipPlan",
|
|
2326
|
+
category: "subscriber",
|
|
2327
|
+
scope: "write",
|
|
2328
|
+
status: "implemented",
|
|
2329
|
+
description: "Change the VoIP plan assigned to a subscriber",
|
|
2330
|
+
params: {
|
|
2331
|
+
iccid: { type: "string", required: true },
|
|
2332
|
+
voip_plan_id: { type: "number", required: true }
|
|
2333
|
+
},
|
|
2334
|
+
annotations: "destructiveHint",
|
|
2335
|
+
verified_against_server: true,
|
|
2336
|
+
verified_against_live_docs: true
|
|
2337
|
+
},
|
|
2338
|
+
{
|
|
2339
|
+
name: "push_steering_to_subscriber",
|
|
2340
|
+
ocs_method: "pushSteeringToSubs",
|
|
2341
|
+
category: "subscriber",
|
|
2342
|
+
scope: "write",
|
|
2343
|
+
status: "implemented",
|
|
2344
|
+
description: "Push the current steering list configuration down to the subscriber's SIM \u2014 required after modifying steering to take effect",
|
|
2345
|
+
params: {
|
|
2346
|
+
iccid: { type: "string", required: true }
|
|
2347
|
+
},
|
|
2348
|
+
annotations: "destructiveHint",
|
|
2349
|
+
verified_against_server: true,
|
|
2350
|
+
verified_against_live_docs: true
|
|
2351
|
+
},
|
|
2352
|
+
{
|
|
2353
|
+
name: "reset_subscriber_gz_counter",
|
|
2354
|
+
ocs_method: "resetSubsGzCounter",
|
|
2355
|
+
category: "subscriber",
|
|
2356
|
+
scope: "admin",
|
|
2357
|
+
status: "implemented",
|
|
2358
|
+
description: "Reset the Green Zone (Greenzone) volume counter for a subscriber \u2014 tracks bytes consumed on reseller whitelist after bundle depletion. Irreversible, use only for reprovisioning or billing disputes.",
|
|
2359
|
+
params: {
|
|
2360
|
+
iccid: { type: "string", required: true }
|
|
2361
|
+
},
|
|
2362
|
+
annotations: "destructiveHint",
|
|
2363
|
+
verified_against_server: true,
|
|
2364
|
+
verified_against_live_docs: true
|
|
2365
|
+
},
|
|
2366
|
+
{
|
|
2367
|
+
name: "resolve_cell_location",
|
|
2368
|
+
ocs_method: "getSubscriberLocationByCellId",
|
|
2369
|
+
category: "subscriber",
|
|
2370
|
+
scope: "read",
|
|
2371
|
+
status: "stubbed",
|
|
2372
|
+
audit_pr: "feat/ocs-feature-audit",
|
|
2373
|
+
audit_stub_id: "S-03",
|
|
2374
|
+
description: "Resolve a raw cell tower tuple (radioType + MCC + MNC + LAC + optional cellId) to lat/lon via Bridge4IP GeoSense. Does NOT require a subscriber identifier \u2014 caller supplies cell params directly. Lower-level primitive than get_subscriber_location_by_cell_id. Needed for Relay LU webhook consumer.",
|
|
2375
|
+
params: {
|
|
2376
|
+
radio_type: { type: "enum[2G,3G,4G,5G,NB-IoT]", required: true },
|
|
2377
|
+
mcc: { type: "integer", required: true },
|
|
2378
|
+
mnc: { type: "integer", required: true },
|
|
2379
|
+
lac: { type: "integer", required: true },
|
|
2380
|
+
cell_id: { type: "integer", required: false },
|
|
2381
|
+
signal_strength: { type: "integer", required: false }
|
|
2382
|
+
},
|
|
2383
|
+
response: {
|
|
2384
|
+
latitude: { type: "number" },
|
|
2385
|
+
longitude: { type: "number" },
|
|
2386
|
+
accuracy: { type: "integer", notes: "median error in meters at 50% confidence" }
|
|
2387
|
+
},
|
|
2388
|
+
annotations: "readOnlyHint",
|
|
2389
|
+
blocked_by: "confirm Relay LU payload shape with Bridge4IP NOC",
|
|
2390
|
+
verified_against_server: false,
|
|
2391
|
+
verified_against_live_docs: true
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
name: "carrier_webhook_config",
|
|
2395
|
+
ocs_method: "getResellerInfo",
|
|
2396
|
+
category: "reseller",
|
|
2397
|
+
scope: "read",
|
|
2398
|
+
status: "stubbed",
|
|
2399
|
+
audit_pr: "feat/ocs-feature-audit",
|
|
2400
|
+
audit_stub_id: "S-04",
|
|
2401
|
+
description: "Read-only view of Bridge4IP webhook and relay flag state from getResellerInfo.trafficInfo. Surfaces relayLU, relayGy, relayCallSms, relayVoIP booleans + notification webhook types. Relay LU is the key flag for event-driven country-change detection (vs polling). Relay endpoint config is OCS portal UI-only.",
|
|
2402
|
+
params: {
|
|
2403
|
+
reseller_id: { type: "number", required: false }
|
|
2404
|
+
},
|
|
2405
|
+
response: {
|
|
2406
|
+
relay_lu: { type: "boolean", notes: "Update Location relay active \u2014 closest to country-change signal" },
|
|
2407
|
+
relay_gy: { type: "boolean", notes: "Mobile data usage relay active" },
|
|
2408
|
+
relay_voip: { type: "boolean", notes: "VoIP usage relay active" },
|
|
2409
|
+
relay_calls_sms: { type: "boolean", notes: "Calls + SMS relay active" },
|
|
2410
|
+
notification_webhooks: { type: "array", notes: "Active notification types: prepaid_usage, low_credit, esim_status, recurring_packages" }
|
|
2411
|
+
},
|
|
2412
|
+
annotations: "readOnlyHint",
|
|
2413
|
+
verified_against_server: false,
|
|
2414
|
+
verified_against_live_docs: true
|
|
2415
|
+
}
|
|
2416
|
+
],
|
|
2417
|
+
v1_app_methods: [
|
|
2418
|
+
{
|
|
2419
|
+
name: "fleet_health_app",
|
|
2420
|
+
category: "apps",
|
|
2421
|
+
scope: "read",
|
|
2422
|
+
description: "MCP App: Fleet Health Dashboard \u2014 rendered chart UI wrapping the fleet_health composite. Read-only, no destructive ops.",
|
|
2423
|
+
min_tier: "free",
|
|
2424
|
+
destructive: false,
|
|
2425
|
+
ui_resource_uri: "ui://fleet-health-dashboard",
|
|
2426
|
+
verified_against_server: false,
|
|
2427
|
+
verified_against_live_docs: false
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
name: "provision_esim_wizard",
|
|
2431
|
+
category: "apps",
|
|
2432
|
+
scope: "write",
|
|
2433
|
+
description: "MCP App: eSIM Provisioning Wizard \u2014 3-step wizard UI. Destructive on step 3 (confirm). Pro tier minimum.",
|
|
2434
|
+
min_tier: "pro",
|
|
2435
|
+
destructive: true,
|
|
2436
|
+
destructive_step: 3,
|
|
2437
|
+
ui_resource_uri: "ui://esim-provisioning-wizard",
|
|
2438
|
+
verified_against_server: false,
|
|
2439
|
+
verified_against_live_docs: false
|
|
2440
|
+
},
|
|
2441
|
+
{
|
|
2442
|
+
name: "balance_topup_form",
|
|
2443
|
+
category: "apps",
|
|
2444
|
+
scope: "admin",
|
|
2445
|
+
description: "MCP App: Balance Top-up Form \u2014 single-field destructive form with dry_run preview. Enterprise only, MFA-gated.",
|
|
2446
|
+
min_tier: "enterprise",
|
|
2447
|
+
destructive: true,
|
|
2448
|
+
mfa_gated: true,
|
|
2449
|
+
ui_resource_uri: "ui://balance-topup-form",
|
|
2450
|
+
verified_against_server: false,
|
|
2451
|
+
verified_against_live_docs: false
|
|
2452
|
+
}
|
|
2453
|
+
]
|
|
2454
|
+
};
|
|
2455
|
+
|
|
1478
2456
|
// ../../packages/ocs-spec/src/mcc-iso.ts
|
|
1479
2457
|
var MCC_TO_ISO = {
|
|
1480
2458
|
// Europe
|
|
@@ -1971,6 +2949,13 @@ function mccToIso(mcc) {
|
|
|
1971
2949
|
return MCC_TO_ISO[n] ?? null;
|
|
1972
2950
|
}
|
|
1973
2951
|
|
|
2952
|
+
// ../../packages/ocs-spec/src/index.ts
|
|
2953
|
+
var ocsSpec = ocs_methods_default;
|
|
2954
|
+
var ocsMethods = ocsSpec.v1_methods;
|
|
2955
|
+
var ocsIntelligenceMethods = ocsSpec.v1_intelligence_methods;
|
|
2956
|
+
var ocsBacklog = ocsSpec.v1_1_backlog;
|
|
2957
|
+
var ocsAppMethods = ocsSpec.v1_app_methods;
|
|
2958
|
+
|
|
1974
2959
|
// src/intelligence.ts
|
|
1975
2960
|
async function safeCall(env, token2, method, params = {}) {
|
|
1976
2961
|
try {
|
|
@@ -3147,7 +4132,7 @@ function registerAllBacklogTools(server2, ctx) {
|
|
|
3147
4132
|
resellerId = await getDefaultResellerId(ctx.env, token2);
|
|
3148
4133
|
}
|
|
3149
4134
|
const params = {};
|
|
3150
|
-
if (resellerId !== void 0) params.
|
|
4135
|
+
if (resellerId !== void 0) params.id = resellerId;
|
|
3151
4136
|
const raw = await client.call("getResellerInfo", params);
|
|
3152
4137
|
const traffic = raw.trafficInfo ?? {};
|
|
3153
4138
|
const notification = raw.notificationInfo ?? {};
|
|
@@ -8390,7 +9375,7 @@ var audit = (_row) => {
|
|
|
8390
9375
|
var getUserToken = async (_sub) => token;
|
|
8391
9376
|
var toolCtx = { env: stdioEnv, props, audit, getUserToken };
|
|
8392
9377
|
var server = new McpServer(
|
|
8393
|
-
{ name: "carrier-mcp", version: "0.2.
|
|
9378
|
+
{ name: "carrier-mcp", version: "0.2.4" },
|
|
8394
9379
|
{
|
|
8395
9380
|
instructions: "Carrier MCP \u2014 single-user stdio mode. Full tool registry (mirrors the deployed Worker)."
|
|
8396
9381
|
}
|