@carrierllc/mcp 0.13.39 → 0.13.40

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 CHANGED
@@ -7,6 +7,14 @@ Natural language control of your MVNO/eSIM fleet. 43 OCS tools + 9 intelligence
7
7
 
8
8
  ---
9
9
 
10
+ ## Durable inventory issuance
11
+
12
+ `assign_package` with `account_for_subs` (or no ICCID) calls the authenticated Carrier API's `/v1/subscribers/issue-from-inventory` route. Supply a stable `request_key`: 1–200 characters, first character alphanumeric, remaining characters alphanumeric, `_`, `.`, `:`, or `-`. No key is generated. Optional `business_reference` identifies an existing storefront order; the API must authorize it, it is not proof of ownership.
13
+
14
+ Set `CARRIER_API_TOKEN` to your own Carrier credential. Hosted MCP and `carrier packages assign --account-id … --template-id … --request-key … --commit` forward the current authenticated session credential. Explicit ICCID assignment remains the scoped OCS subscriber path, mutually exclusive with inventory/business reference.
15
+
16
+ Unknown response/transport outcomes preserve `request_key` and never trigger an automatic second dispatch. Reconcile using the same key; do not mint a replacement. Dry-run validates without allocating or resolving credentials.
17
+
10
18
  ## Quick start
11
19
 
12
20
  ### Interactive CLI (non-developers)
@@ -304,7 +312,9 @@ For multi-user deployments with OAuth 2.1 + PKCE, use the remote endpoint:
304
312
 
305
313
  | Variable | Required | Default | Description |
306
314
  |----------|----------|---------|-------------|
307
- | `ESIMVAULT_API_TOKEN` | Yes | — | Your eSIMVault OCS API token |
315
+ | `CARRIER_API_TOKEN` | Inventory issuance | — | Your own authenticated Carrier API credential. Required for durable `assign_package` inventory; never falls back to an OCS token. |
316
+ | `CARRIER_API_BASE_URL` | No | `https://api.carrier.llc` | Carrier REST API origin for durable inventory. Do not use the OCS provider URL. |
317
+ | `ESIMVAULT_API_TOKEN` | Explicit OCS tools | — | Your eSIMVault OCS API token; not a Carrier API credential |
308
318
  | `CARRIER_OCS_API_TOKEN` | Alternative | — | Alias for `ESIMVAULT_API_TOKEN` |
309
319
  | `CARRIER_OCS_BASE_URL` | No | `https://ocs.esimvault.cloud` | OCS base URL (no trailing slash) |
310
320
  | `BROWSER_USE_API_KEY` | No | — | Browser Use Cloud key. Enables the browsing agent (`ui_agent_ask`). Runs are billed to this key at roughly **$0.20–1.00 each** |
@@ -1855,7 +1855,7 @@ function storefrontScreen(input) {
1855
1855
  // package.json
1856
1856
  var package_default = {
1857
1857
  name: "@carrierllc/mcp",
1858
- version: "0.13.39",
1858
+ version: "0.13.40",
1859
1859
  description: "Carrier MCP \u2014 natural-language control of MVNO/eSIM fleets via eSIMVault OCS. Stdio mode for direct integration with Claude Desktop, Cursor, Windsurf, and MCP-compatible clients. Ships the `carrier` CLI (plugin install + white-label eSIM storefront scaffold).",
1860
1860
  license: "MIT",
1861
1861
  author: "Carrier (Lifecycle Innovations Limited)",
@@ -3097,7 +3097,7 @@ async function runWithBudget(method, attempt, budget = ocsBudgetFor(method)) {
3097
3097
  throw lastTimeout ?? new OcsTimeoutError(method, budget.attemptMs, budget.totalMs, Math.max(attempts, 1));
3098
3098
  }
3099
3099
 
3100
- // ../../packages/ocs-client/dist/chunk-HPVVOVWZ.js
3100
+ // ../../packages/ocs-client/dist/chunk-IU7WF2BY.js
3101
3101
  var RATE_LIMIT = 10;
3102
3102
  var WINDOW_MS = 1e3;
3103
3103
  var windows = /* @__PURE__ */ new Map();
@@ -3563,9 +3563,16 @@ var OcsClient = class {
3563
3563
  }
3564
3564
  throw err;
3565
3565
  }
3566
- if (json.status?.code !== 0) {
3567
- const ocsCode = json.status?.code ?? -1;
3568
- const rawMsg = json.status?.msg ?? "Unknown error";
3566
+ const status = json !== null && typeof json === "object" && !Array.isArray(json) ? json.status : void 0;
3567
+ const ocsCode = status !== null && typeof status === "object" && !Array.isArray(status) ? status.code : void 0;
3568
+ if (typeof ocsCode !== "number" || !Number.isFinite(ocsCode)) {
3569
+ throw new OcsContractError(method, [{
3570
+ path: "status.code",
3571
+ message: "Expected a finite numeric OCS status code"
3572
+ }], json);
3573
+ }
3574
+ if (ocsCode !== 0) {
3575
+ const rawMsg = typeof status?.msg === "string" ? status.msg : "Unknown error";
3569
3576
  const rawBody = json;
3570
3577
  const { message, details } = ocsErrorMessage(ocsCode, rawMsg, rawBody);
3571
3578
  throw new OcsApiError(ocsCode, message, method, details);
@@ -5534,4 +5541,4 @@ export {
5534
5541
  package_default,
5535
5542
  CARRIER_VERSION
5536
5543
  };
5537
- //# sourceMappingURL=chunk-I3Z5WYDG.js.map
5544
+ //# sourceMappingURL=chunk-WVXII7ZR.js.map