cryptoiz-mcp 3.3.0 → 3.5.0
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/package.json +1 -1
- package/src/index.js +57 -15
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -57,13 +57,11 @@ const FOOTER = [
|
|
|
57
57
|
`SUBSCRIBE : https://cryptoiz.org/Pricing`,
|
|
58
58
|
].join('\n');
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
` TRADE_ON_RAYDIUM : https://raydium.io/swap/?inputCurrency=sol&outputCurrency=${addr}`,
|
|
66
|
-
].join('\n');
|
|
60
|
+
// CA embedded in name line — proven to work (v3.0.x)
|
|
61
|
+
// Claude cannot separate name from CA when on same line
|
|
62
|
+
const CA_LINE = (name, addr) => {
|
|
63
|
+
if (!addr || addr === 'N/A') return `${name} | CA: NOT AVAILABLE`;
|
|
64
|
+
return `${name} | CA: ${addr} | JUPITER: https://jup.ag/swap/SOL-${addr}`;
|
|
67
65
|
};
|
|
68
66
|
|
|
69
67
|
// ══════════════════════════════════════════════════════════════════
|
|
@@ -96,8 +94,7 @@ function formatAlpha(data) {
|
|
|
96
94
|
parseFloat(t.alpha_score) >= 75 ? '⚡ STRONG SIGNAL' :
|
|
97
95
|
parseFloat(t.alpha_score) >= 65 ? '👁 WATCH' : '📋 MONITOR';
|
|
98
96
|
return [
|
|
99
|
-
`[${String(i+1).padStart(2,'0')}] ${t.name ||
|
|
100
|
-
CA_LINE(t.contract_address || 'N/A'),
|
|
97
|
+
`[${String(i+1).padStart(2,'0')}] ${CA_LINE(t.name || "Unknown", t.contract_address || "N/A")} — ${urgency}`,
|
|
101
98
|
``,
|
|
102
99
|
` SIGNAL_CLASS : ${t.signal_class}`,
|
|
103
100
|
` ALPHA_SCORE : ${N(t.alpha_score)} / 100`,
|
|
@@ -195,8 +192,7 @@ function formatDivergence(data) {
|
|
|
195
192
|
parseFloat(s.divergence_score) > 50 ? '👁 MODERATE' : '📋 LOW';
|
|
196
193
|
lines.push([
|
|
197
194
|
``,
|
|
198
|
-
` [${String(i+1).padStart(2,'0')}] ${s.name ||
|
|
199
|
-
CA_LINE(s.contract_address || 'N/A'),
|
|
195
|
+
` [${String(i+1).padStart(2,'0')}] ${CA_LINE(s.name || "Unknown", s.contract_address || "N/A")} — ${urgency}`,
|
|
200
196
|
``,
|
|
201
197
|
` DIVERGENCE_TYPE : ${s.divergence_type}`,
|
|
202
198
|
` DIVERGENCE_SCORE : ${N(s.divergence_score)}`,
|
|
@@ -258,8 +254,7 @@ function formatAccumulation(data) {
|
|
|
258
254
|
t.accumulation_strength?.includes('STRONG') ? '⚡ STRONG FORMING' :
|
|
259
255
|
t.accumulation_strength?.includes('FORMING') ? '👁 FORMING' : '📋 WEAK/NOISY';
|
|
260
256
|
return [
|
|
261
|
-
`[${String(i+1).padStart(2,'0')}] ${t.name ||
|
|
262
|
-
CA_LINE(t.contract_address || 'N/A'),
|
|
257
|
+
`[${String(i+1).padStart(2,'0')}] ${CA_LINE(t.name || "Unknown", t.contract_address || "N/A")} — ${urgency}`,
|
|
263
258
|
``,
|
|
264
259
|
` ACCUMULATION_STRENGTH : ${t.accumulation_strength || 'N/A'}`,
|
|
265
260
|
` ACCDIST_STATUS : ${t.accdist_status || 'N/A'}`,
|
|
@@ -440,7 +435,7 @@ const TOOLS = [
|
|
|
440
435
|
// ══════════════════════════════════════════════════════════════════
|
|
441
436
|
// SERVER
|
|
442
437
|
// ══════════════════════════════════════════════════════════════════
|
|
443
|
-
const server = new Server({ name: 'cryptoiz-mcp', version: '3.
|
|
438
|
+
const server = new Server({ name: 'cryptoiz-mcp', version: '3.5.0' }, { capabilities: { tools: {} } });
|
|
444
439
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
445
440
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
446
441
|
const { name, arguments: args } = request.params;
|
|
@@ -473,7 +468,54 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
473
468
|
return { content: [{ type: 'text', text: formatBTC(data) }] };
|
|
474
469
|
}
|
|
475
470
|
|
|
476
|
-
|
|
471
|
+
if (name === 'get_token_ca') {
|
|
472
|
+
const tokenName = args?.token_name || '';
|
|
473
|
+
const data = await payAndFetch(`${GATEWAY_URL}?tool=get_alpha_scanner`);
|
|
474
|
+
|
|
475
|
+
if (data.error) return { content: [{ type: 'text', text: `Error: ${data.error}` }], isError: true };
|
|
476
|
+
|
|
477
|
+
// Search by name (case insensitive)
|
|
478
|
+
const signals = data.signals || [];
|
|
479
|
+
const match = signals.find(s =>
|
|
480
|
+
(s.name || '').toLowerCase().includes(tokenName.toLowerCase()) ||
|
|
481
|
+
tokenName.toLowerCase().includes((s.name || '').toLowerCase())
|
|
482
|
+
);
|
|
483
|
+
|
|
484
|
+
if (!match) {
|
|
485
|
+
return { content: [{ type: 'text', text: [
|
|
486
|
+
`Token "${tokenName}" not found in today's CryptoIZ signals.`,
|
|
487
|
+
``,
|
|
488
|
+
`Available tokens today: ${signals.map(s => s.name).join(', ')}`,
|
|
489
|
+
``,
|
|
490
|
+
`Try get_alpha_scanner to see all available tokens.`,
|
|
491
|
+
].join('\n') }] };
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
return { content: [{ type: 'text', text: [
|
|
495
|
+
`TOKEN VERIFICATION — ${match.name}`,
|
|
496
|
+
``,
|
|
497
|
+
`⚠ IMPORTANT: Many fake tokens use the same name.`,
|
|
498
|
+
`⚠ ONLY use this exact contract address to avoid scams.`,
|
|
499
|
+
``,
|
|
500
|
+
`TOKEN_NAME : ${match.name}`,
|
|
501
|
+
`CONTRACT_ADDRESS : ${match.contract_address}`,
|
|
502
|
+
``,
|
|
503
|
+
`TRADE LINKS (verified):`,
|
|
504
|
+
`BUY_ON_JUPITER : https://jup.ag/swap/SOL-${match.contract_address}`,
|
|
505
|
+
`BUY_ON_RAYDIUM : https://raydium.io/swap/?inputCurrency=sol&outputCurrency=${match.contract_address}`,
|
|
506
|
+
``,
|
|
507
|
+
`CURRENT SIGNALS:`,
|
|
508
|
+
`ALPHA_SCORE : ${match.alpha_score}`,
|
|
509
|
+
`SIGNAL_CLASS : ${match.signal_class}`,
|
|
510
|
+
`MARKET_CAP : ${match.market_cap_now || 'N/A'}`,
|
|
511
|
+
`PRICE_NOW : $${match.price_now_usd || 'N/A'}`,
|
|
512
|
+
``,
|
|
513
|
+
`Data from CryptoIZ — https://cryptoiz.org`,
|
|
514
|
+
`Not financial advice. Always DYOR.`,
|
|
515
|
+
].join('\n') }] };
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
return { content: [{ type: 'text', text: `Unknown tool: \${name}` }], isError: true };
|
|
477
519
|
} catch (err) {
|
|
478
520
|
return { content: [{ type: 'text', text: `Error: ${err.message}` }], isError: true };
|
|
479
521
|
}
|