@payments-ai/mcp 2.6.0 → 2.7.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.
Files changed (2) hide show
  1. package/dist/main.http.js +243 -173
  2. package/package.json +2 -2
package/dist/main.http.js CHANGED
@@ -274,7 +274,11 @@ function isExplicitGrantScope(scope) {
274
274
  }
275
275
  var DEFAULT_OAUTH_SCOPES = OAUTH_CONSENT_READ_SCOPES.filter((scope) => !isExplicitGrantScope(scope));
276
276
  var OAUTH_RESPONSE_TYPES_SUPPORTED = ["code"];
277
- var OAUTH_GRANT_TYPES_SUPPORTED = ["authorization_code"];
277
+ var OAUTH_DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
278
+ var OAUTH_GRANT_TYPES_SUPPORTED = [
279
+ "authorization_code",
280
+ OAUTH_DEVICE_CODE_GRANT_TYPE
281
+ ];
278
282
  var OAUTH_CODE_CHALLENGE_METHODS_SUPPORTED = ["S256"];
279
283
  function buildOAuthAuthorizationServerMetadata(issuerUrl, options2) {
280
284
  return {
@@ -283,6 +287,7 @@ function buildOAuthAuthorizationServerMetadata(issuerUrl, options2) {
283
287
  token_endpoint: `${issuerUrl}/api/v1/oauth/token`,
284
288
  revocation_endpoint: `${issuerUrl}/api/v1/oauth/revoke`,
285
289
  registration_endpoint: `${issuerUrl}/api/v1/oauth/register`,
290
+ device_authorization_endpoint: `${issuerUrl}/api/v1/oauth/device_authorization`,
286
291
  scopes_supported: SUPPORTED_OAUTH_SCOPES,
287
292
  response_types_supported: OAUTH_RESPONSE_TYPES_SUPPORTED,
288
293
  grant_types_supported: OAUTH_GRANT_TYPES_SUPPORTED,
@@ -296,12 +301,67 @@ function buildOAuthAuthorizationServerMetadata(issuerUrl, options2) {
296
301
  var MCP_OAUTH_AUTHORIZATION_WINDOW_MINUTES = 30;
297
302
  var MCP_OAUTH_AUTHORIZATION_WINDOW_MS = MCP_OAUTH_AUTHORIZATION_WINDOW_MINUTES * 60 * 1e3;
298
303
 
304
+ // ../../packages/mcp-contracts/dist/device-user-code.js
305
+ var DEVICE_USER_CODE_ALPHABET = "BCDFGHJKLMNPQRSTVWXZ";
306
+ var DEVICE_USER_CODE_LENGTH = 8;
307
+ var DEVICE_USER_CODE_PATTERN = new RegExp(`^[${DEVICE_USER_CODE_ALPHABET}]{${DEVICE_USER_CODE_LENGTH}}$`);
308
+
299
309
  // ../../packages/mcp-contracts/dist/order-limits.js
300
310
  var import_currency2 = __toESM(require_currency(), 1);
301
311
 
302
312
  // ../../packages/mcp-contracts/dist/currency-precision.js
303
313
  var import_currency = __toESM(require_currency(), 1);
304
314
 
315
+ // ../../packages/mcp-contracts/dist/precision-messages.js
316
+ function formatAmountPrecisionMessage(currency5, fractionDigits) {
317
+ const code = currency5.trim().toUpperCase();
318
+ if (fractionDigits === 0) {
319
+ return `Amount must be a whole number of ${code}, which has no minor unit. Recovery: round the amount to whole ${code}, e.g. 500 rather than 500.5.`;
320
+ }
321
+ return `Amount must have at most ${fractionDigits} decimal places in ${code}. Recovery: round the amount to ${fractionDigits} decimal places.`;
322
+ }
323
+
324
+ // ../../packages/mcp-contracts/dist/currency-precision.js
325
+ function currencyFractionDigits(currencyCode3) {
326
+ const code = currencyCode3.trim().toUpperCase();
327
+ let digits;
328
+ try {
329
+ digits = new Intl.NumberFormat("en-US", {
330
+ style: "currency",
331
+ currency: code
332
+ }).resolvedOptions().maximumFractionDigits;
333
+ } catch {
334
+ throw new Error(`Unsupported currency "${currencyCode3}"`);
335
+ }
336
+ if (typeof digits !== "number") {
337
+ throw new Error(`Unsupported currency "${currencyCode3}"`);
338
+ }
339
+ return digits;
340
+ }
341
+ var MINOR_UNIT_RELATIVE_TOLERANCE = Number.EPSILON * 16;
342
+ function amountExceedsCurrencyPrecision(amount, currencyCode3) {
343
+ const minorUnits = amount * 10 ** currencyFractionDigits(currencyCode3);
344
+ const drift = Math.abs(minorUnits - Math.round(minorUnits));
345
+ return drift > Math.abs(minorUnits) * MINOR_UNIT_RELATIVE_TOLERANCE;
346
+ }
347
+ function describeAmountPrecisionViolation(amount, currencyCode3) {
348
+ const fractionDigits = resolveFractionDigits(currencyCode3);
349
+ if (fractionDigits === void 0 || !amountExceedsCurrencyPrecision(amount, currencyCode3)) {
350
+ return void 0;
351
+ }
352
+ return formatAmountPrecisionMessage(currencyCode3, fractionDigits);
353
+ }
354
+ function describeRequestAmountPrecisionViolation(amount, currencyCode3) {
355
+ return describeAmountPrecisionViolation((0, import_currency.default)(amount).value, currencyCode3);
356
+ }
357
+ function resolveFractionDigits(currencyCode3) {
358
+ try {
359
+ return currencyFractionDigits(currencyCode3);
360
+ } catch {
361
+ return void 0;
362
+ }
363
+ }
364
+
305
365
  // ../../packages/mcp-contracts/dist/plan-amount-limits.js
306
366
  var DEFAULT_MIN_PAID_PLAN_AMOUNT = 1;
307
367
  var MIN_PAID_PLAN_AMOUNT_BY_CURRENCY = {
@@ -334,13 +394,6 @@ function formatMinPaidPlanAmountMessage(currency5, minAmount) {
334
394
  const code = currency5.trim().toUpperCase() || "USD";
335
395
  return `Amount must be at least ${minAmount} ${code} for paid plans`;
336
396
  }
337
- function formatAmountPrecisionMessage(currency5, fractionDigits) {
338
- const code = currency5.trim().toUpperCase();
339
- if (fractionDigits === 0) {
340
- return `Amount must be a whole number of ${code}, which has no minor unit. Recovery: round the amount to whole ${code}, e.g. 500 rather than 500.5.`;
341
- }
342
- return `Amount must have at most ${fractionDigits} decimal places in ${code}. Recovery: round the amount to ${fractionDigits} decimal places.`;
343
- }
344
397
  var LOWEST_MIN_PAID_PLAN_AMOUNT = Math.min(...Object.values(MIN_PAID_PLAN_AMOUNT_BY_CURRENCY));
345
398
  var PAID_PLAN_NOT_FREE_BY_ZERO_AMOUNT = "A paid plan cannot be made free by setting its amount to 0; create a free-access plan instead.";
346
399
  function formatAmountBelowLowestFloorMessage() {
@@ -391,47 +444,6 @@ function formatPeriodLengthRecovery(maxLength) {
391
444
  }
392
445
  var MAX_FREE_TRIAL_DAYS = 730;
393
446
 
394
- // ../../packages/mcp-contracts/dist/currency-precision.js
395
- function currencyFractionDigits(currencyCode3) {
396
- const code = currencyCode3.trim().toUpperCase();
397
- let digits;
398
- try {
399
- digits = new Intl.NumberFormat("en-US", {
400
- style: "currency",
401
- currency: code
402
- }).resolvedOptions().maximumFractionDigits;
403
- } catch {
404
- throw new Error(`Unsupported currency "${currencyCode3}"`);
405
- }
406
- if (typeof digits !== "number") {
407
- throw new Error(`Unsupported currency "${currencyCode3}"`);
408
- }
409
- return digits;
410
- }
411
- var MINOR_UNIT_RELATIVE_TOLERANCE = Number.EPSILON * 16;
412
- function amountExceedsCurrencyPrecision(amount, currencyCode3) {
413
- const minorUnits = amount * 10 ** currencyFractionDigits(currencyCode3);
414
- const drift = Math.abs(minorUnits - Math.round(minorUnits));
415
- return drift > Math.abs(minorUnits) * MINOR_UNIT_RELATIVE_TOLERANCE;
416
- }
417
- function describeAmountPrecisionViolation(amount, currencyCode3) {
418
- const fractionDigits = resolveFractionDigits(currencyCode3);
419
- if (fractionDigits === void 0 || !amountExceedsCurrencyPrecision(amount, currencyCode3)) {
420
- return void 0;
421
- }
422
- return formatAmountPrecisionMessage(currencyCode3, fractionDigits);
423
- }
424
- function describeRequestAmountPrecisionViolation(amount, currencyCode3) {
425
- return describeAmountPrecisionViolation((0, import_currency.default)(amount).value, currencyCode3);
426
- }
427
- function resolveFractionDigits(currencyCode3) {
428
- try {
429
- return currencyFractionDigits(currencyCode3);
430
- } catch {
431
- return void 0;
432
- }
433
- }
434
-
435
447
  // ../../packages/mcp-contracts/dist/order-limits.js
436
448
  function getMaxOrderAmount(currency5) {
437
449
  return getMaxPlanAmount(currency5);
@@ -591,7 +603,7 @@ function isPricedItem(item) {
591
603
  return typeof item === "object" && item !== null && "unitPrice" in item && typeof item.unitPrice === "number" && "quantity" in item && typeof item.quantity === "number";
592
604
  }
593
605
 
594
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/external.js
606
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/external.js
595
607
  var external_exports = {};
596
608
  __export(external_exports, {
597
609
  $brand: () => $brand,
@@ -854,7 +866,7 @@ __export(external_exports, {
854
866
  xor: () => xor
855
867
  });
856
868
 
857
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/index.js
869
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/index.js
858
870
  var core_exports2 = {};
859
871
  __export(core_exports2, {
860
872
  $ZodAny: () => $ZodAny,
@@ -1171,7 +1183,7 @@ __export(core_exports2, {
1171
1183
  withParser: () => withParser
1172
1184
  });
1173
1185
 
1174
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/util.js
1186
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/util.js
1175
1187
  var util_exports = {};
1176
1188
  __export(util_exports, {
1177
1189
  BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES,
@@ -1242,6 +1254,7 @@ __export(util_exports, {
1242
1254
  required: () => required,
1243
1255
  safeExtend: () => safeExtend,
1244
1256
  shallowClone: () => shallowClone,
1257
+ sizeCaps: () => sizeCaps,
1245
1258
  slugify: () => slugify,
1246
1259
  stringifyPrimitive: () => stringifyPrimitive,
1247
1260
  toZod: () => toZod,
@@ -1761,6 +1774,18 @@ function prefixIssues(path2, issues) {
1761
1774
  function unwrapMessage(message) {
1762
1775
  return typeof message === "string" ? message : message?.message;
1763
1776
  }
1777
+ function sizeCaps(defChecks) {
1778
+ const caps = [];
1779
+ for (const ch of defChecks ?? []) {
1780
+ const d = ch._zod.def;
1781
+ if (!/_(length|size)$|_equals$/.test(d.check))
1782
+ break;
1783
+ const max = d.maximum ?? d.length ?? d.size;
1784
+ if (max >= 0)
1785
+ caps.push([max, ch]);
1786
+ }
1787
+ return caps;
1788
+ }
1764
1789
  function attachSchema(issues, start, inst) {
1765
1790
  var _a3;
1766
1791
  for (let i = start; i < issues.length; i++) {
@@ -2014,7 +2039,7 @@ function constantCatch(value) {
2014
2039
  return fn;
2015
2040
  }
2016
2041
 
2017
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.js
2042
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/core.js
2018
2043
  var _a;
2019
2044
  var NEVER = /* @__PURE__ */ Object.freeze({
2020
2045
  status: "aborted"
@@ -2136,7 +2161,7 @@ function config(newConfig) {
2136
2161
  return globalConfig;
2137
2162
  }
2138
2163
 
2139
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/errors.js
2164
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/errors.js
2140
2165
  function _getMessage() {
2141
2166
  const internals = this._zod;
2142
2167
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -2328,7 +2353,7 @@ function prettifyError(error62) {
2328
2353
  return lines.join("\n");
2329
2354
  }
2330
2355
 
2331
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/parse.js
2356
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/parse.js
2332
2357
  function finalizeParams(callee, params) {
2333
2358
  return { callee: params?.callee ?? callee, Err: params?.Err };
2334
2359
  }
@@ -2488,7 +2513,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
2488
2513
  };
2489
2514
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
2490
2515
 
2491
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/regexes.js
2516
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/regexes.js
2492
2517
  var regexes_exports = {};
2493
2518
  __export(regexes_exports, {
2494
2519
  anyString: () => anyString,
@@ -2660,7 +2685,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
2660
2685
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
2661
2686
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
2662
2687
 
2663
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/checks.js
2688
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/checks.js
2664
2689
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2665
2690
  var _a3;
2666
2691
  inst._zod ?? (inst._zod = {});
@@ -3136,7 +3161,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3136
3161
  };
3137
3162
  });
3138
3163
 
3139
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/doc.js
3164
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/doc.js
3140
3165
  var Doc = class {
3141
3166
  constructor(args = [], closed = {}) {
3142
3167
  this.content = [];
@@ -3177,14 +3202,14 @@ ${content.join("\n")}
3177
3202
  }
3178
3203
  };
3179
3204
 
3180
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/versions.js
3205
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/versions.js
3181
3206
  var version = {
3182
3207
  major: 4,
3183
3208
  minor: 6,
3184
- patch: 5
3209
+ patch: 7
3185
3210
  };
3186
3211
 
3187
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/schemas.js
3212
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/schemas.js
3188
3213
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3189
3214
  var _a3;
3190
3215
  inst ?? (inst = {});
@@ -3937,6 +3962,31 @@ var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => {
3937
3962
  return payload;
3938
3963
  };
3939
3964
  });
3965
+ function capSize(inst, size) {
3966
+ const caps = sizeCaps(inst._zod.def.checks);
3967
+ if (!caps.length)
3968
+ return;
3969
+ const cap = Math.min(...caps.map((c) => c[0]));
3970
+ const parse4 = inst._zod.parse;
3971
+ inst._zod.parse = (payload, ctx) => {
3972
+ const n = size(payload.value);
3973
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
3974
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) {
3975
+ if (n > max && ch._zod.def.when(payload)) {
3976
+ const start = payload.issues.length;
3977
+ ch._zod.check(payload);
3978
+ payload.issues[start].continue = false;
3979
+ attachSchema(payload.issues, start, inst);
3980
+ return payload;
3981
+ }
3982
+ }
3983
+ }
3984
+ return parse4(payload, ctx);
3985
+ };
3986
+ }
3987
+ var arraySize = (input2) => Array.isArray(input2) ? input2.length : -1;
3988
+ var mapSize = (input2) => input2 instanceof Map ? input2.size : -1;
3989
+ var setSize = (input2) => input2 instanceof Set ? input2.size : -1;
3940
3990
  function handleArrayResult(result2, final, index) {
3941
3991
  if (result2.issues.length) {
3942
3992
  final.issues.push(...prefixIssues(index, result2.issues));
@@ -3980,6 +4030,7 @@ var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => {
3980
4030
  }
3981
4031
  return payload;
3982
4032
  };
4033
+ capSize(inst, arraySize);
3983
4034
  });
3984
4035
  function handlePropertyResult(result2, final, key, input2, optin, optout) {
3985
4036
  const isPresent = key in input2;
@@ -4936,6 +4987,7 @@ var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => {
4936
4987
  return Promise.all(proms).then(() => payload);
4937
4988
  return payload;
4938
4989
  };
4990
+ capSize(inst, mapSize);
4939
4991
  });
4940
4992
  function handleMapResult(keyResult, valueResult, final, key, input2, inst, ctx) {
4941
4993
  if (keyResult.issues.length) {
@@ -5002,6 +5054,7 @@ var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => {
5002
5054
  return Promise.all(proms).then(() => payload);
5003
5055
  return payload;
5004
5056
  };
5057
+ capSize(inst, setSize);
5005
5058
  });
5006
5059
  function handleSetResult(result2, final) {
5007
5060
  if (result2.issues.length) {
@@ -5598,7 +5651,7 @@ function handleRefineResult(result2, payload, input2, inst) {
5598
5651
  }
5599
5652
  }
5600
5653
 
5601
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/memoizer.js
5654
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/memoizer.js
5602
5655
  var $ZodCyclicError = class extends Error {
5603
5656
  constructor() {
5604
5657
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -5875,7 +5928,7 @@ function isBackEdge(ctx, value) {
5875
5928
  return backEdges !== void 0 && isRef(value) && backEdges.has(value);
5876
5929
  }
5877
5930
 
5878
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/index.js
5931
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/index.js
5879
5932
  var locales_exports = {};
5880
5933
  __export(locales_exports, {
5881
5934
  ar: () => ar_default,
@@ -5943,7 +5996,7 @@ __export(locales_exports, {
5943
5996
  zhTW: () => zh_TW_default
5944
5997
  });
5945
5998
 
5946
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ar.js
5999
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ar.js
5947
6000
  var error = () => {
5948
6001
  const Sizable = {
5949
6002
  string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" },
@@ -6055,7 +6108,7 @@ function ar_default() {
6055
6108
  };
6056
6109
  }
6057
6110
 
6058
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/az.js
6111
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/az.js
6059
6112
  var error2 = () => {
6060
6113
  const Sizable = {
6061
6114
  string: { unit: "simvol", verb: "olmal\u0131d\u0131r" },
@@ -6166,7 +6219,7 @@ function az_default() {
6166
6219
  };
6167
6220
  }
6168
6221
 
6169
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/be.js
6222
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/be.js
6170
6223
  function getBelarusianPlural(count, one, few, many) {
6171
6224
  const absCount = Math.abs(count);
6172
6225
  const lastDigit = absCount % 10;
@@ -6335,7 +6388,7 @@ function be_default() {
6335
6388
  };
6336
6389
  }
6337
6390
 
6338
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bg.js
6391
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/bg.js
6339
6392
  var error4 = () => {
6340
6393
  const Sizable = {
6341
6394
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" },
@@ -6461,7 +6514,7 @@ function bg_default() {
6461
6514
  };
6462
6515
  }
6463
6516
 
6464
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bn.js
6517
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/bn.js
6465
6518
  var error5 = () => {
6466
6519
  const Sizable = {
6467
6520
  string: { unit: "\u0985\u0995\u09CD\u09B7\u09B0", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" },
@@ -6575,7 +6628,7 @@ function bn_default() {
6575
6628
  };
6576
6629
  }
6577
6630
 
6578
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ca.js
6631
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ca.js
6579
6632
  var error6 = () => {
6580
6633
  const Sizable = {
6581
6634
  string: { unit: "car\xE0cters", verb: "contenir" },
@@ -6689,7 +6742,7 @@ function ca_default() {
6689
6742
  };
6690
6743
  }
6691
6744
 
6692
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ckb.js
6745
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ckb.js
6693
6746
  var error7 = () => {
6694
6747
  const Sizable = {
6695
6748
  string: { unit: "\u067E\u06CC\u062A", verb: "\u0628\u06CE\u062A" },
@@ -6822,7 +6875,7 @@ function ckb_default() {
6822
6875
  };
6823
6876
  }
6824
6877
 
6825
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/cs.js
6878
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/cs.js
6826
6879
  var error8 = () => {
6827
6880
  const Sizable = {
6828
6881
  string: { unit: "znak\u016F", verb: "m\xEDt" },
@@ -6939,7 +6992,7 @@ function cs_default() {
6939
6992
  };
6940
6993
  }
6941
6994
 
6942
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/da.js
6995
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/da.js
6943
6996
  var error9 = () => {
6944
6997
  const Sizable = {
6945
6998
  string: { unit: "tegn", verb: "havde" },
@@ -7060,7 +7113,7 @@ function da_default() {
7060
7113
  };
7061
7114
  }
7062
7115
 
7063
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/de.js
7116
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/de.js
7064
7117
  var error10 = () => {
7065
7118
  const Sizable = {
7066
7119
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -7174,7 +7227,7 @@ function de_default() {
7174
7227
  };
7175
7228
  }
7176
7229
 
7177
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/el.js
7230
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/el.js
7178
7231
  var error11 = () => {
7179
7232
  const Sizable = {
7180
7233
  string: { unit: "\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" },
@@ -7287,7 +7340,7 @@ function el_default() {
7287
7340
  };
7288
7341
  }
7289
7342
 
7290
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/en.js
7343
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/en.js
7291
7344
  var error12 = () => {
7292
7345
  const Sizable = {
7293
7346
  string: { unit: "characters", verb: "to have" },
@@ -7412,7 +7465,7 @@ function en_default() {
7412
7465
  };
7413
7466
  }
7414
7467
 
7415
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/eo.js
7468
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/eo.js
7416
7469
  var error13 = () => {
7417
7470
  const Sizable = {
7418
7471
  string: { unit: "karaktrojn", verb: "havi" },
@@ -7527,7 +7580,7 @@ function eo_default() {
7527
7580
  };
7528
7581
  }
7529
7582
 
7530
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/es.js
7583
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/es.js
7531
7584
  var error14 = () => {
7532
7585
  const Sizable = {
7533
7586
  string: { unit: "caracteres", verb: "tener" },
@@ -7664,7 +7717,7 @@ function es_default() {
7664
7717
  };
7665
7718
  }
7666
7719
 
7667
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fa.js
7720
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fa.js
7668
7721
  var error15 = () => {
7669
7722
  const Sizable = {
7670
7723
  string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" },
@@ -7784,7 +7837,7 @@ function fa_default() {
7784
7837
  };
7785
7838
  }
7786
7839
 
7787
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fi.js
7840
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fi.js
7788
7841
  var error16 = () => {
7789
7842
  const Sizable = {
7790
7843
  string: { unit: "merkki\xE4", subject: "merkkijonon" },
@@ -7902,7 +7955,7 @@ function fi_default() {
7902
7955
  };
7903
7956
  }
7904
7957
 
7905
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr.js
7958
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fr.js
7906
7959
  var error17 = () => {
7907
7960
  const Sizable = {
7908
7961
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -8032,7 +8085,7 @@ function fr_default() {
8032
8085
  };
8033
8086
  }
8034
8087
 
8035
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr-CA.js
8088
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/fr-CA.js
8036
8089
  var error18 = () => {
8037
8090
  const Sizable = {
8038
8091
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -8145,7 +8198,7 @@ function fr_CA_default() {
8145
8198
  };
8146
8199
  }
8147
8200
 
8148
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/gu.js
8201
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/gu.js
8149
8202
  var error19 = () => {
8150
8203
  const Sizable = {
8151
8204
  string: { unit: "\u0A85\u0A95\u0ACD\u0AB7\u0AB0", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" },
@@ -8259,7 +8312,7 @@ function gu_default() {
8259
8312
  };
8260
8313
  }
8261
8314
 
8262
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/he.js
8315
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/he.js
8263
8316
  var error20 = () => {
8264
8317
  const TypeNames = {
8265
8318
  string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" },
@@ -8461,7 +8514,7 @@ function he_default() {
8461
8514
  };
8462
8515
  }
8463
8516
 
8464
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hi.js
8517
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hi.js
8465
8518
  var error21 = () => {
8466
8519
  const Sizable = {
8467
8520
  string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" },
@@ -8573,7 +8626,7 @@ function hi_default() {
8573
8626
  };
8574
8627
  }
8575
8628
 
8576
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hr.js
8629
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hr.js
8577
8630
  var error22 = () => {
8578
8631
  const Sizable = {
8579
8632
  string: { unit: "znakova", verb: "imati" },
@@ -8700,7 +8753,7 @@ function hr_default() {
8700
8753
  };
8701
8754
  }
8702
8755
 
8703
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hu.js
8756
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hu.js
8704
8757
  var error23 = () => {
8705
8758
  const Sizable = {
8706
8759
  string: { unit: "karakter", verb: "legyen" },
@@ -8814,7 +8867,7 @@ function hu_default() {
8814
8867
  };
8815
8868
  }
8816
8869
 
8817
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hy.js
8870
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/hy.js
8818
8871
  function getArmenianPlural(count, one, many) {
8819
8872
  return Math.abs(count) === 1 ? one : many;
8820
8873
  }
@@ -8973,7 +9026,7 @@ function hy_default() {
8973
9026
  };
8974
9027
  }
8975
9028
 
8976
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/id.js
9029
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/id.js
8977
9030
  var error25 = () => {
8978
9031
  const Sizable = {
8979
9032
  string: { unit: "karakter", verb: "memiliki" },
@@ -9085,7 +9138,7 @@ function id_default() {
9085
9138
  };
9086
9139
  }
9087
9140
 
9088
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/is.js
9141
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/is.js
9089
9142
  var error26 = () => {
9090
9143
  const Sizable = {
9091
9144
  string: { unit: "stafi", verb: "a\xF0 hafa" },
@@ -9200,7 +9253,7 @@ function is_default() {
9200
9253
  };
9201
9254
  }
9202
9255
 
9203
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/it.js
9256
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/it.js
9204
9257
  var error27 = () => {
9205
9258
  const Sizable = {
9206
9259
  string: { unit: "caratteri", verb: "avere" },
@@ -9314,7 +9367,7 @@ function it_default() {
9314
9367
  };
9315
9368
  }
9316
9369
 
9317
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ja.js
9370
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ja.js
9318
9371
  var error28 = () => {
9319
9372
  const Sizable = {
9320
9373
  string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" },
@@ -9427,7 +9480,7 @@ function ja_default() {
9427
9480
  };
9428
9481
  }
9429
9482
 
9430
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ka.js
9483
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ka.js
9431
9484
  var error29 = () => {
9432
9485
  const Sizable = {
9433
9486
  string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" },
@@ -9545,7 +9598,7 @@ function ka_default() {
9545
9598
  };
9546
9599
  }
9547
9600
 
9548
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/km.js
9601
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/km.js
9549
9602
  var error30 = () => {
9550
9603
  const Sizable = {
9551
9604
  string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" },
@@ -9661,12 +9714,12 @@ function km_default() {
9661
9714
  };
9662
9715
  }
9663
9716
 
9664
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kh.js
9717
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/kh.js
9665
9718
  function kh_default() {
9666
9719
  return km_default();
9667
9720
  }
9668
9721
 
9669
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kn.js
9722
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/kn.js
9670
9723
  var error31 = () => {
9671
9724
  const Sizable = {
9672
9725
  string: { unit: "\u0C85\u0C95\u0CCD\u0CB7\u0CB0\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" },
@@ -9782,7 +9835,7 @@ function kn_default() {
9782
9835
  };
9783
9836
  }
9784
9837
 
9785
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ko.js
9838
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ko.js
9786
9839
  var error32 = () => {
9787
9840
  const Sizable = {
9788
9841
  string: { unit: "\uBB38\uC790", verb: "to have" },
@@ -9899,7 +9952,7 @@ function ko_default() {
9899
9952
  };
9900
9953
  }
9901
9954
 
9902
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/lt.js
9955
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/lt.js
9903
9956
  var capitalizeFirstCharacter = (text) => {
9904
9957
  return text.charAt(0).toUpperCase() + text.slice(1);
9905
9958
  };
@@ -10107,7 +10160,7 @@ function lt_default() {
10107
10160
  };
10108
10161
  }
10109
10162
 
10110
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/mk.js
10163
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/mk.js
10111
10164
  var error34 = () => {
10112
10165
  const Sizable = {
10113
10166
  string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" },
@@ -10222,7 +10275,7 @@ function mk_default() {
10222
10275
  };
10223
10276
  }
10224
10277
 
10225
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ms.js
10278
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ms.js
10226
10279
  var error35 = () => {
10227
10280
  const Sizable = {
10228
10281
  string: { unit: "aksara", verb: "mempunyai" },
@@ -10335,7 +10388,7 @@ function ms_default() {
10335
10388
  };
10336
10389
  }
10337
10390
 
10338
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ne.js
10391
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ne.js
10339
10392
  var error36 = () => {
10340
10393
  const Sizable = {
10341
10394
  string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" },
@@ -10447,7 +10500,7 @@ function ne_default() {
10447
10500
  };
10448
10501
  }
10449
10502
 
10450
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nl.js
10503
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/nl.js
10451
10504
  var error37 = () => {
10452
10505
  const Sizable = {
10453
10506
  string: { unit: "tekens", verb: "heeft" },
@@ -10563,7 +10616,7 @@ function nl_default() {
10563
10616
  };
10564
10617
  }
10565
10618
 
10566
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nn.js
10619
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/nn.js
10567
10620
  var error38 = () => {
10568
10621
  const Sizable = {
10569
10622
  string: { unit: "teikn", verb: "\xE5 ha" },
@@ -10677,7 +10730,7 @@ function nn_default() {
10677
10730
  };
10678
10731
  }
10679
10732
 
10680
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/no.js
10733
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/no.js
10681
10734
  var error39 = () => {
10682
10735
  const Sizable = {
10683
10736
  string: { unit: "tegn", verb: "\xE5 ha" },
@@ -10791,7 +10844,7 @@ function no_default() {
10791
10844
  };
10792
10845
  }
10793
10846
 
10794
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ota.js
10847
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ota.js
10795
10848
  var error40 = () => {
10796
10849
  const Sizable = {
10797
10850
  string: { unit: "harf", verb: "olmal\u0131d\u0131r" },
@@ -10906,7 +10959,7 @@ function ota_default() {
10906
10959
  };
10907
10960
  }
10908
10961
 
10909
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ps.js
10962
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ps.js
10910
10963
  var error41 = () => {
10911
10964
  const Sizable = {
10912
10965
  string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" },
@@ -11026,7 +11079,7 @@ function ps_default() {
11026
11079
  };
11027
11080
  }
11028
11081
 
11029
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pl.js
11082
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pl.js
11030
11083
  var error42 = () => {
11031
11084
  const Sizable = {
11032
11085
  string: { unit: "znak\xF3w", verb: "mie\u0107" },
@@ -11141,7 +11194,7 @@ function pl_default() {
11141
11194
  };
11142
11195
  }
11143
11196
 
11144
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt.js
11197
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pt.js
11145
11198
  var error43 = () => {
11146
11199
  const Sizable = {
11147
11200
  string: { unit: "caracteres" },
@@ -11285,7 +11338,7 @@ function pt_default() {
11285
11338
  };
11286
11339
  }
11287
11340
 
11288
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt-BR.js
11341
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/pt-BR.js
11289
11342
  var error44 = () => {
11290
11343
  const Sizable = {
11291
11344
  string: { unit: "caracteres" },
@@ -11430,7 +11483,7 @@ function pt_BR_default() {
11430
11483
  };
11431
11484
  }
11432
11485
 
11433
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ro.js
11486
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ro.js
11434
11487
  var error45 = () => {
11435
11488
  const Sizable = {
11436
11489
  string: { unit: "caractere", verb: "s\u0103 aib\u0103" },
@@ -11553,7 +11606,7 @@ function ro_default() {
11553
11606
  };
11554
11607
  }
11555
11608
 
11556
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ru.js
11609
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ru.js
11557
11610
  function getRussianPlural(count, one, few, many) {
11558
11611
  const absCount = Math.abs(count);
11559
11612
  const lastDigit = absCount % 10;
@@ -11722,7 +11775,7 @@ function ru_default() {
11722
11775
  };
11723
11776
  }
11724
11777
 
11725
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sk.js
11778
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sk.js
11726
11779
  var error47 = () => {
11727
11780
  const Sizable = {
11728
11781
  string: { unit: "znakov", verb: "ma\u0165" },
@@ -11839,7 +11892,7 @@ function sk_default() {
11839
11892
  };
11840
11893
  }
11841
11894
 
11842
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sl.js
11895
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sl.js
11843
11896
  var error48 = () => {
11844
11897
  const Sizable = {
11845
11898
  string: { unit: "znakov", verb: "imeti" },
@@ -11954,7 +12007,7 @@ function sl_default() {
11954
12007
  };
11955
12008
  }
11956
12009
 
11957
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sv.js
12010
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/sv.js
11958
12011
  var error49 = () => {
11959
12012
  const Sizable = {
11960
12013
  string: { unit: "tecken", verb: "att ha" },
@@ -12070,7 +12123,7 @@ function sv_default() {
12070
12123
  };
12071
12124
  }
12072
12125
 
12073
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ta.js
12126
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ta.js
12074
12127
  var error50 = () => {
12075
12128
  const Sizable = {
12076
12129
  string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" },
@@ -12186,7 +12239,7 @@ function ta_default() {
12186
12239
  };
12187
12240
  }
12188
12241
 
12189
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tg.js
12242
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tg.js
12190
12243
  var error51 = () => {
12191
12244
  const Sizable = {
12192
12245
  string: { unit: "\u0430\u043B\u043E\u043C\u0430\u0442", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" },
@@ -12303,7 +12356,7 @@ function tg_default() {
12303
12356
  };
12304
12357
  }
12305
12358
 
12306
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/th.js
12359
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/th.js
12307
12360
  var error52 = () => {
12308
12361
  const Sizable = {
12309
12362
  string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" },
@@ -12419,7 +12472,7 @@ function th_default() {
12419
12472
  };
12420
12473
  }
12421
12474
 
12422
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tk.js
12475
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tk.js
12423
12476
  var error53 = () => {
12424
12477
  const Sizable = {
12425
12478
  string: { unit: "simwol", verb: "bolmaly" },
@@ -12527,7 +12580,7 @@ function tk_default() {
12527
12580
  };
12528
12581
  }
12529
12582
 
12530
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tr.js
12583
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/tr.js
12531
12584
  var error54 = () => {
12532
12585
  const Sizable = {
12533
12586
  string: { unit: "karakter", verb: "olmal\u0131" },
@@ -12638,7 +12691,7 @@ function tr_default() {
12638
12691
  };
12639
12692
  }
12640
12693
 
12641
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uk.js
12694
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/uk.js
12642
12695
  var error55 = () => {
12643
12696
  const Sizable = {
12644
12697
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" },
@@ -12752,12 +12805,12 @@ function uk_default() {
12752
12805
  };
12753
12806
  }
12754
12807
 
12755
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ua.js
12808
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ua.js
12756
12809
  function ua_default() {
12757
12810
  return uk_default();
12758
12811
  }
12759
12812
 
12760
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ur.js
12813
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/ur.js
12761
12814
  var error56 = () => {
12762
12815
  const Sizable = {
12763
12816
  string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" },
@@ -12873,7 +12926,7 @@ function ur_default() {
12873
12926
  };
12874
12927
  }
12875
12928
 
12876
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uz.js
12929
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/uz.js
12877
12930
  var error57 = () => {
12878
12931
  const Sizable = {
12879
12932
  string: { unit: "belgi", verb: "bo\u2018lishi kerak" },
@@ -12987,7 +13040,7 @@ function uz_default() {
12987
13040
  };
12988
13041
  }
12989
13042
 
12990
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/vi.js
13043
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/vi.js
12991
13044
  var error58 = () => {
12992
13045
  const Sizable = {
12993
13046
  string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" },
@@ -13101,7 +13154,7 @@ function vi_default() {
13101
13154
  };
13102
13155
  }
13103
13156
 
13104
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-CN.js
13157
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/zh-CN.js
13105
13158
  var error59 = () => {
13106
13159
  const Sizable = {
13107
13160
  string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" },
@@ -13216,7 +13269,7 @@ function zh_CN_default() {
13216
13269
  };
13217
13270
  }
13218
13271
 
13219
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-TW.js
13272
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/zh-TW.js
13220
13273
  var error60 = () => {
13221
13274
  const Sizable = {
13222
13275
  string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" },
@@ -13329,7 +13382,7 @@ function zh_TW_default() {
13329
13382
  };
13330
13383
  }
13331
13384
 
13332
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/yo.js
13385
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/locales/yo.js
13333
13386
  var error61 = () => {
13334
13387
  const Sizable = {
13335
13388
  string: { unit: "\xE0mi", verb: "n\xED" },
@@ -13442,7 +13495,7 @@ function yo_default() {
13442
13495
  };
13443
13496
  }
13444
13497
 
13445
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/registries.js
13498
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/registries.js
13446
13499
  var _a2;
13447
13500
  var $output = /* @__PURE__ */ Symbol("ZodOutput");
13448
13501
  var $input = /* @__PURE__ */ Symbol("ZodInput");
@@ -13492,7 +13545,7 @@ function registry() {
13492
13545
  (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry());
13493
13546
  var globalRegistry = globalThis.__zod_globalRegistry;
13494
13547
 
13495
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/compile.js
13548
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/compile.js
13496
13549
  var INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid");
13497
13550
  var FALLBACK_FLAG = /* @__PURE__ */ Symbol.for("zod.compile.fallback");
13498
13551
  var ZodCompileAsyncError = class extends Error {
@@ -14532,9 +14585,15 @@ function generateNullableCheck(doc, ctx, schema, accessor, buildsValue = true) {
14532
14585
  doc.write(`}`);
14533
14586
  return outputVar;
14534
14587
  }
14588
+ function generateSizeGate(doc, schema, size) {
14589
+ for (const [max, check2] of sizeCaps(schema._zod.def.checks)) {
14590
+ doc.write(`if (${size} > ${numericOperand(max, check2._zod.def.check)}) return INVALID;`);
14591
+ }
14592
+ }
14535
14593
  function generateArrayCheck(doc, ctx, schema, accessor, buildsValue = true) {
14536
14594
  const def = schema._zod.def;
14537
14595
  doc.write(`if (!Array.isArray(${accessor})) return INVALID;`);
14596
+ generateSizeGate(doc, schema, `${accessor}.length`);
14538
14597
  const outputVar = buildsValue ? newVar(ctx) : null;
14539
14598
  const iVar = newVar(ctx);
14540
14599
  const elemVar = newVar(ctx);
@@ -14934,6 +14993,7 @@ function literalPropertyKey(ctx, key) {
14934
14993
  function generateMapCheck(doc, ctx, schema, accessor) {
14935
14994
  const def = schema._zod.def;
14936
14995
  doc.write(`if (!(${accessor} instanceof Map)) return INVALID;`);
14996
+ generateSizeGate(doc, schema, `${accessor}.size`);
14937
14997
  const outputVar = newVar(ctx);
14938
14998
  const kVar = newVar(ctx);
14939
14999
  const valVar = newVar(ctx);
@@ -14950,6 +15010,7 @@ function generateMapCheck(doc, ctx, schema, accessor) {
14950
15010
  function generateSetCheck(doc, ctx, schema, accessor) {
14951
15011
  const def = schema._zod.def;
14952
15012
  doc.write(`if (!(${accessor} instanceof Set)) return INVALID;`);
15013
+ generateSizeGate(doc, schema, `${accessor}.size`);
14953
15014
  const outputVar = newVar(ctx);
14954
15015
  const valVar = newVar(ctx);
14955
15016
  doc.write(`const ${outputVar} = new Set();`);
@@ -15094,7 +15155,7 @@ function generateTransformCheck(doc, ctx, schema, accessor) {
15094
15155
  return accessor;
15095
15156
  }
15096
15157
 
15097
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/api.js
15158
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/api.js
15098
15159
  function snapshotChecks(def) {
15099
15160
  if (def.checks)
15100
15161
  def.checks = [...def.checks];
@@ -16153,7 +16214,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
16153
16214
  return inst;
16154
16215
  }
16155
16216
 
16156
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
16217
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js
16157
16218
  function assignProps(target, ...sources) {
16158
16219
  for (const source of sources) {
16159
16220
  for (const key of Reflect.ownKeys(source)) {
@@ -16683,7 +16744,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
16683
16744
  return finalize(ctx, schema);
16684
16745
  };
16685
16746
 
16686
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.js
16747
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js
16687
16748
  var narrowMin = (agg, key, value) => {
16688
16749
  if (agg[key] === void 0 || value > agg[key])
16689
16750
  agg[key] = value;
@@ -17431,7 +17492,7 @@ function toJSONSchema(input2, params) {
17431
17492
  return finalize(ctx, input2);
17432
17493
  }
17433
17494
 
17434
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-generator.js
17495
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema-generator.js
17435
17496
  var JSONSchemaGenerator = class {
17436
17497
  /** @deprecated Access via ctx instead */
17437
17498
  get metadataRegistry() {
@@ -17509,10 +17570,10 @@ var JSONSchemaGenerator = class {
17509
17570
  }
17510
17571
  };
17511
17572
 
17512
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema.js
17573
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/json-schema.js
17513
17574
  var json_schema_exports = {};
17514
17575
 
17515
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
17576
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
17516
17577
  var schemas_exports2 = {};
17517
17578
  __export(schemas_exports2, {
17518
17579
  ZodAny: () => ZodAny,
@@ -17693,7 +17754,7 @@ __export(schemas_exports2, {
17693
17754
  xor: () => xor
17694
17755
  });
17695
17756
 
17696
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/checks.js
17757
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/checks.js
17697
17758
  var checks_exports2 = {};
17698
17759
  __export(checks_exports2, {
17699
17760
  endsWith: () => _endsWith,
@@ -17728,7 +17789,7 @@ __export(checks_exports2, {
17728
17789
  uppercase: () => _uppercase
17729
17790
  });
17730
17791
 
17731
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/errors.js
17792
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/errors.js
17732
17793
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
17733
17794
  function _lazyMethod(proto, key, make) {
17734
17795
  Object.defineProperty(proto, key, {
@@ -17774,7 +17835,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, void 0
17774
17835
  Parent: Error
17775
17836
  });
17776
17837
 
17777
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/parse.js
17838
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/parse.js
17778
17839
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
17779
17840
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
17780
17841
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -17788,7 +17849,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
17788
17849
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
17789
17850
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
17790
17851
 
17791
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
17852
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
17792
17853
  function _ensureDefaultLocale() {
17793
17854
  if (!globalConfig.localeError)
17794
17855
  config(en_default());
@@ -19253,7 +19314,7 @@ function preprocess(fn, schema) {
19253
19314
  });
19254
19315
  }
19255
19316
 
19256
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/compat.js
19317
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/compat.js
19257
19318
  var ZodIssueCode = {
19258
19319
  invalid_type: "invalid_type",
19259
19320
  too_big: "too_big",
@@ -19279,7 +19340,7 @@ var ZodFirstPartyTypeKind;
19279
19340
  /* @__PURE__ */ (function(ZodFirstPartyTypeKind2) {
19280
19341
  })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
19281
19342
 
19282
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/iso.js
19343
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/iso.js
19283
19344
  var iso_exports = {};
19284
19345
  __export(iso_exports, {
19285
19346
  ZodISODate: () => ZodISODate,
@@ -19304,7 +19365,7 @@ function duration2(params) {
19304
19365
  return _isoDuration(ZodISODuration, params);
19305
19366
  }
19306
19367
 
19307
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/from-json-schema.js
19368
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/from-json-schema.js
19308
19369
  var z = {
19309
19370
  ...schemas_exports2,
19310
19371
  ...checks_exports2,
@@ -20037,7 +20098,7 @@ function fromJSONSchema(schema, params) {
20037
20098
  return convertSchema(normalized, ctx);
20038
20099
  }
20039
20100
 
20040
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/visit.js
20101
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/core/visit.js
20041
20102
  var RESOLVING = /* @__PURE__ */ Symbol("z.visit/resolving");
20042
20103
  function visit(schema, fnOrHandlers) {
20043
20104
  const fn = typeof fnOrHandlers === "function" ? fnOrHandlers : (node2, rewritten) => {
@@ -20192,7 +20253,7 @@ function visit(schema, fnOrHandlers) {
20192
20253
  return run(schema);
20193
20254
  }
20194
20255
 
20195
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/deep-partial.js
20256
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/deep-partial.js
20196
20257
  function deepPartial(schema) {
20197
20258
  return visit(schema, {
20198
20259
  object: (s) => s.partial(),
@@ -20204,7 +20265,7 @@ function deepPartial(schema) {
20204
20265
  });
20205
20266
  }
20206
20267
 
20207
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/in-out.js
20268
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/in-out.js
20208
20269
  function withChecks(side, checks) {
20209
20270
  if (!checks?.length)
20210
20271
  return side;
@@ -20234,7 +20295,7 @@ function output(schema) {
20234
20295
  });
20235
20296
  }
20236
20297
 
20237
- // ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.js
20298
+ // ../../node_modules/.pnpm/zod@4.6.7/node_modules/zod/v4/classic/coerce.js
20238
20299
  var coerce_exports = {};
20239
20300
  __export(coerce_exports, {
20240
20301
  bigint: () => bigint3,
@@ -20725,11 +20786,15 @@ var credentialExpiryWarningSchema = external_exports.object({
20725
20786
 
20726
20787
  // ../../packages/mcp-contracts/dist/whoami.js
20727
20788
  var mcpConnectionHostSchema = external_exports.enum(["sandbox", "live"]);
20789
+ var EMBEDDED_EMAIL_ADDRESS_PATTERN = /[^\s@]+@[^\s@]+\.[^\s@]+/;
20790
+ var MCP_ACCOUNT_NAME_MAX_LENGTH = 255;
20791
+ var mcpAccountNameSchema = external_exports.string().min(1).max(MCP_ACCOUNT_NAME_MAX_LENGTH).refine((value) => value.length <= MCP_ACCOUNT_NAME_MAX_LENGTH && !EMBEDDED_EMAIL_ADDRESS_PATTERN.test(value), { message: "An account name must not contain an email address" });
20728
20792
  var mcpConnectionProofSchema = external_exports.object({
20729
20793
  userId: external_exports.uuid(),
20730
20794
  scopes: external_exports.array(external_exports.string()).nullable(),
20731
20795
  host: mcpConnectionHostSchema.describe(`The class of MCP URL this client is connected to: "live" for the main MCP URL, "sandbox" for the sandbox-only MCP URL. Not the environment (dev, stage or prod) and not a merchant's deployment.`),
20732
20796
  endpoint: external_exports.url(),
20797
+ accountName: mcpAccountNameSchema.nullable().describe("The business name of the account you are connected to, never an email address. Quote it with host (live or sandbox) and ask the developer to confirm it is their business; null when the account has no business yet."),
20733
20798
  merchantIds: external_exports.array(external_exports.uuid()).describe("Ids of the merchants this credential is a member of, as returned when the credential was validated. Call get_my_merchant for names and per-deployment state; on the main MCP URL a merchant that exists on sandbox only is listed there, not here."),
20734
20799
  credentialExpiresAt: external_exports.iso.datetime().nullable().describe("When this MCP credential stops working (ISO 8601, UTC); null when unknown."),
20735
20800
  credentialExpiresInSeconds: external_exports.number().int().nonnegative().nullable().describe("Seconds of validity left on this MCP credential; null when the expiry is unknown."),
@@ -25502,7 +25567,7 @@ var TRANSACTION_SCOPE_RULE = 'Requires the "transaction:read" scope, which exist
25502
25567
  var LIST_TRANSACTIONS_SUMMARY = `List a merchant's transactions, newest first, narrowed by the optional filters in the input schema. For the full lookup guide, call search_payments_ai_docs with "transaction lookup".`;
25503
25568
  var GET_TRANSACTION_DETAIL = "Get one transaction by transactionId from list_transactions: the same fields plus the refunded amount and the order's line items. items is empty for a single-plan purchase, where plan names what was bought.";
25504
25569
  var TOOL_DESCRIPTIONS = {
25505
- [MCP_TOOL_NAMES.WHOAMI]: `Prove which account and which MCP server this connection reaches. Takes no arguments. Returns { userId, scopes, host, endpoint, merchantIds, credentialExpiresAt, credentialExpiresInSeconds, credentialExpiryWarning? }, read from the validated token and the server that answered. "scopes" null means the token holds every scope except "transaction:read", which must be granted by name. "host" is the class of MCP URL this client is connected to: "live" for the main MCP URL, which serves every merchant at its own deployment, or "sandbox" for the sandbox-only MCP URL. It is not the environment (dev, stage or prod) and not a merchant's deployment: on a "live" host a merchant that has not gone live still reports deployment "sandbox" in get_my_merchant, which is expected. To prove the connection, quote userId, host and endpoint from this result rather than the client's connected label. "merchantIds" are the merchants this credential is a member of; credentialExpiresAt and credentialExpiresInSeconds say when it stops working (null when unknown). credentialExpiryWarning is present only when the credential expires within ` + CREDENTIAL_EXPIRY_WARNING_WINDOW_DAYS + " days: tell the user and share its reapproveUrl, and expect the same warning appended to every other tool result until they re-approve. Needs no scope: any valid token can call it. Call get_my_merchant next to find the merchants this connection owns.",
25570
+ [MCP_TOOL_NAMES.WHOAMI]: `Prove which account and which MCP server this connection reaches. Takes no arguments. Returns { userId, scopes, host, endpoint, accountName, merchantIds, credentialExpiresAt, credentialExpiresInSeconds, credentialExpiryWarning? }, read from the validated token and the server that answered. "scopes" null means the token holds every scope except "transaction:read", which must be granted by name. "host" is the class of MCP URL this client is connected to: "live" for the main MCP URL, which serves every merchant at its own deployment, or "sandbox" for the sandbox-only MCP URL. It is not the environment (dev, stage or prod) and not a merchant's deployment: on a "live" host a merchant that has not gone live still reports deployment "sandbox" in get_my_merchant, which is expected. To prove the connection, quote userId, host and endpoint from this result rather than the client's connected label. "accountName" is the business name of the account you are connected to, never an email address: quote it with host (live or sandbox) and ask the developer to confirm it is their business; when it is null, the account has no business yet, so say so and quote userId. "merchantIds" are the merchants this credential is a member of; credentialExpiresAt and credentialExpiresInSeconds say when it stops working (null when unknown). credentialExpiryWarning is present only when the credential expires within ` + CREDENTIAL_EXPIRY_WARNING_WINDOW_DAYS + " days: tell the user and share its reapproveUrl, and expect the same warning appended to every other tool result until they re-approve. Needs no scope: any valid token can call it. Call get_my_merchant next to find the merchants this connection owns.",
25506
25571
  [MCP_TOOL_NAMES.GET_MY_MERCHANT]: 'List the merchant accounts this connection already owns. Call this BEFORE create_merchant_account: a new agent session cannot remember a merchant created in an earlier one, and creating again produces a second merchant with its own products and its own checkout links. Takes no arguments \u2014 the merchants come from the authorization on the connection itself. Returns { merchants: [{ merchantId, name, deployment }] }. "deployment" is "sandbox" before go_live and "live" after it has succeeded, and it matches where create_product and list_products will route for that merchant right now. An empty merchants array is a normal result, not an error: this connection owns no merchant yet, so call create_merchant_account. When more than one merchant comes back, ask which one to use \u2014 do not pick for the user. Requires the "merchant:read" scope.',
25507
25572
  [MCP_TOOL_NAMES.CREATE_MERCHANT_ACCOUNT]: "Create a merchant account on PAI Managed. Call get_my_merchant first: if it returns a merchant, reuse that merchantId instead of creating another, because a duplicate merchant gets its own products and checkout links. " + CREATE_MERCHANT_CONTACT_GUIDANCE + " The business name is a display label and is not globally unique \u2014 every downstream tool (create_product, list_products, checkout) keys on merchantId, so if two merchants happen to share a name, disambiguate them by merchantId (do not pick a distinct name here to work around it). No identity verification (KYC/KYB) is needed to use sandbox \u2014 products, checkout links and test transactions all work without it; verification is required on live. " + IDENTITY_VERIFICATION_RULE + " Dual-provisions live and sandbox with a shared merchantId. On partial dual-provision failure (one backend created it, the other did not), retry without a merchantId to finish it. When both backends fail, the returned error names the appropriate recovery \u2014 follow it as-is rather than repeating the same call in a loop, and treat repeated identical failures as needing escalation to support. Returns that merchant ID. Without a merchantId, a merchant this account already owns is returned with existing: true instead of a new one being created, and whichever of live or sandbox is missing it gets a copy with the details the existing copy holds; a merchantId this account already owns is finished the same way, and the copy that exists is never changed. Next: create_product (and checkout tools) on sandbox, then go_live when ready.",
25508
25573
  [MCP_TOOL_NAMES.GET_MERCHANT_ACTIVATION_STATUS]: 'Get the production activation status of a merchant account on PAI Managed. Returns { status, identityVerification }. status "pending": the merchant has not been promoted to live yet; this is the only status where go_live is the next step, once the user confirms the merchant is ready, and polling this tool will not change it on its own. status "verification_pending": the merchant is promoted to live and identity verification (KYC) is not complete yet; do not call go_live again. status "active": live and identity verified. status "not_provisioned": no live merchant record exists (dual provision never finished on live); recovery: re-run create_merchant_account without a merchantId, which finds this merchant and creates the missing live copy with the details the sandbox copy holds \u2014 go_live cannot fix this and fails while the live twin is missing. ' + IDENTITY_VERIFICATION_RULE + ' identityVerification is the KYC state: "not_started", "pending", "in_review", "verified" or "rejected".',
@@ -25614,11 +25679,13 @@ var QUICKSTART_SKILL_SECTIONS = [
25614
25679
  "",
25615
25680
  'Do not trust the client\'s "Connected" label. Call `whoami` and report what it returns. `whoami` takes no arguments and needs no scope: every valid token can call it.',
25616
25681
  "",
25617
- "| Result | Meaning | Tell the developer |",
25618
- "| -------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |",
25619
- "| Success | Connected. | Quote `userId`, `host` (`sandbox` or `live`: the MCP URL connected to, not the merchant deployment) and `endpoint`. `scopes: null` means every scope except `transaction:read`. |",
25620
- "| HTTP 401 | Not connected. | Quote the 401 `message` verbatim (for `code: token_expired` it says where to generate a new token), then show the MCP config above. |",
25621
- "| Any tool error | Connected, but the server could not prove the connection. | Quote the error. Do not say disconnected and do not paste the connect config. |",
25682
+ "| Result | Meaning | Tell the developer |",
25683
+ "| -------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |",
25684
+ "| Success | Connected. | Quote `accountName` (the business name of the account you are connected to, never an email) and ask the developer to confirm it, together with `host` (live or sandbox), is their own business account. Then quote `userId`, `host` (`sandbox` or `live`: the MCP URL connected to, not the merchant deployment) and `endpoint`. `accountName: null` means no label is known: say so. `scopes: null` means every scope except `transaction:read`. |",
25685
+ "| HTTP 401 | Not connected. | Quote the 401 `message` verbatim (for `code: token_expired` it says how to reconnect: re-approve in the client for OAuth, run the device grant again and replace the `Authorization` header if connected that way, or generate a new token if connected with a token), then show the MCP config above. |",
25686
+ "| Any tool error | Connected, but the server could not prove the connection. | Quote the error. Do not say disconnected and do not paste the connect config. |",
25687
+ "",
25688
+ 'If `whoami` returns a `credentialExpiryWarning`, or a tool result carries one under `_meta["ai.payments/credentialExpiryWarning"]` with a closing text block (OAuth connections only, within 14 days of expiry), tell the user and share its re-approve link, which opens the connect page. If you connected with the device grant, run it again and replace the `Authorization` header instead (see "Connect without a terminal"). `credentialExpiresAt` and `credentialExpiresInSeconds` say when the credential stops working; `null` means unknown.',
25622
25689
  "",
25623
25690
  "## Before you mutate anything",
25624
25691
  "",
@@ -25680,26 +25747,26 @@ var QUICKSTART_SKILL_SECTIONS = [
25680
25747
  "",
25681
25748
  "## Tools",
25682
25749
  "",
25683
- "| Tool | Use |",
25684
- "| -------------------------------- | ---------------------------------------------------------------------------- |",
25685
- "| `whoami` | `userId`, `scopes`, `host`, `endpoint`; any valid token |",
25686
- "| `search_payments_ai_docs` | Search developer docs |",
25687
- "| `get_my_merchant` | Owned merchants |",
25688
- "| `create_merchant_account` | Dual-provision live + sandbox merchant |",
25689
- "| `get_merchant_activation_status` | Activation status (see below) |",
25690
- "| `go_live` | Promote to live; a repeat returns current status |",
25691
- "| `create_product` | Product + plans (sandbox until go-live) |",
25692
- "| `create_order` | Multi-item or caller-priced checkout |",
25693
- "| `update_product` | Merge-update a product's name, description or status |",
25694
- "| `update_plan` | Merge-update a plan's name, description, price, billing period or free trial |",
25695
- "| `list_products` | List products, plans, checkout URLs |",
25696
- "| `list_transactions` | Look up transactions (needs `transaction:read`) |",
25697
- "| `get_transaction` | One transaction's details and line items |",
25698
- "| `get_product_image_upload_url` | Presigned POST for product image |",
25699
- "| `confirm_product_image` | Attach uploaded product image |",
25700
- "| `get_checkout_customization` | Read hosted checkout branding |",
25701
- "| `update_checkout_customization` | Merge-update branding |",
25702
- "| `set_checkout_logo` | Mint \u2192 PUT \u2192 confirm checkout logo |",
25750
+ "| Tool | Use |",
25751
+ "| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |",
25752
+ "| `whoami` | `accountName`, `userId`, `scopes`, `host`, `endpoint`, `merchantIds`, `credentialExpiresAt`, `credentialExpiresInSeconds`, `credentialExpiryWarning`; any valid token |",
25753
+ "| `search_payments_ai_docs` | Search developer docs |",
25754
+ "| `get_my_merchant` | Owned merchants |",
25755
+ "| `create_merchant_account` | Dual-provision live + sandbox merchant |",
25756
+ "| `get_merchant_activation_status` | Activation status (see below) |",
25757
+ "| `go_live` | Promote to live; a repeat returns current status |",
25758
+ "| `create_product` | Product + plans (sandbox until go-live) |",
25759
+ "| `create_order` | Multi-item or caller-priced checkout |",
25760
+ "| `update_product` | Merge-update a product's name, description or status |",
25761
+ "| `update_plan` | Merge-update a plan's name, description, price, billing period or free trial |",
25762
+ "| `list_products` | List products, plans, checkout URLs |",
25763
+ "| `list_transactions` | Look up transactions (needs `transaction:read`) |",
25764
+ "| `get_transaction` | One transaction's details and line items |",
25765
+ "| `get_product_image_upload_url` | Presigned POST for product image |",
25766
+ "| `confirm_product_image` | Attach uploaded product image |",
25767
+ "| `get_checkout_customization` | Read hosted checkout branding |",
25768
+ "| `update_checkout_customization` | Merge-update branding |",
25769
+ "| `set_checkout_logo` | Mint \u2192 PUT \u2192 confirm checkout logo |",
25703
25770
  "",
25704
25771
  "### Activation status",
25705
25772
  "",
@@ -26831,6 +26898,7 @@ function buildConnectionProof(input2) {
26831
26898
  scopes: payload.scopes,
26832
26899
  host: host2,
26833
26900
  endpoint,
26901
+ accountName: payload.accountName ?? null,
26834
26902
  merchantIds: payload.merchantIds,
26835
26903
  credentialExpiresAt: credentialExpiry.credentialExpiresAt,
26836
26904
  credentialExpiresInSeconds: credentialExpiry.credentialExpiresInSeconds,
@@ -28247,18 +28315,20 @@ function parseMcpTokenPayload(parsed) {
28247
28315
  if (typeof parsed !== "object" || parsed === null) {
28248
28316
  return void 0;
28249
28317
  }
28250
- const { userId, cognitoSub, merchantIds, scopes, expiresAt, oauthIssued } = parsed;
28318
+ const { userId, cognitoSub, merchantIds, scopes, expiresAt, oauthIssued, accountName } = parsed;
28251
28319
  if (typeof userId !== "string" || typeof cognitoSub !== "string" || !isStringArray(merchantIds)) {
28252
28320
  return void 0;
28253
28321
  }
28254
28322
  const expiry = parseExpiresAt(expiresAt);
28323
+ const label = mcpAccountNameSchema.safeParse(accountName);
28255
28324
  return {
28256
28325
  userId,
28257
28326
  cognitoSub,
28258
28327
  merchantIds,
28259
28328
  scopes: Array.isArray(scopes) ? scopes : null,
28260
28329
  oauthIssued: oauthIssued === true,
28261
- ...expiry === void 0 ? {} : { expiresAt: expiry }
28330
+ ...expiry === void 0 ? {} : { expiresAt: expiry },
28331
+ ...label.success ? { accountName: label.data } : {}
28262
28332
  };
28263
28333
  }
28264
28334
  function parseExpiresAt(value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payments-ai/mcp",
3
- "version": "2.6.0",
3
+ "version": "2.7.1",
4
4
  "private": false,
5
5
  "description": "MCP for Payments AI",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  "dotenv": "17.3.1",
30
30
  "express": "5.2.1",
31
31
  "uuid": "14.0.2",
32
- "zod": "4.6.5"
32
+ "zod": "4.6.7"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@modelcontextprotocol/client": "2.3.1",