revclamp-mcp 1.20.12 → 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 +37 -13
- 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
|
@@ -1913,7 +1913,7 @@ export const LOCAL_STATELESS_CLOUD_UPGRADE_HINT = Object.freeze({
|
|
|
1913
1913
|
message:
|
|
1914
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.",
|
|
1915
1915
|
command: "npx --yes revclamp-mcp --init-workspace <work_email>",
|
|
1916
|
-
cliActivateCommand: "npx -y revclamp-mcp@1.20.
|
|
1916
|
+
cliActivateCommand: "npx -y revclamp-mcp@1.20.13 --init-workspace you@company.com",
|
|
1917
1917
|
upgradeUrl: "https://revclamp.com/pricing?source=mcp_cli",
|
|
1918
1918
|
});
|
|
1919
1919
|
|
|
@@ -2954,15 +2954,34 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
2954
2954
|
const norm = normalizeVatId(args.buyerVatId || "");
|
|
2955
2955
|
const viesMode = String(args.viesMode || "FORMAT_ONLY").toUpperCase();
|
|
2956
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;
|
|
2957
2983
|
|
|
2958
|
-
if (
|
|
2959
|
-
norm.validFormat &&
|
|
2960
|
-
sellerCountry !== norm.memberState &&
|
|
2961
|
-
supplyType === "SERVICES" &&
|
|
2962
|
-
(sellerCountry === "XI" || norm.memberState === "XI")
|
|
2963
|
-
) {
|
|
2964
|
-
const statutoryTerminology = getEuViesStatutoryTerminology(norm.memberState);
|
|
2965
|
-
const sellerStatutoryTerminology = getEuViesStatutoryTerminology(sellerCountry);
|
|
2984
|
+
if (goodsOnlyProtocol && supplyType === "SERVICES") {
|
|
2966
2985
|
return {
|
|
2967
2986
|
ok: true,
|
|
2968
2987
|
executionMode: "local_open_source_engine",
|
|
@@ -2970,6 +2989,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
2970
2989
|
valid: null,
|
|
2971
2990
|
formatValid: true,
|
|
2972
2991
|
supplyType,
|
|
2992
|
+
goodsOnlyProtocol: true,
|
|
2973
2993
|
status: "HOLD_XI_SERVICES_OUTSIDE_EU_VIES",
|
|
2974
2994
|
action: "APPLY_UK_OR_NON_EU_SERVICES_VAT_RULES",
|
|
2975
2995
|
reason: "WINDSOR_FRAMEWORK_XI_B2B_SERVICES_EXCLUDED_FROM_VIES",
|
|
@@ -3016,6 +3036,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3016
3036
|
valid: false,
|
|
3017
3037
|
formatValid: false,
|
|
3018
3038
|
supplyType,
|
|
3039
|
+
goodsOnlyProtocol: false,
|
|
3019
3040
|
status: "HOLD_INVALID_VAT",
|
|
3020
3041
|
reason: "INVALID_EU_VAT_FORMAT",
|
|
3021
3042
|
sellerCountry,
|
|
@@ -3026,9 +3047,6 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3026
3047
|
};
|
|
3027
3048
|
}
|
|
3028
3049
|
|
|
3029
|
-
const crossBorder = sellerCountry !== norm.memberState;
|
|
3030
|
-
const statutoryTerminology = getEuViesStatutoryTerminology(norm.memberState);
|
|
3031
|
-
const sellerStatutoryTerminology = getEuViesStatutoryTerminology(sellerCountry);
|
|
3032
3050
|
const callerConsultationId =
|
|
3033
3051
|
typeof args.consultationNumber === "string" && args.consultationNumber.trim().length > 0
|
|
3034
3052
|
? args.consultationNumber.trim().slice(0, 64)
|
|
@@ -3041,6 +3059,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3041
3059
|
valid: null,
|
|
3042
3060
|
formatValid: true,
|
|
3043
3061
|
supplyType,
|
|
3062
|
+
goodsOnlyProtocol,
|
|
3044
3063
|
status: "FORMAT_VALID_UNVERIFIED",
|
|
3045
3064
|
action: crossBorder ? "FORMAT_VALID_UNVERIFIED" : "APPLY_DOMESTIC_STANDARD_VAT",
|
|
3046
3065
|
reason: "LOCAL_FORMAT_CHECK_ONLY_NO_LIVE_VIES_CONSULTATION",
|
|
@@ -3089,6 +3108,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3089
3108
|
valid: null,
|
|
3090
3109
|
formatValid: true,
|
|
3091
3110
|
supplyType,
|
|
3111
|
+
goodsOnlyProtocol,
|
|
3092
3112
|
status: "PENDING_ASYNC_RETRY",
|
|
3093
3113
|
reason: `VIES_SOFT_FAULT_${viesMode}`,
|
|
3094
3114
|
sellerCountry,
|
|
@@ -3112,6 +3132,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3112
3132
|
valid: null,
|
|
3113
3133
|
formatValid: true,
|
|
3114
3134
|
supplyType,
|
|
3135
|
+
goodsOnlyProtocol,
|
|
3115
3136
|
status: "HOLD_UNVERIFIED_VIES_FAULT",
|
|
3116
3137
|
reason: `VIES_GATEWAY_FAULT_${viesMode}`,
|
|
3117
3138
|
sellerCountry,
|
|
@@ -3135,6 +3156,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3135
3156
|
valid: false,
|
|
3136
3157
|
formatValid: true,
|
|
3137
3158
|
supplyType,
|
|
3159
|
+
goodsOnlyProtocol,
|
|
3138
3160
|
status: "HOLD_INVALID_VAT",
|
|
3139
3161
|
reason: viesMode === "INVALID" ? "VIES_DEFINITE_INVALID" : `VIES_${viesMode}`,
|
|
3140
3162
|
sellerCountry,
|
|
@@ -3158,6 +3180,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3158
3180
|
valid: null,
|
|
3159
3181
|
formatValid: true,
|
|
3160
3182
|
supplyType,
|
|
3183
|
+
goodsOnlyProtocol,
|
|
3161
3184
|
status: "HOLD_UNVERIFIED_VIES_FAULT",
|
|
3162
3185
|
reason: "UNRECOGNIZED_VIES_SIMULATION_MODE",
|
|
3163
3186
|
sellerCountry,
|
|
@@ -3191,6 +3214,7 @@ function executeLocalMcpToolCore(toolName, rawArgs = {}) {
|
|
|
3191
3214
|
valid: true,
|
|
3192
3215
|
formatValid: true,
|
|
3193
3216
|
supplyType,
|
|
3217
|
+
goodsOnlyProtocol,
|
|
3194
3218
|
status: crossBorder ? "VERIFIED_ZERO_RATED" : "DOMESTIC_TAXABLE_SUPPLY",
|
|
3195
3219
|
action: crossBorder ? "ALLOW_ZERO_RATED_REVERSE_CHARGE" : "APPLY_DOMESTIC_STANDARD_VAT",
|
|
3196
3220
|
reason: crossBorder ? "VALID_CROSS_BORDER_REVERSE_CHARGE" : "SAME_MEMBER_STATE_DOMESTIC",
|
|
@@ -3985,7 +4009,7 @@ function toSafeLocalRpcId(rawId) {
|
|
|
3985
4009
|
|
|
3986
4010
|
export function executeLocalMcpJsonRpc(
|
|
3987
4011
|
rpcRequest,
|
|
3988
|
-
packageVersion = "1.20.
|
|
4012
|
+
packageVersion = "1.20.13",
|
|
3989
4013
|
options = {}
|
|
3990
4014
|
) {
|
|
3991
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
|
},
|