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 +3 -3
- package/index.mjs +1 -1
- package/local_engine.mjs +554 -8
- package/mcp-config.json +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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()
|
|
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
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
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.
|
|
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": "
|
|
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.
|
|
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.
|
|
16
|
+
"version": "1.20.13",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
},
|