cryptoiz-mcp 4.2.0 β†’ 4.3.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +15 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cryptoiz-mcp",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "CryptoIZ MCP Server β€” Solana DEX signals with x402 micropayments. Pay $0.01 USDC per call.",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/index.js CHANGED
@@ -37,7 +37,7 @@ const N = (v, d=2) => v != null && v !== 'N/A' ? parseFloat(v).toFixed(d) : 'N/A
37
37
  const sign = v => { const n = parseFloat(v||0); return n > 0 ? `+${n}` : `${n}`; };
38
38
  const shortCA = ca => ca ? `${ca.slice(0,6)}...${ca.slice(-4)}` : 'N/A';
39
39
  const dexLink = ca => ca ? `[Chart πŸ“Š](https://dexscreener.com/solana/${ca})` : 'N/A';
40
- const jupLink = ca => ca ? `[Buy πŸ›’](https://jup.ag/swap?inputCurrency=So11111111111111111111111111111111111111112&outputCurrency=${ca})` : 'N/A';
40
+
41
41
 
42
42
  // ══════════════════════════════════════════════════════════════════
43
43
  // ALPHA SCANNER β€” Markdown Table Format
@@ -59,11 +59,11 @@ function formatAlpha(data) {
59
59
  : 'βœ… Clear';
60
60
  const startMC = s.market_cap_when_signal_formed ? s.market_cap_when_signal_formed : 'N/A';
61
61
  const signalTime = s.signal_formed_at ? new Date(s.signal_formed_at).toLocaleDateString('id-ID') : 'N/A';
62
- return `| ${i} | **${s.name}** | \`${s.contract_address||'N/A'}\` | ${N(s.alpha_score)} | ${s.phase||'N/A'} | ${sign(s.whale_delta)} | ${sign(s.dolphin_delta)} | ${s.market_cap_now||'N/A'} | ${startMC} | ${signalTime} | ${N(s.score_safety)} | ${risk} | ${dexLink(s.contract_address)} | ${jupLink(s.contract_address)} |`;
62
+ return `| ${i} | **${s.name}** | \`${s.contract_address||'N/A'}\` | ${N(s.alpha_score)} | ${s.phase||'N/A'} | ${sign(s.whale_delta)} | ${sign(s.dolphin_delta)} | ${s.market_cap_now||'N/A'} | ${startMC} | ${signalTime} | ${N(s.score_safety)} | ${risk} | ${dexLink(s.contract_address)} |`;
63
63
  };
64
64
 
65
- const tableHeader = `| # | Token | Contract Address (CA) | Score | Phase | Whale Ξ” | Dolphin Ξ” | MC Now | Start MC | Signal Date | Safety | Risk | Chart | Buy |
66
- |---|-------|----------------------|-------|-------|---------|-----------|--------|----------|-------------|--------|------|-------|-----|`;
65
+ const tableHeader = `| # | Token | CA | Score | Phase | Whale Ξ” | Dolphin Ξ” | MC Now | Start MC | Signal Date | Safety | Risk | Chart |
66
+ |---|-------|-----|-------|-------|---------|-----------|--------|----------|-------------|--------|------|-------|`;
67
67
 
68
68
  let out = [];
69
69
 
@@ -82,7 +82,7 @@ function formatAlpha(data) {
82
82
  early.forEach((s, i) => out.push(tableRow(s, i+1)));
83
83
  out.push(``);
84
84
  out.push(`**Full CA for copy-paste:**`);
85
- early.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${jupLink(s.contract_address)}`));
85
+ early.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${dexLink(s.contract_address)}`))
86
86
  out.push(``);
87
87
  }
88
88
 
@@ -93,7 +93,7 @@ function formatAlpha(data) {
93
93
  building.forEach((s, i) => out.push(tableRow(s, i+1)));
94
94
  out.push(``);
95
95
  out.push(`**Full CA for copy-paste:**`);
96
- building.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${jupLink(s.contract_address)}`));
96
+ building.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${dexLink(s.contract_address)}`))
97
97
  out.push(``);
98
98
  }
99
99
 
@@ -125,11 +125,11 @@ function formatDivergence(data) {
125
125
  const date = data.fetched_at?.split('T')[0];
126
126
  const byType = data.signals_by_type || {};
127
127
 
128
- const tableHeader = `| # | Token | Contract Address (CA) | Div Score | Confidence | Whale Now→Prev | Dolphin Δ | Price | MC | Detected | Trade |
129
- |---|-------|----------------------|-----------|------------|----------------|-----------|-------|-----|----------|-------|`;
128
+ const tableHeader = `| # | Token | CA | Div Score | Confidence | Whale Now→Prev | Dolphin Δ | Price | MC | Detected | Chart |
129
+ |---|-------|-----|-----------|------------|----------------|-----------|-------|-----|----------|-------|`;
130
130
 
131
131
  const tableRow = (s, i) =>
132
- `| ${i} | **${s.name||'N/A'}** | \`${s.contract_address||'N/A'}\` | ${N(s.divergence_score)} | ${N(s.confidence_pct)}% | ${s.whale_holders_now||'?'}β†’${s.whale_holders_prev||'?'} (+${s.whale_delta||0}) | ${sign(s.dolphin_delta)} | $${s.price_now_usd||'N/A'} | ${s.market_cap_usd||'N/A'} | ${s.detected||'N/A'} | ${jupLink(s.contract_address)} |`;
132
+ `| ${i} | **${s.name||'N/A'}** | \`${s.contract_address||'N/A'}\` | ${N(s.divergence_score)} | ${N(s.confidence_pct)}% | ${s.whale_holders_now||'?'}β†’${s.whale_holders_prev||'?'} (+${s.whale_delta||0}) | ${sign(s.dolphin_delta)} | $${s.price_now_usd||'N/A'} | ${s.market_cap_usd||'N/A'} | ${s.detected||'N/A'} | ${dexLink(s.contract_address)} |`;
133
133
 
134
134
  let out = [];
135
135
  out.push(`## πŸ“Š CryptoIZ Divergence Scanner`);
@@ -166,7 +166,7 @@ function formatDivergence(data) {
166
166
  sigs.forEach((s, i) => out.push(tableRow(s, i+1)));
167
167
  out.push(``);
168
168
  out.push(`**Full CA for copy-paste:**`);
169
- sigs.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${jupLink(s.contract_address)}`));
169
+ sigs.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β†’ ${dexLink(s.contract_address)}`));
170
170
  out.push(``);
171
171
  });
172
172
 
@@ -183,11 +183,11 @@ function formatAccumulation(data) {
183
183
  const tokens = data.tokens || [];
184
184
  const date = data.fetched_at?.split('T')[0];
185
185
 
186
- const tableHeader = `| # | Token | Contract Address (CA) | Composite | Strength | Structure | AccDist | Holder | Market | MC | Price | Trade |
187
- |---|-------|----------------------|-----------|----------|-----------|---------|--------|--------|-----|-------|-------|`;
186
+ const tableHeader = `| # | Token | CA | Composite | Strength | Structure | AccDist | Holder | Market | MC | Price | Chart |
187
+ |---|-------|-----|-----------|----------|-----------|---------|--------|--------|-----|-------|-------|`;
188
188
 
189
189
  const tableRow = (t, i) =>
190
- `| ${i} | **${t.name||'N/A'}** | \`${t.contract_address||'N/A'}\` | **${N(t.score_composite)}** | ${t.accumulation_strength||'N/A'} | ${N(t.score_structure)} | ${N(t.score_accdist)} | ${N(t.score_holder)} | ${N(t.score_market)} | ${t.market_cap_now||'N/A'} | $${t.price_now_usd||'N/A'} | ${jupLink(t.contract_address)} |`;
190
+ `| ${i} | **${t.name||'N/A'}** | \`${t.contract_address||'N/A'}\` | **${N(t.score_composite)}** | ${t.accumulation_strength||'N/A'} | ${N(t.score_structure)} | ${N(t.score_accdist)} | ${N(t.score_holder)} | ${N(t.score_market)} | ${t.market_cap_now||'N/A'} | $${t.price_now_usd||'N/A'} | ${dexLink(t.contract_address)} |`;
191
191
 
192
192
  let out = [];
193
193
  out.push(`## πŸ’° CryptoIZ Accumulation Dashboard`);
@@ -202,7 +202,7 @@ function formatAccumulation(data) {
202
202
  tokens.forEach((t, i) => out.push(tableRow(t, i+1)));
203
203
  out.push(``);
204
204
  out.push(`**Full CA for copy-paste:**`);
205
- tokens.slice(0, 10).forEach(t => out.push(`- **${t.name}:** \`${t.contract_address}\` β†’ ${jupLink(t.contract_address)}`));
205
+ tokens.slice(0, 10).forEach(t => out.push(`- **${t.name}:** \`${t.contract_address}\` β†’ ${dexLink(t.contract_address)}`));
206
206
  out.push(``);
207
207
  out.push(`---`);
208
208
  out.push(`⚠️ *Not financial advice. Always DYOR. Data: [CryptoIZ](https://cryptoiz.org) | @cryptoiz_IDN*`);
@@ -378,7 +378,7 @@ const TOOLS = [
378
378
  // ══════════════════════════════════════════════════════════════════
379
379
  // SERVER
380
380
  // ══════════════════════════════════════════════════════════════════
381
- const server = new Server({ name: 'cryptoiz-mcp', version: '4.2.0' }, { capabilities: { tools: {} } });
381
+ const server = new Server({ name: 'cryptoiz-mcp', version: '4.3.0' }, { capabilities: { tools: {} } });
382
382
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
383
383
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
384
384
  const { name, arguments: args } = request.params;