cryptoiz-mcp 4.1.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.
- package/package.json +1 -1
- package/src/index.js +18 -15
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -36,7 +36,8 @@ async function payAndFetch(url) {
|
|
|
36
36
|
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
|
-
const
|
|
39
|
+
const dexLink = ca => ca ? `[Chart π](https://dexscreener.com/solana/${ca})` : 'N/A';
|
|
40
|
+
|
|
40
41
|
|
|
41
42
|
// ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
42
43
|
// ALPHA SCANNER β Markdown Table Format
|
|
@@ -56,11 +57,13 @@ function formatAlpha(data) {
|
|
|
56
57
|
const risk = parseFloat(s.risk_liquidity_pct||0) > 0 || parseFloat(s.risk_trap_pct||0) > 0
|
|
57
58
|
? `β οΈ Liq:${N(s.risk_liquidity_pct)}% Trap:${N(s.risk_trap_pct)}%`
|
|
58
59
|
: 'β
Clear';
|
|
59
|
-
|
|
60
|
+
const startMC = s.market_cap_when_signal_formed ? s.market_cap_when_signal_formed : 'N/A';
|
|
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)} |`;
|
|
60
63
|
};
|
|
61
64
|
|
|
62
|
-
const tableHeader = `| # | Token |
|
|
63
|
-
|
|
65
|
+
const tableHeader = `| # | Token | CA | Score | Phase | Whale Ξ | Dolphin Ξ | MC Now | Start MC | Signal Date | Safety | Risk | Chart |
|
|
66
|
+
|---|-------|-----|-------|-------|---------|-----------|--------|----------|-------------|--------|------|-------|`;
|
|
64
67
|
|
|
65
68
|
let out = [];
|
|
66
69
|
|
|
@@ -79,7 +82,7 @@ function formatAlpha(data) {
|
|
|
79
82
|
early.forEach((s, i) => out.push(tableRow(s, i+1)));
|
|
80
83
|
out.push(``);
|
|
81
84
|
out.push(`**Full CA for copy-paste:**`);
|
|
82
|
-
early.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${
|
|
85
|
+
early.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${dexLink(s.contract_address)}`))
|
|
83
86
|
out.push(``);
|
|
84
87
|
}
|
|
85
88
|
|
|
@@ -90,7 +93,7 @@ function formatAlpha(data) {
|
|
|
90
93
|
building.forEach((s, i) => out.push(tableRow(s, i+1)));
|
|
91
94
|
out.push(``);
|
|
92
95
|
out.push(`**Full CA for copy-paste:**`);
|
|
93
|
-
building.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${
|
|
96
|
+
building.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${dexLink(s.contract_address)}`))
|
|
94
97
|
out.push(``);
|
|
95
98
|
}
|
|
96
99
|
|
|
@@ -122,11 +125,11 @@ function formatDivergence(data) {
|
|
|
122
125
|
const date = data.fetched_at?.split('T')[0];
|
|
123
126
|
const byType = data.signals_by_type || {};
|
|
124
127
|
|
|
125
|
-
const tableHeader = `| # | Token |
|
|
126
|
-
|
|
128
|
+
const tableHeader = `| # | Token | CA | Div Score | Confidence | Whale NowβPrev | Dolphin Ξ | Price | MC | Detected | Chart |
|
|
129
|
+
|---|-------|-----|-----------|------------|----------------|-----------|-------|-----|----------|-------|`;
|
|
127
130
|
|
|
128
131
|
const tableRow = (s, i) =>
|
|
129
|
-
`| ${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'} | ${
|
|
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)} |`;
|
|
130
133
|
|
|
131
134
|
let out = [];
|
|
132
135
|
out.push(`## π CryptoIZ Divergence Scanner`);
|
|
@@ -163,7 +166,7 @@ function formatDivergence(data) {
|
|
|
163
166
|
sigs.forEach((s, i) => out.push(tableRow(s, i+1)));
|
|
164
167
|
out.push(``);
|
|
165
168
|
out.push(`**Full CA for copy-paste:**`);
|
|
166
|
-
sigs.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${
|
|
169
|
+
sigs.forEach(s => out.push(`- **${s.name}:** \`${s.contract_address}\` β ${dexLink(s.contract_address)}`));
|
|
167
170
|
out.push(``);
|
|
168
171
|
});
|
|
169
172
|
|
|
@@ -180,11 +183,11 @@ function formatAccumulation(data) {
|
|
|
180
183
|
const tokens = data.tokens || [];
|
|
181
184
|
const date = data.fetched_at?.split('T')[0];
|
|
182
185
|
|
|
183
|
-
const tableHeader = `| # | Token |
|
|
184
|
-
|
|
186
|
+
const tableHeader = `| # | Token | CA | Composite | Strength | Structure | AccDist | Holder | Market | MC | Price | Chart |
|
|
187
|
+
|---|-------|-----|-----------|----------|-----------|---------|--------|--------|-----|-------|-------|`;
|
|
185
188
|
|
|
186
189
|
const tableRow = (t, i) =>
|
|
187
|
-
`| ${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'} | ${
|
|
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)} |`;
|
|
188
191
|
|
|
189
192
|
let out = [];
|
|
190
193
|
out.push(`## π° CryptoIZ Accumulation Dashboard`);
|
|
@@ -199,7 +202,7 @@ function formatAccumulation(data) {
|
|
|
199
202
|
tokens.forEach((t, i) => out.push(tableRow(t, i+1)));
|
|
200
203
|
out.push(``);
|
|
201
204
|
out.push(`**Full CA for copy-paste:**`);
|
|
202
|
-
tokens.slice(0, 10).forEach(t => out.push(`- **${t.name}:** \`${t.contract_address}\` β ${
|
|
205
|
+
tokens.slice(0, 10).forEach(t => out.push(`- **${t.name}:** \`${t.contract_address}\` β ${dexLink(t.contract_address)}`));
|
|
203
206
|
out.push(``);
|
|
204
207
|
out.push(`---`);
|
|
205
208
|
out.push(`β οΈ *Not financial advice. Always DYOR. Data: [CryptoIZ](https://cryptoiz.org) | @cryptoiz_IDN*`);
|
|
@@ -375,7 +378,7 @@ const TOOLS = [
|
|
|
375
378
|
// ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
376
379
|
// SERVER
|
|
377
380
|
// ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
378
|
-
const server = new Server({ name: 'cryptoiz-mcp', version: '4.
|
|
381
|
+
const server = new Server({ name: 'cryptoiz-mcp', version: '4.3.0' }, { capabilities: { tools: {} } });
|
|
379
382
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
|
380
383
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
381
384
|
const { name, arguments: args } = request.params;
|