cryptoiz-mcp 4.15.0 → 4.15.2
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/index.js +22 -2
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprot
|
|
|
9
9
|
import { Connection, Keypair, PublicKey, Transaction, SystemProgram, VersionedTransaction, TransactionMessage } from '@solana/web3.js';
|
|
10
10
|
import bs58 from 'bs58';
|
|
11
11
|
|
|
12
|
-
var VERSION = 'v4.15.
|
|
12
|
+
var VERSION = 'v4.15.2';
|
|
13
13
|
var GATEWAY = 'https://rehqwsypjnjirhuiapqh.supabase.co/functions/v1/mcp-x402-gateway';
|
|
14
14
|
var RECIPIENT = 'DsKmdkYx49Xc1WhqMUAztwhdYPTqieyC98VmnnJdgpXX';
|
|
15
15
|
var USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
|
|
@@ -201,7 +201,8 @@ async function callTool(toolName, args) {
|
|
|
201
201
|
|
|
202
202
|
var amount = parseInt(paymentRequirements.maxAmountRequired || paymentRequirements.amount || '10000');
|
|
203
203
|
var displayAmount = (amount / 1000000).toFixed(4);
|
|
204
|
-
|
|
204
|
+
var hasFeePayer = paymentRequirements.extra && paymentRequirements.extra.feePayer;
|
|
205
|
+
console.error('[cryptoiz-mcp] Payment required: ' + displayAmount + ' USDC for ' + toolName + (hasFeePayer ? ' (V2 Dexter)' : ' (V1 self-pay)'));
|
|
205
206
|
|
|
206
207
|
// Step 3: Build and send payment
|
|
207
208
|
var paymentHeader = '';
|
|
@@ -230,6 +231,9 @@ async function callTool(toolName, args) {
|
|
|
230
231
|
console.error('[cryptoiz-mcp] V2 build failed: ' + e.message + ', falling back to V1');
|
|
231
232
|
useV2 = false;
|
|
232
233
|
}
|
|
234
|
+
} else {
|
|
235
|
+
// No feePayer in requirements — force V1
|
|
236
|
+
useV2 = false;
|
|
233
237
|
}
|
|
234
238
|
|
|
235
239
|
if (!useV2) {
|
|
@@ -249,6 +253,22 @@ async function callTool(toolName, args) {
|
|
|
249
253
|
|
|
250
254
|
var resp2 = await fetch(url, { headers: headers2 });
|
|
251
255
|
|
|
256
|
+
// V2 settle failed? Auto-fallback to V1
|
|
257
|
+
if (resp2.status !== 200 && useV2) {
|
|
258
|
+
var v2ErrBody = await resp2.text();
|
|
259
|
+
console.error('[cryptoiz-mcp] V2 settle failed (' + resp2.status + '): ' + v2ErrBody.substring(0, 200));
|
|
260
|
+
console.error('[cryptoiz-mcp] Auto-fallback to V1 (sendUSDC on-chain)...');
|
|
261
|
+
|
|
262
|
+
// V1: send USDC on-chain, retry with x-payment
|
|
263
|
+
var fallbackSig = await sendUSDC(amount);
|
|
264
|
+
console.error('[cryptoiz-mcp] V1 fallback TX confirmed: ' + fallbackSig);
|
|
265
|
+
|
|
266
|
+
var v1FallbackPayload = { signature: fallbackSig };
|
|
267
|
+
var v1FallbackHeader = Buffer.from(JSON.stringify(v1FallbackPayload)).toString('base64');
|
|
268
|
+
|
|
269
|
+
resp2 = await fetch(url, { headers: { 'x-payment': v1FallbackHeader } });
|
|
270
|
+
}
|
|
271
|
+
|
|
252
272
|
if (resp2.status !== 200) {
|
|
253
273
|
var errBody = await resp2.text();
|
|
254
274
|
throw new Error('Payment failed (' + resp2.status + '): ' + errBody);
|
package/package.json
CHANGED