@quackai/q402-mcp 0.8.25 → 0.8.27
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/dist/index.js +14 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -211,7 +211,7 @@ var isValidPrivateKey = (s) => typeof s === "string" && PRIVATE_KEY_RE.test(s);
|
|
|
211
211
|
// package.json
|
|
212
212
|
var package_default = {
|
|
213
213
|
name: "@quackai/q402-mcp",
|
|
214
|
-
version: "0.8.
|
|
214
|
+
version: "0.8.27",
|
|
215
215
|
description: "MCP server for Q402 \u2014 gasless USDC/USDT/RLUSD payments on 10 EVM chains + Chainlink CCIP USDC bridge on the eth/avax/arbitrum triangle, callable from Claude (Desktop / Code), OpenAI Codex CLI, and any other Model Context Protocol client.",
|
|
216
216
|
mcpName: "io.github.bitgett/q402-mcp",
|
|
217
217
|
keywords: [
|
|
@@ -410,7 +410,7 @@ var CHAIN_CONFIG = {
|
|
|
410
410
|
name: "Monad",
|
|
411
411
|
chainId: 143,
|
|
412
412
|
domainName: "Q402 Monad",
|
|
413
|
-
implContract: "
|
|
413
|
+
implContract: "0x5a8fde1851491D9eD512a9eDa1c63CA7627BECb8",
|
|
414
414
|
gasToken: "MON",
|
|
415
415
|
explorer: "https://monadscan.com",
|
|
416
416
|
// Native Circle USDC via CCTP V2 (not bridged) + USDT0 (LayerZero OFT).
|
|
@@ -424,7 +424,7 @@ var CHAIN_CONFIG = {
|
|
|
424
424
|
name: "Scroll",
|
|
425
425
|
chainId: 534352,
|
|
426
426
|
domainName: "Q402 Scroll",
|
|
427
|
-
implContract: "
|
|
427
|
+
implContract: "0x8D854436ab0426F5BC6Cc70865C90576AD523E73",
|
|
428
428
|
gasToken: "ETH",
|
|
429
429
|
explorer: "https://scrollscan.com",
|
|
430
430
|
// Native Circle USDC + canonical Tether on Scroll mainnet (addresses
|
|
@@ -440,7 +440,7 @@ var CHAIN_CONFIG = {
|
|
|
440
440
|
name: "Arbitrum One",
|
|
441
441
|
chainId: 42161,
|
|
442
442
|
domainName: "Q402 Arbitrum",
|
|
443
|
-
implContract: "
|
|
443
|
+
implContract: "0xE5b90D564650bdcE7C2Bb4344F777f6582e05699",
|
|
444
444
|
gasToken: "ETH",
|
|
445
445
|
explorer: "https://arbiscan.io",
|
|
446
446
|
// Native Circle USDC (CCTP) + canonical Tether on Arbitrum One.
|
|
@@ -936,6 +936,7 @@ function canonicalIntent(intent) {
|
|
|
936
936
|
for (const k of Object.keys(src).sort()) out[k] = sortValue(src[k]);
|
|
937
937
|
return out;
|
|
938
938
|
}
|
|
939
|
+
if (typeof v === "number") return String(v);
|
|
939
940
|
return v;
|
|
940
941
|
};
|
|
941
942
|
return JSON.stringify(sortValue(intent));
|
|
@@ -1120,7 +1121,12 @@ async function runPay(input) {
|
|
|
1120
1121
|
// wallet, so a different walletMode/walletId needs a fresh preview.
|
|
1121
1122
|
wm: effectiveMode,
|
|
1122
1123
|
wid: (input.walletId ?? "").toLowerCase(),
|
|
1123
|
-
...input.hookParams?.splits ? { splits: input.hookParams.splits.map((s) => ({ r: s.recipient.toLowerCase(), bps: s.bps })) } : {}
|
|
1124
|
+
...input.hookParams?.splits ? { splits: input.hookParams.splits.map((s) => ({ r: s.recipient.toLowerCase(), bps: s.bps })) } : {},
|
|
1125
|
+
// Bind the settlement-gating hooks too — a ConditionalOracle gate or a
|
|
1126
|
+
// ReputationGate materially changes WHEN/IF money moves, so dropping or
|
|
1127
|
+
// altering them after the preview must invalidate consent.
|
|
1128
|
+
...input.hookParams?.condition ? { cond: { kind: input.hookParams.condition.kind, op: input.hookParams.condition.op, value: input.hookParams.condition.value, feed: input.hookParams.condition.feed ?? null } } : {},
|
|
1129
|
+
...input.hookParams?.recipientAgentId ? { ragent: input.hookParams.recipientAgentId } : {}
|
|
1124
1130
|
};
|
|
1125
1131
|
const consent = checkConsent(consentIntent, input.consentToken);
|
|
1126
1132
|
if (!consent.ok) {
|
|
@@ -3270,6 +3276,9 @@ async function runBridgeSend(input) {
|
|
|
3270
3276
|
dst: input.dst,
|
|
3271
3277
|
amount: input.amount,
|
|
3272
3278
|
feeToken: input.feeToken === "native" ? "native" : "LINK",
|
|
3279
|
+
// Bind the fee ceiling too — it bounds what the user actually pays, so it
|
|
3280
|
+
// must not be addable/changeable after the preview.
|
|
3281
|
+
maxFeeRaw: input.maxFeeRaw ?? null,
|
|
3273
3282
|
// Bind the funding wallet too (see q402_pay).
|
|
3274
3283
|
wid: (input.walletId ?? "").toLowerCase()
|
|
3275
3284
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quackai/q402-mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.27",
|
|
4
4
|
"description": "MCP server for Q402 — gasless USDC/USDT/RLUSD payments on 10 EVM chains + Chainlink CCIP USDC bridge on the eth/avax/arbitrum triangle, callable from Claude (Desktop / Code), OpenAI Codex CLI, and any other Model Context Protocol client.",
|
|
5
5
|
"mcpName": "io.github.bitgett/q402-mcp",
|
|
6
6
|
"keywords": [
|