revclamp-mcp 1.20.11 → 1.20.13

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
@@ -59,13 +59,13 @@ curl -sS -X POST https://api.revclamp.com/api/mcp \
59
59
 
60
60
  ```bash
61
61
  # Run a <60s local CLI smoke check (verifies all 9 tool schemas & executes a local_engine.mjs sample audit with zero API key)
62
- npx -y github:lhphong09t2/revclamp-mcp#v1.20.11 --self-test
62
+ npx -y github:lhphong09t2/revclamp-mcp#v1.20.13 --self-test
63
63
 
64
64
  # Provision a free Cloud Workspace (or reuse REVCLAMP_API_KEY) & send a 6-digit login OTP
65
- npx -y revclamp-mcp@1.20.11 --init-workspace you@company.com
65
+ npx -y revclamp-mcp@1.20.13 --init-workspace you@company.com
66
66
 
67
67
  # Verify the 6-digit OTP using REVCLAMP_API_KEY from environment
68
- REVCLAMP_API_KEY="rg_live_..." npx -y revclamp-mcp@1.20.11 --verify-otp you@company.com 123456
68
+ REVCLAMP_API_KEY="rg_live_..." npx -y revclamp-mcp@1.20.13 --verify-otp you@company.com 123456
69
69
 
70
70
  # List all 9 MCP tools and JSON schemas (runs locally in-process)
71
71
  node index.mjs --list-tools
package/index.mjs CHANGED
@@ -33,7 +33,7 @@ export {
33
33
  executeLocalMcpJsonRpc,
34
34
  };
35
35
 
36
- export const PACKAGE_VERSION = "1.20.11";
36
+ export const PACKAGE_VERSION = "1.20.13";
37
37
  export const DEFAULT_MCP_ENDPOINT = "https://api.revclamp.com/api/mcp";
38
38
  export const ALLOWED_MCP_ORIGINS = Object.freeze(
39
39
  new Set([
package/local_engine.mjs CHANGED
@@ -58,6 +58,24 @@ const LOCAL_MCP_TOOL_ARG_ALIAS_GROUPS = Object.freeze({
58
58
  aliases: Object.freeze(["windowSec", "dedupWindowSec"]),
59
59
  }),
60
60
  ]),
61
+ revclamp_validate_eu_vat_vies: Object.freeze([
62
+ Object.freeze({
63
+ canonical: "sellerCountry",
64
+ aliases: Object.freeze(["sellerCountryCode", "seller_country", "seller_country_code"]),
65
+ }),
66
+ Object.freeze({
67
+ canonical: "buyerVatId",
68
+ aliases: Object.freeze(["vatId", "buyer_vat_id"]),
69
+ }),
70
+ Object.freeze({
71
+ canonical: "viesMode",
72
+ aliases: Object.freeze(["vies_mode"]),
73
+ }),
74
+ Object.freeze({
75
+ canonical: "supplyType",
76
+ aliases: Object.freeze(["supply_type"]),
77
+ }),
78
+ ]),
61
79
  });
62
80
 
63
81
  export function normalizeMcpToolArgs(toolName, rawArgs) {
@@ -210,6 +228,384 @@ const EU_VIES_FORMAT_RULES = Object.freeze({
210
228
  XI: /^XI(?:\d{9}|\d{12}|(?:GD|HA)\d{3})$/,
211
229
  });
212
230
 
231
+ export const EU_VIES_STATUTORY_TERMINOLOGY_MAP = Object.freeze({
232
+ AT: Object.freeze({
233
+ memberState: "AT",
234
+ countryNameEn: "Austria",
235
+ nativeCountryName: "Österreich",
236
+ taxIdAcronym: "UID",
237
+ nativeTaxIdName: "Umsatzsteuer-Identifikationsnummer",
238
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
239
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
240
+ statutoryReverseChargeClause:
241
+ "Steuerschuldnerschaft des Leistungsempfängers – Art. 196 & Art. 226 Nr. 11a MwStSystRL (Directive 2006/112/EC, § 19 UStG) / Reverse charge (B2B services)",
242
+ statutoryGoodsExemptionClause:
243
+ "Steuerfreie innergemeinschaftliche Lieferung – Art. 138 Abs. 1 & Art. 226 Nr. 11 MwStSystRL (Directive 2006/112/EC, Art. 6 Abs. 1 UStG) / Intra-Community exempt supply of goods",
244
+ }),
245
+ BE: Object.freeze({
246
+ memberState: "BE",
247
+ countryNameEn: "Belgium",
248
+ nativeCountryName: "België / Belgique",
249
+ taxIdAcronym: "N° TVA / BTW-nr.",
250
+ nativeTaxIdName: "Numéro de TVA / Btw-identificatienummer",
251
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
252
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
253
+ statutoryReverseChargeClause:
254
+ "Autoliquidation / Btw verlegd – Art. 196 & Art. 226(11a) Directive 2006/112/EC / Reverse charge (B2B services)",
255
+ statutoryGoodsExemptionClause:
256
+ "Livraison intracommunautaire exonérée / Vrijgestelde intracommunautaire levering – Art. 138(1) & Art. 226(11) Directive 2006/112/EC (Art. 39bis CTVA/WBTW) / Intra-Community exempt supply of goods",
257
+ }),
258
+ BG: Object.freeze({
259
+ memberState: "BG",
260
+ countryNameEn: "Bulgaria",
261
+ nativeCountryName: "България",
262
+ taxIdAcronym: "ДДС номер",
263
+ nativeTaxIdName: "Идентификационен номер по ДДС (ЗДДС)",
264
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
265
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
266
+ statutoryReverseChargeClause:
267
+ "Обратно начисляване – чл. 196 и чл. 226, т. 11а от Директива 2006/112/ЕО (чл. 82, ал. 2 ЗДДС) / Reverse charge (B2B services)",
268
+ statutoryGoodsExemptionClause:
269
+ "Освободена вътреобщностна доставка на стоки – чл. 138, пар. 1 и чл. 226, т. 11 от Директива 2006/112/ЕО (чл. 7 и чл. 53 ЗДДС) / Intra-Community exempt supply of goods",
270
+ }),
271
+ CY: Object.freeze({
272
+ memberState: "CY",
273
+ countryNameEn: "Cyprus",
274
+ nativeCountryName: "Κύπρος",
275
+ taxIdAcronym: "ΑΦΜ / ΦΠΑ",
276
+ nativeTaxIdName: "Αριθμός Εγγραφής ΦΠΑ",
277
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
278
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
279
+ statutoryReverseChargeClause:
280
+ "Αντίστροφη επιβάρυνση – Άρθρα 196 & 226(11α) Οδηγίας 2006/112/ΕΚ / Reverse charge (B2B services)",
281
+ statutoryGoodsExemptionClause:
282
+ "Απαλλασσόμενη ενδοκοινοτική παράδοση αγαθών – Άρθρα 138(1) & 226(11) Οδηγίας 2006/112/ΕΚ / Intra-Community exempt supply of goods",
283
+ }),
284
+ CZ: Object.freeze({
285
+ memberState: "CZ",
286
+ countryNameEn: "Czechia",
287
+ nativeCountryName: "Česká republika",
288
+ taxIdAcronym: "DIČ",
289
+ nativeTaxIdName: "Daňové identifikační číslo",
290
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
291
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
292
+ statutoryReverseChargeClause:
293
+ "Daň odvede zákazník – čl. 196 a čl. 226 bod 11a směrnice 2006/112/ES / Reverse charge (B2B services)",
294
+ statutoryGoodsExemptionClause:
295
+ "Osvobozené dodání zboží do jiného členského státu – čl. 138 odst. 1 a čl. 226 bod 11 směrnice 2006/112/ES (§ 64 ZDPH) / Intra-Community exempt supply of goods",
296
+ }),
297
+ DE: Object.freeze({
298
+ memberState: "DE",
299
+ countryNameEn: "Germany",
300
+ nativeCountryName: "Deutschland",
301
+ taxIdAcronym: "USt-IdNr.",
302
+ nativeTaxIdName: "Umsatzsteuer-Identifikationsnummer",
303
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
304
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
305
+ statutoryReverseChargeClause:
306
+ "Steuerschuldnerschaft des Leistungsempfängers – Art. 196 & Art. 226 Nr. 11a MwStSystRL (Directive 2006/112/EC, § 13b UStG) / Reverse charge (B2B services)",
307
+ statutoryGoodsExemptionClause:
308
+ "Steuerfreie innergemeinschaftliche Lieferung – Art. 138 Abs. 1 & Art. 226 Nr. 11 MwStSystRL (Directive 2006/112/EC, § 4 Nr. 1b i.V.m. § 6a UStG) / Intra-Community exempt supply of goods",
309
+ }),
310
+ DK: Object.freeze({
311
+ memberState: "DK",
312
+ countryNameEn: "Denmark",
313
+ nativeCountryName: "Danmark",
314
+ taxIdAcronym: "CVR / SE-nr.",
315
+ nativeTaxIdName: "Momsregistreringsnummer (CVR/SE)",
316
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
317
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
318
+ statutoryReverseChargeClause:
319
+ "Omvendt betalingspligt – Art. 196 & Art. 226, nr. 11a, i direktiv 2006/112/EF / Reverse charge (B2B services)",
320
+ statutoryGoodsExemptionClause:
321
+ "Momsfri EU-vareleverance – Art. 138, stk. 1, og Art. 226, nr. 11, i direktiv 2006/112/EF (ML § 34, stk. 1, nr. 1) / Intra-Community exempt supply of goods",
322
+ }),
323
+ EE: Object.freeze({
324
+ memberState: "EE",
325
+ countryNameEn: "Estonia",
326
+ nativeCountryName: "Eesti",
327
+ taxIdAcronym: "KMKR",
328
+ nativeTaxIdName: "Käibemaksukohustuslase registreerimisnumber",
329
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
330
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
331
+ statutoryReverseChargeClause:
332
+ "Pöördmaksustamine – direktiivi 2006/112/EÜ art 196 ja art 226 p 11a / Reverse charge (B2B services)",
333
+ statutoryGoodsExemptionClause:
334
+ "Ühendusesisene kauba käive (0% KM) – direktiivi 2006/112/EÜ art 138 lg 1 ja art 226 p 11 (KMS § 15 lg 3 p 2) / Intra-Community exempt supply of goods",
335
+ }),
336
+ EL: Object.freeze({
337
+ memberState: "EL",
338
+ countryNameEn: "Greece",
339
+ nativeCountryName: "Ελλάδα",
340
+ taxIdAcronym: "ΑΦΜ",
341
+ nativeTaxIdName: "Αριθμός Φορολογικού Μητρώου (ΦΠΑ)",
342
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
343
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
344
+ statutoryReverseChargeClause:
345
+ "Αντίστροφη επιβάρυνση – Άρθρα 196 & 226(11α) Οδηγίας 2006/112/ΕΚ / Reverse charge (B2B services)",
346
+ statutoryGoodsExemptionClause:
347
+ "Απαλλασσόμενη ενδοκοινοτική παράδοση αγαθών – Άρθρα 138(1) & 226(11) Οδηγίας 2006/112/ΕΚ (Άρθρο 28 Κώδικα ΦΠΑ) / Intra-Community exempt supply of goods",
348
+ }),
349
+ ES: Object.freeze({
350
+ memberState: "ES",
351
+ countryNameEn: "Spain",
352
+ nativeCountryName: "España",
353
+ taxIdAcronym: "NIF-IVA",
354
+ nativeTaxIdName: "Número de Identificación Fiscal (ROI / NIF-IVA)",
355
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
356
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
357
+ statutoryReverseChargeClause:
358
+ "Inversión del sujeto pasivo – Art. 196 y Art. 226.11 bis Directiva 2006/112/CE (Art. 84 LIVA) / Reverse charge (B2B services)",
359
+ statutoryGoodsExemptionClause:
360
+ "Entrega intracomunitaria exenta de bienes – Art. 138.1 y Art. 226.11 Directiva 2006/112/CE (Art. 25 LIVA) / Intra-Community exempt supply of goods",
361
+ }),
362
+ FI: Object.freeze({
363
+ memberState: "FI",
364
+ countryNameEn: "Finland",
365
+ nativeCountryName: "Suomi",
366
+ taxIdAcronym: "ALV-nro",
367
+ nativeTaxIdName: "Arvonlisäverotunniste (Y-tunnus)",
368
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
369
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
370
+ statutoryReverseChargeClause:
371
+ "Käännetty verovelvollisuus – direktiivin 2006/112/EY 196 art. ja 226 art. 11a kohta / Reverse charge (B2B services)",
372
+ statutoryGoodsExemptionClause:
373
+ "Veroton yhteisömyynti – direktiivin 2006/112/EY 138 art. 1 kohta ja 226 art. 11 kohta (AVL 72 a §) / Intra-Community exempt supply of goods",
374
+ }),
375
+ FR: Object.freeze({
376
+ memberState: "FR",
377
+ countryNameEn: "France",
378
+ nativeCountryName: "France",
379
+ taxIdAcronym: "N° TVA",
380
+ nativeTaxIdName: "Numéro de TVA intracommunautaire",
381
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
382
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
383
+ statutoryReverseChargeClause:
384
+ "Autoliquidation – Art. 196 et Art. 226, point 11 bis, de la Directive 2006/112/CE (CGI art. 283-2) / Reverse charge (B2B services)",
385
+ statutoryGoodsExemptionClause:
386
+ "Exonération de TVA – Livraison intracommunautaire de biens – Art. 138, par. 1, et Art. 226, point 11, Directive 2006/112/CE (CGI art. 262 ter I) / Intra-Community exempt supply of goods",
387
+ }),
388
+ HR: Object.freeze({
389
+ memberState: "HR",
390
+ countryNameEn: "Croatia",
391
+ nativeCountryName: "Hrvatska",
392
+ taxIdAcronym: "PDV ID / OIB",
393
+ nativeTaxIdName: "PDV identifikacijski broj (OIB)",
394
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
395
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
396
+ statutoryReverseChargeClause:
397
+ "Prijenos porezne obveze – čl. 196. i čl. 226. t. 11.a Direktive 2006/112/EZ / Reverse charge (B2B services)",
398
+ statutoryGoodsExemptionClause:
399
+ "Oslobođena isporuka dobara unutar EU – čl. 138. st. 1. i čl. 226. t. 11. Direktive 2006/112/EZ (čl. 41. st. 1. Zakona o PDV-u) / Intra-Community exempt supply of goods",
400
+ }),
401
+ HU: Object.freeze({
402
+ memberState: "HU",
403
+ countryNameEn: "Hungary",
404
+ nativeCountryName: "Magyarország",
405
+ taxIdAcronym: "Közösségi adószám",
406
+ nativeTaxIdName: "Közösségi adószám (EU ÁFA)",
407
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
408
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
409
+ statutoryReverseChargeClause:
410
+ "Fordított adózás – a 2006/112/EK irányelv 196. cikke és 226. cikkének 11a. pontja / Reverse charge (B2B services)",
411
+ statutoryGoodsExemptionClause:
412
+ "Adómentes Közösségen belüli termékértékesítés – a 2006/112/EK irányelv 138. cikk (1) bek. és 226. cikk 11. pontja (Áfa tv. 89. §) / Intra-Community exempt supply of goods",
413
+ }),
414
+ IE: Object.freeze({
415
+ memberState: "IE",
416
+ countryNameEn: "Ireland",
417
+ nativeCountryName: "Éire / Ireland",
418
+ taxIdAcronym: "VAT Reg No",
419
+ nativeTaxIdName: "Value Added Tax Registration Number",
420
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
421
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
422
+ statutoryReverseChargeClause:
423
+ "Reverse charge – Art. 196 & Art. 226(11a) Council Directive 2006/112/EC (B2B services)",
424
+ statutoryGoodsExemptionClause:
425
+ "Zero-rated intra-Community supply of goods – Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
426
+ }),
427
+ IT: Object.freeze({
428
+ memberState: "IT",
429
+ countryNameEn: "Italy",
430
+ nativeCountryName: "Italia",
431
+ taxIdAcronym: "P.IVA",
432
+ nativeTaxIdName: "Partita IVA intracomunitaria (VIES)",
433
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
434
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
435
+ statutoryReverseChargeClause:
436
+ "Inversione contabile – Art. 196 e Art. 226, punto 11-bis, Direttiva 2006/112/CE (Art. 17 DPR 633/72) / Reverse charge (B2B services)",
437
+ statutoryGoodsExemptionClause:
438
+ "Cessione intracomunitaria non imponibile di beni – Art. 138, par. 1, e Art. 226, punto 11, Direttiva 2006/112/CE (Art. 41 D.L. 331/1993) / Intra-Community exempt supply of goods",
439
+ }),
440
+ LT: Object.freeze({
441
+ memberState: "LT",
442
+ countryNameEn: "Lithuania",
443
+ nativeCountryName: "Lietuva",
444
+ taxIdAcronym: "PVM kodas",
445
+ nativeTaxIdName: "Pridėtinės vertės mokesčio mokėtojo kodas",
446
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
447
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
448
+ statutoryReverseChargeClause:
449
+ "Atvirkštinis apmokestinimas – Direktyvos 2006/112/EB 196 str. ir 226 str. 11a p. / Reverse charge (B2B services)",
450
+ statutoryGoodsExemptionClause:
451
+ "PVM neapmokestinamas prekių tiekimas į kitą ES valstybę narę – Direktyvos 2006/112/EB 138 str. 1 d. ir 226 str. 11 p. (PVMĮ 49 str.) / Intra-Community exempt supply of goods",
452
+ }),
453
+ LU: Object.freeze({
454
+ memberState: "LU",
455
+ countryNameEn: "Luxembourg",
456
+ nativeCountryName: "Lëtzebuerg / Luxembourg",
457
+ taxIdAcronym: "N° TVA",
458
+ nativeTaxIdName: "Numéro d'identification à la TVA",
459
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
460
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
461
+ statutoryReverseChargeClause:
462
+ "Autoliquidation – Art. 196 et Art. 226, point 11 bis, Directive 2006/112/CE / Reverse charge (B2B services)",
463
+ statutoryGoodsExemptionClause:
464
+ "Livraison intracommunautaire de biens exonérée – Art. 138, par. 1, et Art. 226, point 11, Directive 2006/112/CE (Art. 43 LTVA) / Intra-Community exempt supply of goods",
465
+ }),
466
+ LV: Object.freeze({
467
+ memberState: "LV",
468
+ countryNameEn: "Latvia",
469
+ nativeCountryName: "Latvija",
470
+ taxIdAcronym: "PVN Nr.",
471
+ nativeTaxIdName: "Pievienotās vērtības nodokļa reģistrācijas numurs",
472
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
473
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
474
+ statutoryReverseChargeClause:
475
+ "Nodokļa apgrieztā maksāšana – Direktīvas 2006/112/EK 196. pants un 226. panta 11.a punkts / Reverse charge (B2B services)",
476
+ statutoryGoodsExemptionClause:
477
+ "Ar 0% PVN likmi apliekama preču piegāde ES ietvaros – Direktīvas 2006/112/EK 138. panta 1. punkts un 226. panta 11. punkts (PVN likuma 43. pants) / Intra-Community exempt supply of goods",
478
+ }),
479
+ MT: Object.freeze({
480
+ memberState: "MT",
481
+ countryNameEn: "Malta",
482
+ nativeCountryName: "Malta",
483
+ taxIdAcronym: "VAT Reg. No.",
484
+ nativeTaxIdName: "Value Added Tax Registration Number",
485
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
486
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
487
+ statutoryReverseChargeClause:
488
+ "Reverse charge – Art. 196 & Art. 226(11a) Council Directive 2006/112/EC (B2B services)",
489
+ statutoryGoodsExemptionClause:
490
+ "Exempt intra-Community supply of goods – Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
491
+ }),
492
+ NL: Object.freeze({
493
+ memberState: "NL",
494
+ countryNameEn: "Netherlands",
495
+ nativeCountryName: "Nederland",
496
+ taxIdAcronym: "Btw-id",
497
+ nativeTaxIdName: "Btw-identificatienummer",
498
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
499
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
500
+ statutoryReverseChargeClause:
501
+ "Btw verlegd – Art. 196 & Art. 226 lid 11 bis Richtlijn 2006/112/EG / Reverse charge (B2B services)",
502
+ statutoryGoodsExemptionClause:
503
+ "Vrijgestelde intracommunautaire levering van goederen (0% btw) – Art. 138 lid 1 & Art. 226 lid 11 Richtlijn 2006/112/EG (Art. 9 lid 2 sub b Wet OB 1968 juncto Tabel II onderdeel a post 6) / Intra-Community exempt supply of goods",
504
+ }),
505
+ PL: Object.freeze({
506
+ memberState: "PL",
507
+ countryNameEn: "Poland",
508
+ nativeCountryName: "Polska",
509
+ taxIdAcronym: "NIP (VAT-UE)",
510
+ nativeTaxIdName: "Numer Identyfikacji Podatkowej (NIP UE)",
511
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
512
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
513
+ statutoryReverseChargeClause:
514
+ "Odwrotne obciążenie – art. 196 i art. 226 pkt 11a dyrektywy 2006/112/WE / Reverse charge (B2B services)",
515
+ statutoryGoodsExemptionClause:
516
+ "Wewnątrzwspólnotowa dostawa towarów (0% VAT) – art. 138 ust. 1 i art. 226 pkt 11 dyrektywy 2006/112/WE (art. 42 ust. 1 ustawy o VAT) / Intra-Community exempt supply of goods",
517
+ }),
518
+ PT: Object.freeze({
519
+ memberState: "PT",
520
+ countryNameEn: "Portugal",
521
+ nativeCountryName: "Portugal",
522
+ taxIdAcronym: "NIF / NIPC",
523
+ nativeTaxIdName: "Número de Identificação Fiscal (IVA)",
524
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
525
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
526
+ statutoryReverseChargeClause:
527
+ "Autoliquidação – Art. 196.º e Art. 226.º, n.º 11-A, da Diretiva 2006/112/CE / Reverse charge (B2B services)",
528
+ statutoryGoodsExemptionClause:
529
+ "Transmissão intracomunitária de bens isenta de IVA – Art. 138.º, n.º 1, e Art. 226.º, n.º 11, da Diretiva 2006/112/CE (Art. 14.º do RITI) / Intra-Community exempt supply of goods",
530
+ }),
531
+ RO: Object.freeze({
532
+ memberState: "RO",
533
+ countryNameEn: "Romania",
534
+ nativeCountryName: "România",
535
+ taxIdAcronym: "CIF / Cod TVA",
536
+ nativeTaxIdName: "Cod de înregistrare în scopuri de TVA",
537
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
538
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
539
+ statutoryReverseChargeClause:
540
+ "Taxare inversă – Art. 196 și Art. 226 pct. 11a din Directiva 2006/112/CE / Reverse charge (B2B services)",
541
+ statutoryGoodsExemptionClause:
542
+ "Livrare intracomunitară de bunuri scutită de TVA – Art. 138 alin. (1) și Art. 226 pct. 11 din Directiva 2006/112/CE (Art. 294 alin. (2) Codul Fiscal) / Intra-Community exempt supply of goods",
543
+ }),
544
+ SE: Object.freeze({
545
+ memberState: "SE",
546
+ countryNameEn: "Sweden",
547
+ nativeCountryName: "Sverige",
548
+ taxIdAcronym: "Momsnr",
549
+ nativeTaxIdName: "Momsregistreringsnummer (SE-nummer)",
550
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
551
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
552
+ statutoryReverseChargeClause:
553
+ "Omvänd betalningsskyldighet – Art. 196 & Art. 226.11a i direktiv 2006/112/EG / Reverse charge (B2B services)",
554
+ statutoryGoodsExemptionClause:
555
+ "Undantagen unionsintern leverans av varor – Art. 138.1 & Art. 226.11 i direktiv 2006/112/EG (10 kap. 42 § ML) / Intra-Community exempt supply of goods",
556
+ }),
557
+ SI: Object.freeze({
558
+ memberState: "SI",
559
+ countryNameEn: "Slovenia",
560
+ nativeCountryName: "Slovenija",
561
+ taxIdAcronym: "ID za DDV",
562
+ nativeTaxIdName: "Identifikacijska številka za DDV",
563
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
564
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
565
+ statutoryReverseChargeClause:
566
+ "Obrnjena davčna obveznost – člen 196 in člen 226(11a) Direktive 2006/112/ES / Reverse charge (B2B services)",
567
+ statutoryGoodsExemptionClause:
568
+ "Oproščena dobava blaga znotraj Unije – člen 138(1) in člen 226(11) Direktive 2006/112/ES (46. člen ZDDV-1) / Intra-Community exempt supply of goods",
569
+ }),
570
+ SK: Object.freeze({
571
+ memberState: "SK",
572
+ countryNameEn: "Slovakia",
573
+ nativeCountryName: "Slovensko",
574
+ taxIdAcronym: "IČ DPH",
575
+ nativeTaxIdName: "Identifikačné číslo pre daň z pridanej hodnoty",
576
+ directiveArticle: "Art. 196 & Art. 226(11a) Council Directive 2006/112/EC",
577
+ directiveGoodsArticle: "Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
578
+ statutoryReverseChargeClause:
579
+ "Prenesenie daňovej povinnosti – čl. 196 a čl. 226 bod 11a smernice 2006/112/ES / Reverse charge (B2B services)",
580
+ statutoryGoodsExemptionClause:
581
+ "Oslobodené dodanie tovaru do iného členského štátu – čl. 138 ods. 1 a čl. 226 bod 11 smernice 2006/112/ES (§ 43 zákona o DPH) / Intra-Community exempt supply of goods",
582
+ }),
583
+ XI: Object.freeze({
584
+ memberState: "XI",
585
+ countryNameEn: "Northern Ireland (Windsor Framework)",
586
+ nativeCountryName: "Northern Ireland (Windsor Framework)",
587
+ taxIdAcronym: "XI VAT No",
588
+ nativeTaxIdName: "Northern Ireland Protocol / Windsor Framework VAT Number (Goods Only)",
589
+ goodsOnlyProtocol: true,
590
+ directiveArticle:
591
+ "Windsor Framework (Goods Only — Services Not Covered by XI VIES) / Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
592
+ directiveGoodsArticle:
593
+ "Windsor Framework (Goods Only) / Art. 138(1) & Art. 226(11) Council Directive 2006/112/EC",
594
+ statutoryReverseChargeClause:
595
+ "N/A for B2B services under XI VIES (Windsor Framework applies to goods only under Art. 138(1) & Art. 226(11) Directive 2006/112/EC; UK/GB place-of-supply rules govern services)",
596
+ statutoryGoodsExemptionClause:
597
+ "Zero-rated intra-community supply of goods under Windsor Framework (Northern Ireland Protocol) – Art. 138(1) & Art. 226(11) Directive 2006/112/EC",
598
+ }),
599
+ });
600
+
601
+ export function getEuViesStatutoryTerminology(rawCode) {
602
+ const code = normalizeCountryCode(rawCode || "");
603
+ if (!code || !Object.prototype.hasOwnProperty.call(EU_VIES_STATUTORY_TERMINOLOGY_MAP, code)) {
604
+ return null;
605
+ }
606
+ return EU_VIES_STATUTORY_TERMINOLOGY_MAP[code];
607
+ }
608
+
213
609
  const REVCLAMP_START_MARKER = "--- BEGIN REVCLAMP CE3 EVIDENCE ---";
214
610
  const REVCLAMP_END_MARKER = "--- END REVCLAMP CE3 EVIDENCE ---";
215
611
  const REVCLAMP_BRACKET_START_MARKER = "[RevClamp Verified Product Usage Log]";
@@ -357,6 +753,13 @@ export const LOCAL_MCP_TOOLS = Object.freeze([
357
753
  properties: {
358
754
  sellerCountry: { type: "string", default: "DE" },
359
755
  buyerVatId: { type: "string" },
756
+ supplyType: {
757
+ type: "string",
758
+ enum: ["GOODS", "SERVICES"],
759
+ default: "GOODS",
760
+ description:
761
+ "Cross-border transaction supply category: 'GOODS' (Directive 2006/112/EC Art. 138(1) intra-Community supply, default; permitted for Northern Ireland XI under Windsor Framework) or 'SERVICES' (Directive 2006/112/EC Art. 196 B2B reverse charge; excluded from EU VIES for Northern Ireland XI).",
762
+ },
360
763
  viesMode: {
361
764
  type: "string",
362
765
  enum: [
@@ -1510,7 +1913,7 @@ export const LOCAL_STATELESS_CLOUD_UPGRADE_HINT = Object.freeze({
1510
1913
  message:
1511
1914
  "Running in stateless local mode. Provision a free or paid Cloud Workspace for 90-day event persistence, automated webhook revocation, and Slack/Email alerts.",
1512
1915
  command: "npx --yes revclamp-mcp --init-workspace <work_email>",
1513
- cliActivateCommand: "npx -y revclamp-mcp@1.20.11 --init-workspace you@company.com",
1916
+ cliActivateCommand: "npx -y revclamp-mcp@1.20.13 --init-workspace you@company.com",
1514
1917
  upgradeUrl: "https://revclamp.com/pricing?source=mcp_cli",
1515
1918
  });
1516
1919
 
@@ -2521,11 +2924,10 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2521
2924
  if (
2522
2925
  args.consultationNumber !== undefined &&
2523
2926
  (typeof args.consultationNumber !== "string" ||
2524
- args.consultationNumber.trim().length === 0 ||
2525
- args.consultationNumber.trim().length > 64)
2927
+ !/^[A-Za-z0-9_-]{1,64}$/.test(args.consultationNumber.trim()))
2526
2928
  ) {
2527
2929
  const err = new Error(
2528
- "Invalid params: consultationNumber must be a non-empty string up to 64 chars"
2930
+ "Invalid params: consultationNumber must be 1..64 alphanumeric, underscore, or hyphen characters [A-Za-z0-9_-]"
2529
2931
  );
2530
2932
  err.code = -32602;
2531
2933
  throw err;
@@ -2538,9 +2940,77 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2538
2940
  err.code = -32602;
2539
2941
  throw err;
2540
2942
  }
2943
+ if (
2944
+ args.supplyType !== undefined &&
2945
+ (typeof args.supplyType !== "string" ||
2946
+ !["GOODS", "SERVICES"].includes(args.supplyType.trim().toUpperCase()))
2947
+ ) {
2948
+ const err = new Error("Invalid params: supplyType must be 'GOODS' or 'SERVICES'");
2949
+ err.code = -32602;
2950
+ throw err;
2951
+ }
2952
+ const supplyType =
2953
+ args.supplyType === undefined ? "GOODS" : args.supplyType.trim().toUpperCase();
2541
2954
  const norm = normalizeVatId(args.buyerVatId || "");
2542
2955
  const viesMode = String(args.viesMode || "FORMAT_ONLY").toUpperCase();
2543
2956
  const isDemo = args.demo === true;
2957
+ const crossBorder = Boolean(norm.validFormat && sellerCountry !== norm.memberState);
2958
+ const goodsOnlyProtocol = Boolean(
2959
+ crossBorder && (sellerCountry === "XI" || norm.memberState === "XI")
2960
+ );
2961
+ const xiServicesNotice =
2962
+ EU_VIES_STATUTORY_TERMINOLOGY_MAP.XI.statutoryReverseChargeClause;
2963
+ const rawBuyerTerminology = norm.validFormat
2964
+ ? getEuViesStatutoryTerminology(norm.memberState)
2965
+ : null;
2966
+ const rawSellerTerminology = getEuViesStatutoryTerminology(sellerCountry);
2967
+ const statutoryTerminology = rawBuyerTerminology
2968
+ ? goodsOnlyProtocol
2969
+ ? {
2970
+ ...rawBuyerTerminology,
2971
+ statutoryReverseChargeClause:
2972
+ norm.memberState === "XI"
2973
+ ? xiServicesNotice
2974
+ : `${rawBuyerTerminology.statutoryReverseChargeClause} [Windsor Framework XI: N/A for B2B services; VIES applies to goods only under Art. 138(1)]`,
2975
+ }
2976
+ : rawBuyerTerminology
2977
+ : null;
2978
+ const sellerStatutoryTerminology = rawSellerTerminology
2979
+ ? goodsOnlyProtocol
2980
+ ? { ...rawSellerTerminology, statutoryReverseChargeClause: xiServicesNotice }
2981
+ : rawSellerTerminology
2982
+ : null;
2983
+
2984
+ if (goodsOnlyProtocol && supplyType === "SERVICES") {
2985
+ return {
2986
+ ok: true,
2987
+ executionMode: "local_open_source_engine",
2988
+ ...(isDemo ? { sample: true, simulatedViesLookup: true } : {}),
2989
+ valid: null,
2990
+ formatValid: true,
2991
+ supplyType,
2992
+ goodsOnlyProtocol: true,
2993
+ status: "HOLD_XI_SERVICES_OUTSIDE_EU_VIES",
2994
+ action: "APPLY_UK_OR_NON_EU_SERVICES_VAT_RULES",
2995
+ reason: "WINDSOR_FRAMEWORK_XI_B2B_SERVICES_EXCLUDED_FROM_VIES",
2996
+ sellerCountry,
2997
+ sellerStatutoryTerminology,
2998
+ normalizedVatId: norm.fullVatId,
2999
+ memberState: norm.memberState,
3000
+ statutoryTerminology,
3001
+ crossBorderSupply: true,
3002
+ domesticSameMemberState: false,
3003
+ reverseChargeEligible: false,
3004
+ zeroRateAllowed: false,
3005
+ statutoryReverseChargeClause: null,
3006
+ sellerStatutoryReverseChargeClause: null,
3007
+ statutoryGoodsExemptionClause: null,
3008
+ sellerStatutoryGoodsExemptionClause: null,
3009
+ applicableStatutoryClause: null,
3010
+ sellerApplicableStatutoryClause: null,
3011
+ consultationId: null,
3012
+ };
3013
+ }
2544
3014
 
2545
3015
  if (viesMode === "LIVE") {
2546
3016
  const err = new Error(
@@ -2562,9 +3032,11 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2562
3032
  return {
2563
3033
  ok: true,
2564
3034
  executionMode: "local_open_source_engine",
2565
- ...(isDemo ? { sample: true } : {}),
3035
+ ...(isDemo ? { sample: true, simulatedViesLookup: true } : {}),
2566
3036
  valid: false,
2567
3037
  formatValid: false,
3038
+ supplyType,
3039
+ goodsOnlyProtocol: false,
2568
3040
  status: "HOLD_INVALID_VAT",
2569
3041
  reason: "INVALID_EU_VAT_FORMAT",
2570
3042
  sellerCountry,
@@ -2575,7 +3047,10 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2575
3047
  };
2576
3048
  }
2577
3049
 
2578
- const crossBorder = sellerCountry !== norm.memberState;
3050
+ const callerConsultationId =
3051
+ typeof args.consultationNumber === "string" && args.consultationNumber.trim().length > 0
3052
+ ? args.consultationNumber.trim().slice(0, 64)
3053
+ : null;
2579
3054
 
2580
3055
  if (!isDemo || viesMode === "FORMAT_ONLY") {
2581
3056
  return {
@@ -2583,14 +3058,26 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2583
3058
  executionMode: "local_open_source_engine",
2584
3059
  valid: null,
2585
3060
  formatValid: true,
3061
+ supplyType,
3062
+ goodsOnlyProtocol,
2586
3063
  status: "FORMAT_VALID_UNVERIFIED",
3064
+ action: crossBorder ? "FORMAT_VALID_UNVERIFIED" : "APPLY_DOMESTIC_STANDARD_VAT",
2587
3065
  reason: "LOCAL_FORMAT_CHECK_ONLY_NO_LIVE_VIES_CONSULTATION",
2588
3066
  sellerCountry,
3067
+ sellerStatutoryTerminology,
2589
3068
  normalizedVatId: norm.fullVatId,
2590
3069
  memberState: norm.memberState,
3070
+ statutoryTerminology,
2591
3071
  crossBorderSupply: crossBorder,
3072
+ domesticSameMemberState: !crossBorder,
2592
3073
  reverseChargeEligible: false,
2593
3074
  zeroRateAllowed: false,
3075
+ statutoryReverseChargeClause: null,
3076
+ sellerStatutoryReverseChargeClause: null,
3077
+ statutoryGoodsExemptionClause: null,
3078
+ sellerStatutoryGoodsExemptionClause: null,
3079
+ applicableStatutoryClause: null,
3080
+ sellerApplicableStatutoryClause: null,
2594
3081
  consultationId: null,
2595
3082
  limitations: ["NO_LIVE_VIES_CONSULTATION_NUMBER"],
2596
3083
  upgrade: {
@@ -2617,13 +3104,19 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2617
3104
  ok: true,
2618
3105
  executionMode: "local_open_source_engine",
2619
3106
  sample: true,
3107
+ simulatedViesLookup: true,
2620
3108
  valid: null,
2621
3109
  formatValid: true,
3110
+ supplyType,
3111
+ goodsOnlyProtocol,
2622
3112
  status: "PENDING_ASYNC_RETRY",
2623
3113
  reason: `VIES_SOFT_FAULT_${viesMode}`,
2624
3114
  sellerCountry,
3115
+ sellerStatutoryTerminology,
2625
3116
  normalizedVatId: norm.fullVatId,
2626
3117
  memberState: norm.memberState,
3118
+ statutoryTerminology,
3119
+ domesticSameMemberState: !crossBorder,
2627
3120
  reverseChargeEligible: false,
2628
3121
  zeroRateAllowed: false,
2629
3122
  consultationId: null,
@@ -2635,13 +3128,19 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2635
3128
  ok: true,
2636
3129
  executionMode: "local_open_source_engine",
2637
3130
  sample: true,
3131
+ simulatedViesLookup: true,
2638
3132
  valid: null,
2639
3133
  formatValid: true,
3134
+ supplyType,
3135
+ goodsOnlyProtocol,
2640
3136
  status: "HOLD_UNVERIFIED_VIES_FAULT",
2641
3137
  reason: `VIES_GATEWAY_FAULT_${viesMode}`,
2642
3138
  sellerCountry,
3139
+ sellerStatutoryTerminology,
2643
3140
  normalizedVatId: norm.fullVatId,
2644
3141
  memberState: norm.memberState,
3142
+ statutoryTerminology,
3143
+ domesticSameMemberState: !crossBorder,
2645
3144
  reverseChargeEligible: false,
2646
3145
  zeroRateAllowed: false,
2647
3146
  consultationId: null,
@@ -2653,13 +3152,19 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2653
3152
  ok: true,
2654
3153
  executionMode: "local_open_source_engine",
2655
3154
  sample: true,
3155
+ simulatedViesLookup: true,
2656
3156
  valid: false,
2657
3157
  formatValid: true,
3158
+ supplyType,
3159
+ goodsOnlyProtocol,
2658
3160
  status: "HOLD_INVALID_VAT",
2659
3161
  reason: viesMode === "INVALID" ? "VIES_DEFINITE_INVALID" : `VIES_${viesMode}`,
2660
3162
  sellerCountry,
3163
+ sellerStatutoryTerminology,
2661
3164
  normalizedVatId: norm.fullVatId,
2662
3165
  memberState: norm.memberState,
3166
+ statutoryTerminology,
3167
+ domesticSameMemberState: !crossBorder,
2663
3168
  reverseChargeEligible: false,
2664
3169
  zeroRateAllowed: false,
2665
3170
  consultationId: null,
@@ -2671,33 +3176,74 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
2671
3176
  ok: true,
2672
3177
  executionMode: "local_open_source_engine",
2673
3178
  sample: true,
3179
+ simulatedViesLookup: true,
2674
3180
  valid: null,
2675
3181
  formatValid: true,
3182
+ supplyType,
3183
+ goodsOnlyProtocol,
2676
3184
  status: "HOLD_UNVERIFIED_VIES_FAULT",
2677
3185
  reason: "UNRECOGNIZED_VIES_SIMULATION_MODE",
2678
3186
  sellerCountry,
3187
+ sellerStatutoryTerminology,
2679
3188
  normalizedVatId: norm.fullVatId,
2680
3189
  memberState: norm.memberState,
3190
+ statutoryTerminology,
3191
+ domesticSameMemberState: !crossBorder,
2681
3192
  reverseChargeEligible: false,
2682
3193
  zeroRateAllowed: false,
2683
3194
  consultationId: null,
2684
3195
  };
2685
3196
  }
2686
3197
 
3198
+ const applicableStatutoryClause = crossBorder
3199
+ ? supplyType === "GOODS"
3200
+ ? statutoryTerminology?.statutoryGoodsExemptionClause || null
3201
+ : statutoryTerminology?.statutoryReverseChargeClause || null
3202
+ : null;
3203
+ const sellerApplicableStatutoryClause = crossBorder
3204
+ ? supplyType === "GOODS"
3205
+ ? sellerStatutoryTerminology?.statutoryGoodsExemptionClause || null
3206
+ : sellerStatutoryTerminology?.statutoryReverseChargeClause || null
3207
+ : null;
3208
+
2687
3209
  return {
2688
3210
  ok: true,
2689
3211
  executionMode: "local_open_source_engine",
2690
3212
  sample: true,
3213
+ simulatedViesLookup: true,
2691
3214
  valid: true,
2692
3215
  formatValid: true,
3216
+ supplyType,
3217
+ goodsOnlyProtocol,
2693
3218
  status: crossBorder ? "VERIFIED_ZERO_RATED" : "DOMESTIC_TAXABLE_SUPPLY",
3219
+ action: crossBorder ? "ALLOW_ZERO_RATED_REVERSE_CHARGE" : "APPLY_DOMESTIC_STANDARD_VAT",
2694
3220
  reason: crossBorder ? "VALID_CROSS_BORDER_REVERSE_CHARGE" : "SAME_MEMBER_STATE_DOMESTIC",
2695
3221
  sellerCountry,
3222
+ sellerStatutoryTerminology,
2696
3223
  normalizedVatId: norm.fullVatId,
2697
3224
  memberState: norm.memberState,
3225
+ statutoryTerminology,
3226
+ domesticSameMemberState: !crossBorder,
2698
3227
  reverseChargeEligible: crossBorder,
2699
3228
  zeroRateAllowed: crossBorder,
2700
- consultationId: "DEMO_SAMPLE_NOT_FOR_TAX_AUDIT",
3229
+ statutoryReverseChargeClause: crossBorder
3230
+ ? statutoryTerminology?.statutoryReverseChargeClause || null
3231
+ : null,
3232
+ sellerStatutoryReverseChargeClause: crossBorder
3233
+ ? sellerStatutoryTerminology?.statutoryReverseChargeClause || null
3234
+ : null,
3235
+ statutoryGoodsExemptionClause: crossBorder
3236
+ ? statutoryTerminology?.statutoryGoodsExemptionClause || null
3237
+ : null,
3238
+ sellerStatutoryGoodsExemptionClause: crossBorder
3239
+ ? sellerStatutoryTerminology?.statutoryGoodsExemptionClause || null
3240
+ : null,
3241
+ applicableStatutoryClause,
3242
+ sellerApplicableStatutoryClause,
3243
+ consultationId: callerConsultationId || "DEMO_SAMPLE_NOT_FOR_TAX_AUDIT",
3244
+ consultationIdSource: callerConsultationId
3245
+ ? "CALLER_SUPPLIED_UNVERIFIED"
3246
+ : "DEMO_SAMPLE_DEFAULT",
2701
3247
  };
2702
3248
  }
2703
3249
 
@@ -3463,7 +4009,7 @@ function toSafeLocalRpcId(rawId) {
3463
4009
 
3464
4010
  export function executeLocalMcpJsonRpc(
3465
4011
  rpcRequest,
3466
- packageVersion = "1.20.11",
4012
+ packageVersion = "1.20.13",
3467
4013
  options = {}
3468
4014
  ) {
3469
4015
  if (!rpcRequest || typeof rpcRequest !== "object" || Array.isArray(rpcRequest)) {
package/mcp-config.json CHANGED
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "manifest": {
28
28
  "name": "revclamp-mcp",
29
- "version": "1.20.11",
29
+ "version": "1.20.13",
30
30
  "tools": [
31
31
  "revclamp_audit_revenue_leakage",
32
32
  "revclamp_evaluate_ghost_usage",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "revclamp-mcp",
3
3
  "mcpName": "com.revclamp/revclamp-mcp",
4
- "version": "1.20.11",
4
+ "version": "1.20.13",
5
5
  "description": "Model Context Protocol (MCP) server and CLI for Stripe 2025-03-31.basil entitlement checks, Visa CE 3.0 dispute staging (submit: false), EU/XI VIES VAT validation, Shopify Plus B2B Net-15/30/60 reconciliation, webhook HMAC-SHA256 verification, 0% take-rate ROI calculation, 72-hour webhook replay & out-of-order state-machine simulation, and Stripe dispute evidence 18,000 UTF-16 code unit & CE 3.0 completeness linting.",
6
6
  "type": "module",
7
7
  "main": "./index.mjs",
@@ -46,6 +46,6 @@
46
46
  "node": ">=20.0.0"
47
47
  },
48
48
  "revclamp": {
49
- "engineSha256": "806f9291517805e75ce55636ad1e704e30c1b2a840bd1162c87ba7e92bd9a053"
49
+ "engineSha256": "aacc34998abb464fc647d3029fecc0b6caf1f8638f7cdfdf12c09f35a2319323"
50
50
  }
51
51
  }
package/server.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "url": "https://github.com/lhphong09t2/revclamp-mcp",
8
8
  "source": "github"
9
9
  },
10
- "version": "1.20.11",
10
+ "version": "1.20.13",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "revclamp-mcp",
16
- "version": "1.20.11",
16
+ "version": "1.20.13",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },