@carrierllc/mcp 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.metadata_never_index +0 -0
- package/dist/apps/app-state.d.ts +19 -0
- package/dist/apps/app-state.d.ts.map +1 -0
- package/dist/apps/app-state.js +28 -0
- package/dist/apps/app-state.js.map +1 -0
- package/dist/apps/balance-topup.d.ts +19 -0
- package/dist/apps/balance-topup.d.ts.map +1 -0
- package/dist/apps/balance-topup.js +121 -0
- package/dist/apps/balance-topup.js.map +1 -0
- package/dist/apps/fleet-health-app.d.ts +29 -0
- package/dist/apps/fleet-health-app.d.ts.map +1 -0
- package/dist/apps/fleet-health-app.js +152 -0
- package/dist/apps/fleet-health-app.js.map +1 -0
- package/dist/apps/index.d.ts +37 -0
- package/dist/apps/index.d.ts.map +1 -0
- package/dist/apps/index.js +42 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/provisioning-wizard.d.ts +11 -0
- package/dist/apps/provisioning-wizard.d.ts.map +1 -0
- package/dist/apps/provisioning-wizard.js +345 -0
- package/dist/apps/provisioning-wizard.js.map +1 -0
- package/dist/audit.d.ts +31 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +42 -0
- package/dist/audit.js.map +1 -0
- package/dist/billing-thresholds.d.ts +71 -0
- package/dist/billing-thresholds.d.ts.map +1 -0
- package/dist/billing-thresholds.js +238 -0
- package/dist/billing-thresholds.js.map +1 -0
- package/dist/billing.d.ts +95 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +239 -0
- package/dist/billing.js.map +1 -0
- package/dist/clerk.d.ts +125 -0
- package/dist/clerk.d.ts.map +1 -0
- package/dist/clerk.js +389 -0
- package/dist/clerk.js.map +1 -0
- package/dist/client.d.ts +12 -15
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +56 -53
- package/dist/client.js.map +1 -1
- package/dist/credits.d.ts +165 -0
- package/dist/credits.d.ts.map +1 -0
- package/dist/credits.js +483 -0
- package/dist/credits.js.map +1 -0
- package/dist/index.d.ts +6 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -23
- package/dist/index.js.map +1 -1
- package/dist/intelligence.d.ts +2 -8
- package/dist/intelligence.d.ts.map +1 -1
- package/dist/intelligence.js +399 -154
- package/dist/intelligence.js.map +1 -1
- package/dist/list-recent-ocs-events.d.ts +48 -0
- package/dist/list-recent-ocs-events.d.ts.map +1 -0
- package/dist/list-recent-ocs-events.js +160 -0
- package/dist/list-recent-ocs-events.js.map +1 -0
- package/dist/manus-client.d.ts +429 -0
- package/dist/manus-client.d.ts.map +1 -0
- package/dist/manus-client.js +401 -0
- package/dist/manus-client.js.map +1 -0
- package/dist/manus-common.d.ts +5 -0
- package/dist/manus-common.d.ts.map +1 -0
- package/dist/manus-common.js +5 -0
- package/dist/manus-common.js.map +1 -0
- package/dist/manus-schedule.d.ts +74 -0
- package/dist/manus-schedule.d.ts.map +1 -0
- package/dist/manus-schedule.js +213 -0
- package/dist/manus-schedule.js.map +1 -0
- package/dist/manus-usage.d.ts +32 -0
- package/dist/manus-usage.d.ts.map +1 -0
- package/dist/manus-usage.js +120 -0
- package/dist/manus-usage.js.map +1 -0
- package/dist/manus-webhook.d.ts +60 -0
- package/dist/manus-webhook.d.ts.map +1 -0
- package/dist/manus-webhook.js +361 -0
- package/dist/manus-webhook.js.map +1 -0
- package/dist/pricing-tools.d.ts +26 -0
- package/dist/pricing-tools.d.ts.map +1 -0
- package/dist/pricing-tools.js +428 -0
- package/dist/pricing-tools.js.map +1 -0
- package/dist/projects-tools.d.ts +39 -0
- package/dist/projects-tools.d.ts.map +1 -0
- package/dist/projects-tools.js +545 -0
- package/dist/projects-tools.js.map +1 -0
- package/dist/prompts.d.ts +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +1 -0
- package/dist/prompts.js.map +1 -1
- package/dist/stripe-connect-tools.d.ts +33 -0
- package/dist/stripe-connect-tools.d.ts.map +1 -0
- package/dist/stripe-connect-tools.js +504 -0
- package/dist/stripe-connect-tools.js.map +1 -0
- package/dist/timing-safe-equal.d.ts +5 -0
- package/dist/timing-safe-equal.d.ts.map +1 -0
- package/dist/timing-safe-equal.js +13 -0
- package/dist/timing-safe-equal.js.map +1 -0
- package/dist/tools-backlog.d.ts +37 -0
- package/dist/tools-backlog.d.ts.map +1 -0
- package/dist/tools-backlog.js +410 -0
- package/dist/tools-backlog.js.map +1 -0
- package/dist/tools-carrier-ask.d.ts +138 -0
- package/dist/tools-carrier-ask.d.ts.map +1 -0
- package/dist/tools-carrier-ask.js +913 -0
- package/dist/tools-carrier-ask.js.map +1 -0
- package/dist/tools-pricing.d.ts +18 -0
- package/dist/tools-pricing.d.ts.map +1 -0
- package/dist/tools-pricing.js +172 -0
- package/dist/tools-pricing.js.map +1 -0
- package/dist/tools-ui-agent-ask.d.ts +29 -0
- package/dist/tools-ui-agent-ask.d.ts.map +1 -0
- package/dist/tools-ui-agent-ask.js +272 -0
- package/dist/tools-ui-agent-ask.js.map +1 -0
- package/dist/tools-ui-agent-schedule.d.ts +29 -0
- package/dist/tools-ui-agent-schedule.d.ts.map +1 -0
- package/dist/tools-ui-agent-schedule.js +517 -0
- package/dist/tools-ui-agent-schedule.js.map +1 -0
- package/dist/tools-ui-agent.d.ts +40 -0
- package/dist/tools-ui-agent.d.ts.map +1 -0
- package/dist/tools-ui-agent.js +508 -0
- package/dist/tools-ui-agent.js.map +1 -0
- package/dist/tools.d.ts +44 -13
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +892 -210
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +298 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +15 -8
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carrier MCP — v1.1 backlog tool registrations (9 tools) + v1.2 audit stubs (3 tools).
|
|
3
|
+
*
|
|
4
|
+
* These are OCS methods confirmed live in the eSIMVault API docs but not yet
|
|
5
|
+
* exposed in the v1 server. All 9 v1.1 tools are wired here to close coverage gaps
|
|
6
|
+
* identified in the 2026-05-12 forensic audit (mango/.planning/research/03-carrier-llc-audit.md).
|
|
7
|
+
*
|
|
8
|
+
* v1.2 AUDIT STUBS (feat/ocs-feature-audit, 2026-05-20):
|
|
9
|
+
* Registered but throw NotImplementedError — implementation in follow-up PRs.
|
|
10
|
+
* These stubs are intentionally NOT added to BACKLOG_TOOL_SCOPES or to the
|
|
11
|
+
* carrier_ask tool registry until implemented. The registerAllBacklogTools function
|
|
12
|
+
* conditionally registers them only when CARRIER_AUDIT_STUBS_ENABLED=true.
|
|
13
|
+
* Stubs: carrier_webhook_config (resolve_cell_location removed — merged into get_subscriber_location_by_cell_id)
|
|
14
|
+
* See: docs/research/bridge4ip-ocs-api/UNUSED-FEATURES.md
|
|
15
|
+
*
|
|
16
|
+
* Scope assignments (v1.1):
|
|
17
|
+
* write — affect_subscriber_phone_number, modify_subscriber_mobile_plan,
|
|
18
|
+
* modify_subscriber_package_active_period, modify_subscriber_voip_plan,
|
|
19
|
+
* push_steering_to_subscriber
|
|
20
|
+
* read — get_subscriber_location_by_cell_id, list_destination_lists,
|
|
21
|
+
* resolve_cell_location, carrier_webhook_config
|
|
22
|
+
* admin — reset_subscriber_gz_counter
|
|
23
|
+
*
|
|
24
|
+
* Schema notes:
|
|
25
|
+
* - All ICCID-accepting tools use the subscriber-record lookup cache pattern
|
|
26
|
+
* (resolveSubscriberByIccid) for IMSI resolution where required.
|
|
27
|
+
* - pushSteeringToSubs is listed as "write" in the live docs; marked write here
|
|
28
|
+
* pending confirmation from eSIMVault support (gap G-04).
|
|
29
|
+
* - resetSubsGzCounter is admin-scoped; usage counter resets are irreversible.
|
|
30
|
+
*/
|
|
31
|
+
import { z } from "zod";
|
|
32
|
+
import { OcsClient } from "./client.js";
|
|
33
|
+
import { wrapHandler, resolveSubscriberByIccid, getDefaultResellerId, } from "./tools.js";
|
|
34
|
+
const DRY_RUN_FIELD = {
|
|
35
|
+
dry_run: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("If true, do not call OCS — return the would-be request for confirmation"),
|
|
39
|
+
};
|
|
40
|
+
/** Scope lookup for the v1.1 backlog tools + implemented v1.2 tools. */
|
|
41
|
+
export const BACKLOG_TOOL_SCOPES = {
|
|
42
|
+
affect_subscriber_phone_number: "write",
|
|
43
|
+
carrier_webhook_config: "read",
|
|
44
|
+
get_subscriber_location_by_cell_id: "read",
|
|
45
|
+
list_destination_lists: "read",
|
|
46
|
+
modify_subscriber_mobile_plan: "write",
|
|
47
|
+
modify_subscriber_package_active_period: "write",
|
|
48
|
+
modify_subscriber_voip_plan: "write",
|
|
49
|
+
push_steering_to_subscriber: "write",
|
|
50
|
+
reset_subscriber_gz_counter: "admin",
|
|
51
|
+
};
|
|
52
|
+
export function registerAllBacklogTools(server, ctx) {
|
|
53
|
+
// =========================================================================
|
|
54
|
+
// 1. AFFECT SUBSCRIBER PHONE NUMBER
|
|
55
|
+
// OCS methods: affectSubscriberFakePhoneNumber / affectSubscriberRealPhoneNumber
|
|
56
|
+
// Gap: G-08 (MEDIUM). Merges two OCS methods behind one MCP tool.
|
|
57
|
+
// =========================================================================
|
|
58
|
+
server.registerTool("affect_subscriber_phone_number", {
|
|
59
|
+
title: "Assign Phone Number to Subscriber",
|
|
60
|
+
description: "Use this to assign a phone number (MSISDN) to a subscriber. Supports both fake/test MSISDNs " +
|
|
61
|
+
"and real production MSISDNs via the `phone_type` parameter. Required for MSISDN assignment " +
|
|
62
|
+
"workflows before activating voice services. " +
|
|
63
|
+
"Params: `iccid` (subscriber identifier), `phone_number` (E.164 format, e.g. +31612345678), " +
|
|
64
|
+
"`phone_type` ('fake' for test/dev, 'real' for production). " +
|
|
65
|
+
"Returns: updated subscriber record with the new MSISDN. " +
|
|
66
|
+
"Do NOT use this to check a subscriber's current MSISDN — use `get_subscriber` instead.",
|
|
67
|
+
inputSchema: {
|
|
68
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
69
|
+
phone_number: z
|
|
70
|
+
.string()
|
|
71
|
+
.describe("E.164 phone number to assign (e.g. +31612345678)"),
|
|
72
|
+
phone_type: z
|
|
73
|
+
.enum(["fake", "real"])
|
|
74
|
+
.describe("'fake' assigns a test/dev MSISDN (affectSubscriberFakePhoneNumber in OCS); " +
|
|
75
|
+
"'real' assigns a production MSISDN (affectSubscriberRealPhoneNumber in OCS)"),
|
|
76
|
+
...DRY_RUN_FIELD,
|
|
77
|
+
},
|
|
78
|
+
annotations: { destructiveHint: true },
|
|
79
|
+
}, wrapHandler("affect_subscriber_phone_number", "affectSubscriberFakePhoneNumber/affectSubscriberRealPhoneNumber", BACKLOG_TOOL_SCOPES["affect_subscriber_phone_number"], ctx, async ({ iccid, phone_number, phone_type }, token) => {
|
|
80
|
+
const ocsMethod = phone_type === "fake"
|
|
81
|
+
? "affectSubscriberFakePhoneNumber"
|
|
82
|
+
: "affectSubscriberRealPhoneNumber";
|
|
83
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
84
|
+
const result = await client.call(ocsMethod, { subscriber: iccid, phoneNumber: phone_number });
|
|
85
|
+
return {
|
|
86
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
87
|
+
};
|
|
88
|
+
}));
|
|
89
|
+
// =========================================================================
|
|
90
|
+
// 2. GET SUBSCRIBER LOCATION BY CELL ID
|
|
91
|
+
// OCS method: getSubscriberLocationByCellId (Bridge4IP GeoSense)
|
|
92
|
+
// Gap: G-09 (MEDIUM). Takes a cell tuple — no subscriber identifier needed.
|
|
93
|
+
// =========================================================================
|
|
94
|
+
server.registerTool("get_subscriber_location_by_cell_id", {
|
|
95
|
+
title: "Get Location by Cell ID (GeoSense)",
|
|
96
|
+
description: "Powered by Bridge4IP GeoSense — cell-level location resolution with sub-cell accuracy where available. " +
|
|
97
|
+
"Use this to resolve a cell tower tuple (radio type + MCC + MNC + LAC + optional cellId) " +
|
|
98
|
+
"to a latitude/longitude estimate. " +
|
|
99
|
+
"No subscriber identifier required — caller supplies cell parameters directly. " +
|
|
100
|
+
"Useful for fraud detection, roaming cost attribution, and network troubleshooting when " +
|
|
101
|
+
"you have raw cell info from an external source (e.g. a Relay LU webhook event). " +
|
|
102
|
+
"Params: `radio_type` ('2G'|'3G'|'4G'|'5G'|'NB-IoT'), `mcc` (int), `mnc` (int), " +
|
|
103
|
+
"`lac` (int), `cell_id` (int, optional but strongly recommended for accuracy), " +
|
|
104
|
+
"`signal_strength` (number dBm, optional). " +
|
|
105
|
+
"Returns: { latitude, longitude, accuracy } — accuracy is median error in meters at 50% confidence. " +
|
|
106
|
+
"Without cell_id accuracy degrades significantly (>10 km). " +
|
|
107
|
+
"Do NOT use this for bulk fleet location sweeps — one OCS call per cell tower; " +
|
|
108
|
+
"use `audit_network_coverage` for fleet-level analysis instead.",
|
|
109
|
+
inputSchema: {
|
|
110
|
+
radio_type: z
|
|
111
|
+
.enum(["2G", "3G", "4G", "5G", "NB-IoT"])
|
|
112
|
+
.describe("Radio access technology type"),
|
|
113
|
+
mcc: z.number().int().describe("Mobile Country Code (e.g. 250 for Russia, 234 for UK)"),
|
|
114
|
+
mnc: z.number().int().describe("Mobile Network Code"),
|
|
115
|
+
lac: z.number().int().describe("Location Area Code"),
|
|
116
|
+
cell_id: z
|
|
117
|
+
.number()
|
|
118
|
+
.int()
|
|
119
|
+
.optional()
|
|
120
|
+
.describe("Cell tower ID — strongly recommended for accuracy"),
|
|
121
|
+
signal_strength: z
|
|
122
|
+
.number()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("Signal strength in dBm (e.g. -89). Optional, improves accuracy."),
|
|
125
|
+
},
|
|
126
|
+
annotations: { readOnlyHint: true },
|
|
127
|
+
}, wrapHandler("get_subscriber_location_by_cell_id", "getSubscriberLocationByCellId", BACKLOG_TOOL_SCOPES["get_subscriber_location_by_cell_id"], ctx, async ({ radio_type, mcc, mnc, lac, cell_id, signal_strength, }, token) => {
|
|
128
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
129
|
+
const params = { radioType: radio_type, mcc, mnc, lac };
|
|
130
|
+
if (cell_id !== undefined)
|
|
131
|
+
params.cellId = cell_id;
|
|
132
|
+
if (signal_strength !== undefined)
|
|
133
|
+
params.signalStrength = signal_strength;
|
|
134
|
+
const result = await client.call("getSubscriberLocationByCellId", params);
|
|
135
|
+
return {
|
|
136
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
137
|
+
};
|
|
138
|
+
}));
|
|
139
|
+
// =========================================================================
|
|
140
|
+
// 3. LIST DESTINATION LISTS
|
|
141
|
+
// OCS method: listDetailedDestinationList
|
|
142
|
+
// Gap: G-13 (MEDIUM). The existing list_destination_prefixes only reads
|
|
143
|
+
// prefixes WITHIN a known list ID; this tool returns the list catalog itself.
|
|
144
|
+
// =========================================================================
|
|
145
|
+
server.registerTool("list_destination_lists", {
|
|
146
|
+
title: "List Destination Lists",
|
|
147
|
+
description: "Use this to retrieve the full catalog of destination lists available to this reseller. " +
|
|
148
|
+
"A destination list is a named set of phone number prefixes (country codes) that control " +
|
|
149
|
+
"which numbers a subscriber may call on a voice/SMS package. " +
|
|
150
|
+
"Returns: array of destination list records, each with `id`, `name`, and prefix count. " +
|
|
151
|
+
"Do NOT use this to read the prefixes inside a specific list — use `list_destination_prefixes` " +
|
|
152
|
+
"with a known `destinationListId` for that. " +
|
|
153
|
+
"Do NOT use this for data-only eSIM products without MOC voice; destination lists only " +
|
|
154
|
+
"apply to packages with voice/SMS allowances.",
|
|
155
|
+
inputSchema: {
|
|
156
|
+
resellerId: z
|
|
157
|
+
.number()
|
|
158
|
+
.optional()
|
|
159
|
+
.describe("Reseller ID (omit to use the token owner's reseller)"),
|
|
160
|
+
},
|
|
161
|
+
annotations: { readOnlyHint: true },
|
|
162
|
+
}, wrapHandler("list_destination_lists", "listDetailedDestinationList", BACKLOG_TOOL_SCOPES["list_destination_lists"], ctx, async ({ resellerId }, token) => {
|
|
163
|
+
const id = resellerId ??
|
|
164
|
+
(await (async () => {
|
|
165
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
166
|
+
const info = await client.call("getResellerInfo", {});
|
|
167
|
+
const resolvedId = info?.id;
|
|
168
|
+
if (typeof resolvedId !== "number") {
|
|
169
|
+
throw new Error("Could not determine resellerId from getResellerInfo");
|
|
170
|
+
}
|
|
171
|
+
return resolvedId;
|
|
172
|
+
})());
|
|
173
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
174
|
+
const result = await client.call("listDetailedDestinationList", id);
|
|
175
|
+
return {
|
|
176
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
177
|
+
};
|
|
178
|
+
}));
|
|
179
|
+
// =========================================================================
|
|
180
|
+
// 4. MODIFY SUBSCRIBER MOBILE PLAN
|
|
181
|
+
// OCS method: modifySubscriberMobilePlan
|
|
182
|
+
// Gap: G-06 (HIGH). Needed to change which pricing plan a subscriber is billed under.
|
|
183
|
+
// =========================================================================
|
|
184
|
+
server.registerTool("modify_subscriber_mobile_plan", {
|
|
185
|
+
title: "Modify Subscriber Mobile Plan",
|
|
186
|
+
description: "Use this to change the mobile pricing plan assigned to a specific subscriber. " +
|
|
187
|
+
"The mobile plan determines per-country rates for data, voice, and SMS. Changing the plan " +
|
|
188
|
+
"takes effect immediately on the next OCS rating cycle. " +
|
|
189
|
+
"Params: `iccid` (subscriber identifier), `mobile_plan_id` (integer plan ID — obtain valid " +
|
|
190
|
+
"plan IDs from the OCS reseller settings or `get_tariff`). " +
|
|
191
|
+
"Returns: updated subscriber record confirming the new plan assignment. " +
|
|
192
|
+
"Do NOT use this to change package allowances — use `modify_package_limits` for that. " +
|
|
193
|
+
"Do NOT use this to change account-level pricing — this only affects the individual subscriber.",
|
|
194
|
+
inputSchema: {
|
|
195
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
196
|
+
mobile_plan_id: z
|
|
197
|
+
.number()
|
|
198
|
+
.describe("The mobile pricing plan ID to assign to this subscriber"),
|
|
199
|
+
...DRY_RUN_FIELD,
|
|
200
|
+
},
|
|
201
|
+
annotations: { destructiveHint: true },
|
|
202
|
+
}, wrapHandler("modify_subscriber_mobile_plan", "modifySubscriberMobilePlan", BACKLOG_TOOL_SCOPES["modify_subscriber_mobile_plan"], ctx, async ({ iccid, mobile_plan_id }, token) => {
|
|
203
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
204
|
+
const result = await client.call("modifySubscriberMobilePlan", { subscriber: iccid, mobilePlanId: mobile_plan_id });
|
|
205
|
+
return {
|
|
206
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
207
|
+
};
|
|
208
|
+
}));
|
|
209
|
+
// =========================================================================
|
|
210
|
+
// 5. MODIFY SUBSCRIBER PACKAGE ACTIVE PERIOD
|
|
211
|
+
// OCS method: modifySubscriberPrepaidPackageActivePeriod
|
|
212
|
+
// Gap: G-07 (HIGH). Controls when a package becomes active on a subscriber.
|
|
213
|
+
// =========================================================================
|
|
214
|
+
server.registerTool("modify_subscriber_package_active_period", {
|
|
215
|
+
title: "Modify Subscriber Package Active Period",
|
|
216
|
+
description: "Use this to change the start and/or end date of a prepaid package's active period for a " +
|
|
217
|
+
"specific subscriber. This controls WHEN the package runs, not what it contains. " +
|
|
218
|
+
"Useful for scheduling packages in advance (e.g. activate on arrival date) or extending " +
|
|
219
|
+
"a package that would otherwise expire while the subscriber is still travelling. " +
|
|
220
|
+
"Params: `iccid` (subscriber identifier), `package_id` (from `list_subscriber_packages`), " +
|
|
221
|
+
"`start_date` (ISO 8601 date, optional), `end_date` (ISO 8601 date, optional). " +
|
|
222
|
+
"Returns: updated package record with new active period. " +
|
|
223
|
+
"Do NOT use this to change a package's data/voice allowance — use `modify_package_limits`. " +
|
|
224
|
+
"Do NOT use this to change the expiry date of a package — use `modify_package_expiry`.",
|
|
225
|
+
inputSchema: {
|
|
226
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
227
|
+
package_id: z
|
|
228
|
+
.number()
|
|
229
|
+
.describe("The subscriber package ID (from list_subscriber_packages)"),
|
|
230
|
+
start_date: z
|
|
231
|
+
.string()
|
|
232
|
+
.optional()
|
|
233
|
+
.describe("New start date in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss)"),
|
|
234
|
+
end_date: z
|
|
235
|
+
.string()
|
|
236
|
+
.optional()
|
|
237
|
+
.describe("New end date in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss)"),
|
|
238
|
+
...DRY_RUN_FIELD,
|
|
239
|
+
},
|
|
240
|
+
annotations: { destructiveHint: true },
|
|
241
|
+
}, wrapHandler("modify_subscriber_package_active_period", "modifySubscriberPrepaidPackageActivePeriod", BACKLOG_TOOL_SCOPES["modify_subscriber_package_active_period"], ctx, async ({ iccid, package_id, start_date, end_date }, token) => {
|
|
242
|
+
const params = { subscriber: iccid, packageId: package_id };
|
|
243
|
+
if (start_date !== undefined)
|
|
244
|
+
params.startDate = start_date;
|
|
245
|
+
if (end_date !== undefined)
|
|
246
|
+
params.endDate = end_date;
|
|
247
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
248
|
+
const result = await client.call("modifySubscriberPrepaidPackageActivePeriod", params);
|
|
249
|
+
return {
|
|
250
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
251
|
+
};
|
|
252
|
+
}));
|
|
253
|
+
// =========================================================================
|
|
254
|
+
// 6. MODIFY SUBSCRIBER VOIP PLAN
|
|
255
|
+
// OCS method: modifySubscriberVoipPlan
|
|
256
|
+
// Gap: G-11 (MEDIUM). Parallel to modify_subscriber_mobile_plan for VoIP.
|
|
257
|
+
// =========================================================================
|
|
258
|
+
server.registerTool("modify_subscriber_voip_plan", {
|
|
259
|
+
title: "Modify Subscriber VoIP Plan",
|
|
260
|
+
description: "Use this to change the VoIP pricing plan assigned to a specific subscriber. " +
|
|
261
|
+
"VoIP plans control billing rates for VoIP calls made through the OCS platform, " +
|
|
262
|
+
"separate from the standard mobile plan's call rates. " +
|
|
263
|
+
"Params: `iccid` (subscriber identifier), `voip_plan_id` (integer VoIP plan ID from " +
|
|
264
|
+
"the OCS reseller settings). " +
|
|
265
|
+
"Returns: updated subscriber record confirming the new VoIP plan. " +
|
|
266
|
+
"Do NOT use this for mobile (non-VoIP) plan changes — use `modify_subscriber_mobile_plan`. " +
|
|
267
|
+
"For data-only eSIM products without VoIP services this tool has no effect.",
|
|
268
|
+
inputSchema: {
|
|
269
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
270
|
+
voip_plan_id: z
|
|
271
|
+
.number()
|
|
272
|
+
.describe("The VoIP pricing plan ID to assign to this subscriber"),
|
|
273
|
+
...DRY_RUN_FIELD,
|
|
274
|
+
},
|
|
275
|
+
annotations: { destructiveHint: true },
|
|
276
|
+
}, wrapHandler("modify_subscriber_voip_plan", "modifySubscriberVoipPlan", BACKLOG_TOOL_SCOPES["modify_subscriber_voip_plan"], ctx, async ({ iccid, voip_plan_id }, token) => {
|
|
277
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
278
|
+
const result = await client.call("modifySubscriberVoipPlan", { subscriber: iccid, voipPlanId: voip_plan_id });
|
|
279
|
+
return {
|
|
280
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
281
|
+
};
|
|
282
|
+
}));
|
|
283
|
+
// =========================================================================
|
|
284
|
+
// 7. PUSH STEERING TO SUBSCRIBER
|
|
285
|
+
// OCS method: pushSteeringToSubs
|
|
286
|
+
// Gap: G-04 (HIGH). Must be called AFTER modify_subscriber_steering_list
|
|
287
|
+
// to push the new OPLMN list to the physical device.
|
|
288
|
+
// =========================================================================
|
|
289
|
+
server.registerTool("push_steering_to_subscriber", {
|
|
290
|
+
title: "Push Steering List to Subscriber Device",
|
|
291
|
+
description: "Use this AFTER `modify_subscriber_steering_list` to actively push the updated OPLMN " +
|
|
292
|
+
"(operator preference list) to the subscriber's physical eSIM/SIM. " +
|
|
293
|
+
"Without this call, the steering list assignment change is recorded in OCS but the device " +
|
|
294
|
+
"continues using the old operator preference list until it performs a network re-registration. " +
|
|
295
|
+
"This is required for immediate operator switching (e.g. steering a subscriber away from " +
|
|
296
|
+
"an expensive roaming partner in real time). " +
|
|
297
|
+
"Params: `iccid` (subscriber identifier). " +
|
|
298
|
+
"Returns: push confirmation from OCS with delivery status. " +
|
|
299
|
+
"Do NOT call this without first calling `modify_subscriber_steering_list` — pushing without " +
|
|
300
|
+
"an assigned steering list is a no-op and wastes an OCS call.",
|
|
301
|
+
inputSchema: {
|
|
302
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
303
|
+
...DRY_RUN_FIELD,
|
|
304
|
+
},
|
|
305
|
+
annotations: { destructiveHint: true },
|
|
306
|
+
}, wrapHandler("push_steering_to_subscriber", "pushSteeringToSubs", BACKLOG_TOOL_SCOPES["push_steering_to_subscriber"], ctx, async ({ iccid }, token) => {
|
|
307
|
+
const cache = new Map();
|
|
308
|
+
const sub = await resolveSubscriberByIccid(ctx.env, token, iccid, cache);
|
|
309
|
+
// OCS pushSteeringToSubs expects subscriber identifier — ICCID confirmed
|
|
310
|
+
// from live docs. Passing the full subscriber object as fallback.
|
|
311
|
+
const subscriberId = sub.id ?? sub.subscriberId ?? iccid;
|
|
312
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
313
|
+
const result = await client.call("pushSteeringToSubs", { subscriber: subscriberId });
|
|
314
|
+
return {
|
|
315
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
316
|
+
};
|
|
317
|
+
}));
|
|
318
|
+
// =========================================================================
|
|
319
|
+
// 8. RESET SUBSCRIBER GZ COUNTER
|
|
320
|
+
// OCS method: resetSubsGzCounter
|
|
321
|
+
// Gap: G-10 (MEDIUM). Resets usage counters — used after billing disputes.
|
|
322
|
+
// Admin scope — irreversible operation.
|
|
323
|
+
// =========================================================================
|
|
324
|
+
server.registerTool("reset_subscriber_gz_counter", {
|
|
325
|
+
title: "Reset Subscriber Green Zone Counter",
|
|
326
|
+
description: "ADMIN: Use this to reset the Green Zone (Greenzone) volume counter for a subscriber. " +
|
|
327
|
+
"The Green Zone counter tracks bytes consumed on the reseller-defined whitelist of " +
|
|
328
|
+
"hosts/IPs after the subscriber's bundle is depleted — NOT the Diameter Gz/Gy accounting " +
|
|
329
|
+
"interface. Typically used after a billing dispute or test-cycle reset. " +
|
|
330
|
+
"This operation is IRREVERSIBLE — volumeOnGZ is permanently zeroed. " +
|
|
331
|
+
"Params: `iccid` (subscriber identifier). " +
|
|
332
|
+
"Returns: new counter state with volumeOnGZ (bytes, normally 0 after reset), " +
|
|
333
|
+
"lastResetDate, lastUpdateDate. " +
|
|
334
|
+
"Always call `get_subscriber` with `with_gz_counter=true` first to capture the snapshot. " +
|
|
335
|
+
"Do NOT use this to pause data usage — use `set_subscriber_traffic_restrictions` with " +
|
|
336
|
+
"`dataAllowed=false` instead.",
|
|
337
|
+
inputSchema: {
|
|
338
|
+
iccid: z.string().describe("The subscriber ICCID (20-digit ICC identifier)"),
|
|
339
|
+
...DRY_RUN_FIELD,
|
|
340
|
+
},
|
|
341
|
+
annotations: { destructiveHint: true },
|
|
342
|
+
}, wrapHandler("reset_subscriber_gz_counter", "resetSubsGzCounter", BACKLOG_TOOL_SCOPES["reset_subscriber_gz_counter"], ctx, async ({ iccid }, token) => {
|
|
343
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
344
|
+
const result = await client.call("resetSubsGzCounter", { subscriber: iccid });
|
|
345
|
+
return {
|
|
346
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
347
|
+
};
|
|
348
|
+
}));
|
|
349
|
+
// =========================================================================
|
|
350
|
+
// 10. CARRIER WEBHOOK CONFIG — reads relay + notification flags from
|
|
351
|
+
// getResellerInfo.trafficInfo and getResellerInfo.notificationInfo.
|
|
352
|
+
// Audit gap S-04 in UNUSED-FEATURES.md — now implemented.
|
|
353
|
+
//
|
|
354
|
+
// trafficInfo shape (live probe against reseller 1170, 2026-05-21):
|
|
355
|
+
// { relayGy: boolean, relayCallSms: boolean, relayLU: boolean, relayVoIP: boolean }
|
|
356
|
+
// notificationInfo shape: passed through as-is (z.record(z.unknown())) because
|
|
357
|
+
// the exact keys vary by OCS configuration and are not documented upstream.
|
|
358
|
+
// =========================================================================
|
|
359
|
+
// carrier_webhook_config is now a real tool — registered unconditionally
|
|
360
|
+
// (no CARRIER_AUDIT_STUBS_ENABLED guard needed after implementation).
|
|
361
|
+
server.registerTool("carrier_webhook_config", {
|
|
362
|
+
title: "Carrier Webhook / Relay Flag Status",
|
|
363
|
+
description: "Use this to check the current Bridge4IP webhook and relay flag configuration for " +
|
|
364
|
+
"this reseller. Returns the active state of all four traffic relay flags: " +
|
|
365
|
+
"Relay LU (Update Location — cell tower changes, closest to country-change signal), " +
|
|
366
|
+
"Relay Gy (mobile data usage events), Relay VoIP (VoIP usage events), " +
|
|
367
|
+
"Relay calls+SMS (call and SMS events). " +
|
|
368
|
+
"Also returns which notification webhooks are enabled (prepaid package usage threshold, " +
|
|
369
|
+
"reseller low credit, ES2 eSIM status, recurring packages) as a passthrough object. " +
|
|
370
|
+
"All relay/notification configuration is done in the OCS portal UI — this tool is " +
|
|
371
|
+
"READ-ONLY and reflects current state. " +
|
|
372
|
+
"Relay LU is the highest-value flag: when active, Bridge4IP pushes real-time Update " +
|
|
373
|
+
"Location events (mcc, mnc, lac, cellId) to the configured HTTP endpoint.",
|
|
374
|
+
inputSchema: {
|
|
375
|
+
reseller_id: z
|
|
376
|
+
.number()
|
|
377
|
+
.int()
|
|
378
|
+
.optional()
|
|
379
|
+
.describe("Reseller ID (omit to use the token owner's reseller)"),
|
|
380
|
+
},
|
|
381
|
+
annotations: { readOnlyHint: true },
|
|
382
|
+
}, wrapHandler("carrier_webhook_config", "getResellerInfo", BACKLOG_TOOL_SCOPES["carrier_webhook_config"], ctx, async ({ reseller_id }, token) => {
|
|
383
|
+
const client = new OcsClient(ctx.env.CARRIER_OCS_BASE_URL, token);
|
|
384
|
+
// Resolve reseller ID: explicit arg → token owner's reseller
|
|
385
|
+
let resellerId = reseller_id;
|
|
386
|
+
if (resellerId === undefined) {
|
|
387
|
+
resellerId = await getDefaultResellerId(ctx.env, token);
|
|
388
|
+
}
|
|
389
|
+
const params = {};
|
|
390
|
+
if (resellerId !== undefined)
|
|
391
|
+
params.resellerId = resellerId;
|
|
392
|
+
const raw = await client.call("getResellerInfo", params);
|
|
393
|
+
const traffic = raw.trafficInfo ?? {};
|
|
394
|
+
const notification = raw.notificationInfo ?? {};
|
|
395
|
+
const result = {
|
|
396
|
+
resellerId: raw.id ?? resellerId,
|
|
397
|
+
traffic: {
|
|
398
|
+
relayGy: traffic.relayGy === true,
|
|
399
|
+
relayCallSms: traffic.relayCallSms === true,
|
|
400
|
+
relayLU: traffic.relayLU === true,
|
|
401
|
+
relayVoIP: traffic.relayVoIP === true,
|
|
402
|
+
},
|
|
403
|
+
notification,
|
|
404
|
+
};
|
|
405
|
+
return {
|
|
406
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
407
|
+
};
|
|
408
|
+
}));
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=tools-backlog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-backlog.js","sourceRoot":"","sources":["../src/tools-backlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carrier MCP — carrier_ask + carrier_ask_describe (v2.0 live routing).
|
|
3
|
+
*
|
|
4
|
+
* IMPLEMENTATION STATUS: LIVE (Phase 2)
|
|
5
|
+
* carrier_ask now routes via Claude Haiku 4.5 on AWS Bedrock tool-use.
|
|
6
|
+
* The router receives the full TOOL_REGISTRY as its tool catalog and returns
|
|
7
|
+
* a single tool_use block identifying the best matching tool + extracted params.
|
|
8
|
+
*
|
|
9
|
+
* ACTIVATION:
|
|
10
|
+
* - Requires AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY in Doppler carrier/dev+stg+prd.
|
|
11
|
+
* - Set CARRIER_ASK_ENABLED=true in Doppler to activate per-env.
|
|
12
|
+
* - Without the credentials/flag, carrier_ask gracefully degrades to routing_pending.
|
|
13
|
+
*
|
|
14
|
+
* DESIGN CHOICES:
|
|
15
|
+
* - Router model: Claude Haiku 4.5 on Bedrock (us.anthropic.claude-haiku-4-5-20251001-v1:0).
|
|
16
|
+
* - Auth: SigV4 via aws4fetch — no AWS SDK bundle (CF Worker compatible).
|
|
17
|
+
* - tool_choice: { type: "any" } — forces a tool_use response.
|
|
18
|
+
* - Ambiguous/no-match: sentinel "carrier_clarify" tool for Haiku to signal.
|
|
19
|
+
* - HARD_BLOCK_TOOLS: always return confirm_token; never auto-execute.
|
|
20
|
+
* - Confirm token TTL: 120s. Single-use (deleted on consume).
|
|
21
|
+
* - Intent hashing: SHA-256, hex. Not stored verbatim (PII guard).
|
|
22
|
+
* - Audit log: Analytics Engine, fire-and-forget. Extended schema for router.
|
|
23
|
+
* - Rate-limit (429): returns friendly retry hint, never crashes.
|
|
24
|
+
*
|
|
25
|
+
* SAFETY FLOORS (non-negotiable):
|
|
26
|
+
* - Resolved tool name validated against TOOL_REGISTRY — no hallucination.
|
|
27
|
+
* - HARD_BLOCK_TOOLS always require confirm_token round-trip.
|
|
28
|
+
* - No-match / ambiguous: structured response, never fabricated tool call.
|
|
29
|
+
*/
|
|
30
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
31
|
+
import { type ToolContext } from "./tools.js";
|
|
32
|
+
declare const TOOL_REGISTRY: ReadonlySet<string>;
|
|
33
|
+
declare const HARD_BLOCK_TOOLS: ReadonlySet<string>;
|
|
34
|
+
export declare function hashIntent(intent: string): string;
|
|
35
|
+
type RouteResult = {
|
|
36
|
+
match: "confirmed";
|
|
37
|
+
resolved_tool: string;
|
|
38
|
+
resolved_params: Record<string, unknown>;
|
|
39
|
+
confidence: number;
|
|
40
|
+
confirm_required: false;
|
|
41
|
+
execution_note: string;
|
|
42
|
+
} | {
|
|
43
|
+
match: "pending_confirm";
|
|
44
|
+
resolved_tool: string;
|
|
45
|
+
resolved_params: Record<string, unknown>;
|
|
46
|
+
confidence: number;
|
|
47
|
+
confirm_required: true;
|
|
48
|
+
confirm_token: string;
|
|
49
|
+
confirm_expires_in_seconds: number;
|
|
50
|
+
dry_run_preview?: string;
|
|
51
|
+
safety_note: string;
|
|
52
|
+
} | {
|
|
53
|
+
match: "ambiguous";
|
|
54
|
+
candidates: Array<{
|
|
55
|
+
tool: string;
|
|
56
|
+
reason: string;
|
|
57
|
+
}>;
|
|
58
|
+
clarifying_question: string;
|
|
59
|
+
} | {
|
|
60
|
+
match: "none";
|
|
61
|
+
closest: Array<{
|
|
62
|
+
tool: string;
|
|
63
|
+
reason: string;
|
|
64
|
+
}>;
|
|
65
|
+
suggestion: string;
|
|
66
|
+
} | {
|
|
67
|
+
match: "routing_pending";
|
|
68
|
+
intent_received: string;
|
|
69
|
+
note: string;
|
|
70
|
+
scaffold_version: string;
|
|
71
|
+
} | {
|
|
72
|
+
match: "rate_limited";
|
|
73
|
+
retry_after_seconds: number;
|
|
74
|
+
suggestion: string;
|
|
75
|
+
};
|
|
76
|
+
interface BedrockTool {
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
input_schema: {
|
|
80
|
+
type: "object";
|
|
81
|
+
properties: Record<string, unknown>;
|
|
82
|
+
required?: string[];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
interface BedrockPayload {
|
|
86
|
+
anthropic_version: "bedrock-2023-05-31";
|
|
87
|
+
max_tokens: number;
|
|
88
|
+
system: string;
|
|
89
|
+
messages: Array<{
|
|
90
|
+
role: "user" | "assistant";
|
|
91
|
+
content: string;
|
|
92
|
+
}>;
|
|
93
|
+
tools: BedrockTool[];
|
|
94
|
+
tool_choice: {
|
|
95
|
+
type: "any";
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
interface BedrockToolUseBlock {
|
|
99
|
+
type: "tool_use";
|
|
100
|
+
id: string;
|
|
101
|
+
name: string;
|
|
102
|
+
input: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
interface BedrockTextBlock {
|
|
105
|
+
type: "text";
|
|
106
|
+
text: string;
|
|
107
|
+
}
|
|
108
|
+
interface BedrockResponse {
|
|
109
|
+
content: Array<BedrockToolUseBlock | BedrockTextBlock>;
|
|
110
|
+
stop_reason: string;
|
|
111
|
+
}
|
|
112
|
+
type RoutedResult = Extract<RouteResult, {
|
|
113
|
+
match: "confirmed";
|
|
114
|
+
}> | Extract<RouteResult, {
|
|
115
|
+
match: "pending_confirm";
|
|
116
|
+
}> | Extract<RouteResult, {
|
|
117
|
+
match: "ambiguous";
|
|
118
|
+
}> | Extract<RouteResult, {
|
|
119
|
+
match: "none";
|
|
120
|
+
}> | Extract<RouteResult, {
|
|
121
|
+
match: "routing_pending";
|
|
122
|
+
}> | Extract<RouteResult, {
|
|
123
|
+
match: "rate_limited";
|
|
124
|
+
}>;
|
|
125
|
+
export declare function callBedrock(env: {
|
|
126
|
+
AWS_ACCESS_KEY_ID: string;
|
|
127
|
+
AWS_SECRET_ACCESS_KEY: string;
|
|
128
|
+
AWS_REGION?: string;
|
|
129
|
+
BEDROCK_MODEL_ID?: string;
|
|
130
|
+
}, payload: BedrockPayload): Promise<BedrockResponse>;
|
|
131
|
+
export declare function _routeIntent(intent: string, context: {
|
|
132
|
+
iccid?: string;
|
|
133
|
+
account_id?: number;
|
|
134
|
+
reseller_id?: number;
|
|
135
|
+
}, env: ToolContext["env"]): Promise<RoutedResult>;
|
|
136
|
+
export declare function registerAllCarrierAskTools(server: McpServer, ctx: ToolContext): void;
|
|
137
|
+
export { TOOL_REGISTRY, HARD_BLOCK_TOOLS };
|
|
138
|
+
//# sourceMappingURL=tools-carrier-ask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-carrier-ask.d.ts","sourceRoot":"","sources":["../src/tools-carrier-ask.ts"],"names":[],"mappings":"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"}
|