@quackai/q402-mcp 0.8.25 → 0.8.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +10 -2
  2. 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.25",
214
+ version: "0.8.26",
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: [
@@ -1120,7 +1120,12 @@ async function runPay(input) {
1120
1120
  // wallet, so a different walletMode/walletId needs a fresh preview.
1121
1121
  wm: effectiveMode,
1122
1122
  wid: (input.walletId ?? "").toLowerCase(),
1123
- ...input.hookParams?.splits ? { splits: input.hookParams.splits.map((s) => ({ r: s.recipient.toLowerCase(), bps: s.bps })) } : {}
1123
+ ...input.hookParams?.splits ? { splits: input.hookParams.splits.map((s) => ({ r: s.recipient.toLowerCase(), bps: s.bps })) } : {},
1124
+ // Bind the settlement-gating hooks too — a ConditionalOracle gate or a
1125
+ // ReputationGate materially changes WHEN/IF money moves, so dropping or
1126
+ // altering them after the preview must invalidate consent.
1127
+ ...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 } } : {},
1128
+ ...input.hookParams?.recipientAgentId ? { ragent: input.hookParams.recipientAgentId } : {}
1124
1129
  };
1125
1130
  const consent = checkConsent(consentIntent, input.consentToken);
1126
1131
  if (!consent.ok) {
@@ -3270,6 +3275,9 @@ async function runBridgeSend(input) {
3270
3275
  dst: input.dst,
3271
3276
  amount: input.amount,
3272
3277
  feeToken: input.feeToken === "native" ? "native" : "LINK",
3278
+ // Bind the fee ceiling too — it bounds what the user actually pays, so it
3279
+ // must not be addable/changeable after the preview.
3280
+ maxFeeRaw: input.maxFeeRaw ?? null,
3273
3281
  // Bind the funding wallet too (see q402_pay).
3274
3282
  wid: (input.walletId ?? "").toLowerCase()
3275
3283
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quackai/q402-mcp",
3
- "version": "0.8.25",
3
+ "version": "0.8.26",
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": [