@dwlf/mcp-server 0.17.1 → 0.18.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-data.d.ts","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAE3D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"market-data.d.ts","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAE3D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,QAmYnB"}
|
|
@@ -2,7 +2,12 @@ import { z } from 'zod';
|
|
|
2
2
|
import { normalizeSymbol } from '../client.js';
|
|
3
3
|
export function registerMarketDataTools(server, client) {
|
|
4
4
|
// 1. Get OHLCV candle data
|
|
5
|
-
server.tool('dwlf_get_market_data', 'Get OHLCV candle data for a trading symbol. Returns open, high, low, close, volume over time.'
|
|
5
|
+
server.tool('dwlf_get_market_data', 'Get OHLCV candle data for a trading symbol. Returns open, high, low, close, volume over time. ' +
|
|
6
|
+
'⚠️ Returns 403 for external API-key callers — raw candles are JWT-only (Twelve Data licensing). ' +
|
|
7
|
+
'If you hit a 403, use `dwlf_get_price_picture(symbol, days)` for a pivot-based price narrative, ' +
|
|
8
|
+
'or `dwlf_get_events(symbol, timeframe="1d", days=N)` filtered to cycle pivots / swing points / MA crosses / S&R levels — ' +
|
|
9
|
+
'each event carries the price at its date and together they reconstruct price action without raw bars. ' +
|
|
10
|
+
'Reach for this tool only when you genuinely need bar-by-bar resolution (e.g. "did price touch $X intra-day on date D").', {
|
|
6
11
|
symbol: z
|
|
7
12
|
.string()
|
|
8
13
|
.describe('Trading symbol — accepts BTC, BTC/USD, BTC-USD, BTCUSD, or stock tickers like AAPL, TSLA'),
|
|
@@ -86,7 +91,10 @@ export function registerMarketDataTools(server, client) {
|
|
|
86
91
|
server.tool('dwlf_get_events', 'Get indicator events (cycle lows/highs, crossovers, breakouts, divergences, etc.). ' +
|
|
87
92
|
'Filter by a single `symbol` or a `symbols` watchlist, by `type` (e.g. `cycle.low.confirmed`), ' +
|
|
88
93
|
'by `timeframe` (1d / 4h / 1h — without this the response is dominated by hourly noise), ' +
|
|
89
|
-
'and by time window via `days` or explicit `fromDate` / `toDate`.'
|
|
94
|
+
'and by time window via `days` or explicit `fromDate` / `toDate`. ' +
|
|
95
|
+
'💡 For accounts without raw OHLC access (most API-key callers), this is the canonical way to reconstruct price action: ' +
|
|
96
|
+
'cycle pivots, swing points, MA/EMA crosses, S&R level fires and trendline breaks each carry the price at the event date. ' +
|
|
97
|
+
'For a single-call summary across all those types, use `dwlf_get_price_picture` instead.', {
|
|
90
98
|
symbol: z
|
|
91
99
|
.string()
|
|
92
100
|
.optional()
|
|
@@ -174,5 +182,165 @@ export function registerMarketDataTools(server, client) {
|
|
|
174
182
|
};
|
|
175
183
|
}
|
|
176
184
|
});
|
|
185
|
+
// 5. Get a chronological price picture from indicator events.
|
|
186
|
+
//
|
|
187
|
+
// Designed as the agent-friendly alternative to raw candle data for callers who
|
|
188
|
+
// can't access `/market-data` (API-key auth is denied raw OHLC). Aggregates the
|
|
189
|
+
// price-meaningful event types — cycle pivots, swing points, MA/EMA crosses,
|
|
190
|
+
// S&R level fires, trendline breaks, bollinger breaks — into a single
|
|
191
|
+
// chronological narrative with date + price + label per row.
|
|
192
|
+
//
|
|
193
|
+
// Rationale: most agent questions ("is BTC trending up?", "where are recent
|
|
194
|
+
// supports?", "did the strategy's entry conditions exist?") are answered better
|
|
195
|
+
// by structural pivots than by raw bars. A 6-line pivot summary is more useful
|
|
196
|
+
// than 60 raw daily candles for narrative context, and we already have the data.
|
|
197
|
+
server.tool('dwlf_get_price_picture', 'Aggregate the price-meaningful indicator events for a symbol into a chronological narrative — ' +
|
|
198
|
+
'cycle pivots, swing points, MA/EMA crosses, S&R level fires, trendline breaks, bollinger breaks. ' +
|
|
199
|
+
'Each row carries date + price (or level) + a human-readable label. ' +
|
|
200
|
+
'Use this when you need structural price context for a symbol but do not have raw OHLC access, ' +
|
|
201
|
+
'or when you want a clean one-call summary instead of stitching together multiple `dwlf_get_events` queries. ' +
|
|
202
|
+
'Returns events sorted newest-first.', {
|
|
203
|
+
symbol: z
|
|
204
|
+
.string()
|
|
205
|
+
.describe('Trading symbol — accepts BTC, BTC/USD, BTC-USD, BTCUSD, or stock tickers like AAPL, TSLA'),
|
|
206
|
+
days: z
|
|
207
|
+
.number()
|
|
208
|
+
.optional()
|
|
209
|
+
.describe('How many days back to include (default: 90). Smaller = tighter narrative; larger = longer-term structural view.'),
|
|
210
|
+
timeframe: z
|
|
211
|
+
.enum(['1w', '1d', '4h', '1h'])
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('Timeframe of events to include (default: 1d). Use 1w for weekly structural pivots only.'),
|
|
214
|
+
limit: z
|
|
215
|
+
.number()
|
|
216
|
+
.optional()
|
|
217
|
+
.describe('Max events to return (default: 50). Most useful narratives fit in 20-40 rows.'),
|
|
218
|
+
}, async ({ symbol, days, timeframe, limit }) => {
|
|
219
|
+
try {
|
|
220
|
+
const sym = normalizeSymbol(symbol);
|
|
221
|
+
const tf = timeframe ?? '1d';
|
|
222
|
+
const lookback = days ?? 90;
|
|
223
|
+
const cap = limit ?? 50;
|
|
224
|
+
// Single events fetch — we filter to the price-meaningful types client-side
|
|
225
|
+
// so we don't need N round-trips. Use a generous backend limit so we don't
|
|
226
|
+
// lose newer events behind noise from intermediate dates.
|
|
227
|
+
const data = await client.get('/events', {
|
|
228
|
+
symbol: sym,
|
|
229
|
+
timeframe: tf,
|
|
230
|
+
days: lookback,
|
|
231
|
+
limit: 500,
|
|
232
|
+
});
|
|
233
|
+
const PRICE_MEANINGFUL_TYPES = new Set([
|
|
234
|
+
// Cycle pivots — the most structurally meaningful events
|
|
235
|
+
'cycle.low.confirmed',
|
|
236
|
+
'cycle.high.confirmed',
|
|
237
|
+
'cycle.low.higher_low',
|
|
238
|
+
'cycle.low.lower_low',
|
|
239
|
+
'cycle.high.higher_high',
|
|
240
|
+
'cycle.high.lower_high',
|
|
241
|
+
// Swing structure
|
|
242
|
+
'higher_low',
|
|
243
|
+
'lower_low',
|
|
244
|
+
'higher_high',
|
|
245
|
+
'lower_high',
|
|
246
|
+
// Swing breaks/sweeps — for stop-runs and structural shifts
|
|
247
|
+
'swing_low_break',
|
|
248
|
+
'swing_low_sweep',
|
|
249
|
+
'swing_high_break',
|
|
250
|
+
'swing_high_sweep',
|
|
251
|
+
// MA / EMA crosses — price-tagged trend changes
|
|
252
|
+
'sma.cross.above',
|
|
253
|
+
'sma.cross.below',
|
|
254
|
+
'ema.cross.above',
|
|
255
|
+
'ema.cross.below',
|
|
256
|
+
// Bollinger band breaks
|
|
257
|
+
'bollinger.break.aboveUpper',
|
|
258
|
+
'bollinger.break.belowLower',
|
|
259
|
+
// Support / resistance levels (carry `level` not `price`)
|
|
260
|
+
'supportResistance.support.level',
|
|
261
|
+
'supportResistance.resistance.level',
|
|
262
|
+
// Trendline breaks
|
|
263
|
+
'trendline_break_bullish',
|
|
264
|
+
'trendline_break_bearish',
|
|
265
|
+
'trendline_breach_bullish',
|
|
266
|
+
'trendline_breach_bearish',
|
|
267
|
+
]);
|
|
268
|
+
const events = Array.isArray(data?.events) ? data.events : [];
|
|
269
|
+
const narrative = events
|
|
270
|
+
.filter((e) => PRICE_MEANINGFUL_TYPES.has(String(e.eventType ?? '')))
|
|
271
|
+
.map((e) => {
|
|
272
|
+
const eventType = String(e.eventType ?? '');
|
|
273
|
+
const price = e.price ?? e.level ?? null;
|
|
274
|
+
// Pick a useful label per category — keeps the row scannable.
|
|
275
|
+
let label = eventType;
|
|
276
|
+
if (eventType.startsWith('cycle.')) {
|
|
277
|
+
// Handles cycle.low.* AND cycle.high.* symmetrically (both lows and
|
|
278
|
+
// highs carry the same totalScore field). Earlier version checked
|
|
279
|
+
// `cycle.low` only and silently dropped the score annotation on
|
|
280
|
+
// cycle highs — flagged by bugbot in the PR review.
|
|
281
|
+
label = e.totalScore ? `${eventType} (score ${e.totalScore})` : eventType;
|
|
282
|
+
}
|
|
283
|
+
else if (eventType.startsWith('sma.cross') || eventType.startsWith('ema.cross')) {
|
|
284
|
+
// sortKey usually contains the length, e.g. "2026-05-22#sma.cross.below#length=50"
|
|
285
|
+
const lengthMatch = String(e.sortKey ?? '').match(/length=(\d+)/);
|
|
286
|
+
label = lengthMatch ? `${eventType}(${lengthMatch[1]})` : eventType;
|
|
287
|
+
}
|
|
288
|
+
else if (eventType.startsWith('supportResistance')) {
|
|
289
|
+
// Be precise with the dotted segments — both event types share the
|
|
290
|
+
// "supportResistance" prefix which itself contains the substring
|
|
291
|
+
// "support", so a naive `.includes('support')` is true for BOTH
|
|
292
|
+
// and silently mislabels resistance events as support. Flagged by
|
|
293
|
+
// bugbot in PR#33.
|
|
294
|
+
label = eventType.includes('.support.') ? 'support level' : 'resistance level';
|
|
295
|
+
}
|
|
296
|
+
else if (eventType.startsWith('swing_')) {
|
|
297
|
+
label = e.swingType ? `${eventType} (${e.swingType})` : eventType;
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
date: e.date ?? null,
|
|
301
|
+
eventType,
|
|
302
|
+
label,
|
|
303
|
+
price: price !== null && price !== undefined ? Number(price) : null,
|
|
304
|
+
timeframe: e.timeframe ?? tf,
|
|
305
|
+
};
|
|
306
|
+
})
|
|
307
|
+
.sort((a, b) => {
|
|
308
|
+
// newest first; fall back to string compare if either date missing.
|
|
309
|
+
const dateA = String(a.date ?? '');
|
|
310
|
+
const dateB = String(b.date ?? '');
|
|
311
|
+
return dateA > dateB ? -1 : dateA < dateB ? 1 : 0;
|
|
312
|
+
})
|
|
313
|
+
.slice(0, cap);
|
|
314
|
+
return {
|
|
315
|
+
content: [
|
|
316
|
+
{
|
|
317
|
+
type: 'text',
|
|
318
|
+
text: JSON.stringify({
|
|
319
|
+
symbol: sym,
|
|
320
|
+
timeframe: tf,
|
|
321
|
+
days: lookback,
|
|
322
|
+
count: narrative.length,
|
|
323
|
+
narrative,
|
|
324
|
+
agentHints: {
|
|
325
|
+
interpretation: 'Read top-to-bottom for recent-to-older. Cycle pivots (cycle.low.confirmed / cycle.high.confirmed) anchor the structural narrative. Higher/lower lows-and-highs describe trend shape. MA crosses tag trend regime changes. S&R levels are static price magnets. Swing sweeps mark stop-runs / liquidity events. Trendline breaks mark structural inflection.',
|
|
326
|
+
limitations: 'This is a pivot-based summary — it cannot tell you intra-day movement, exact bar closes, or volume. For those you need raw OHLC via dwlf_get_market_data (JWT-only).',
|
|
327
|
+
},
|
|
328
|
+
}, null, 2),
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
return {
|
|
335
|
+
content: [
|
|
336
|
+
{
|
|
337
|
+
type: 'text',
|
|
338
|
+
text: `Error fetching price picture for ${symbol}: ${error instanceof Error ? error.message : String(error)}`,
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
isError: true,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
});
|
|
177
345
|
}
|
|
178
346
|
//# sourceMappingURL=market-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-data.js","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAc,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,MAAkB;IAElB,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB
|
|
1
|
+
{"version":3,"file":"market-data.js","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAc,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,MAAkB;IAElB,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,gGAAgG;QAC9F,kGAAkG;QAClG,kGAAkG;QAClG,2HAA2H;QAC3H,wGAAwG;QACxG,yHAAyH,EAC3H;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,0FAA0F,CAAC;QACvG,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aACxB,QAAQ,EAAE;aACV,QAAQ,CAAC,+BAA+B,CAAC;QAC5C,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,EAAE;gBACnD,QAAQ;gBACR,KAAK;aACN,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kCAAkC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC5G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4GAA4G,EAC5G,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC1F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,+HAA+H,EAC/H;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,0FAA0F,CAAC;KACxG,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yCAAyC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACnH;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,qFAAqF;QACnF,gGAAgG;QAChG,0FAA0F;QAC1F,mEAAmE;QACnE,yHAAyH;QACzH,2HAA2H;QAC3H,yFAAyF,EAC3F;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;QAC1G,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,gFAAgF;YAC9E,0FAA0F,CAC7F;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,4EAA4E;YAC1E,sCAAsC,CACzC;QACH,SAAS,EAAE,CAAC;aACT,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aAC9B,QAAQ,EAAE;aACV,QAAQ,CACP,gFAAgF;YAC9E,yEAAyE;YACzE,gFAAgF,CACnF;QACH,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6EAA6E,CAAC;QAC1F,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uFAAuF,CAAC;QACpG,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;QACrE,eAAe,EAAE,CAAC;aACf,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,6FAA6F,CAAC;QAC1G,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;QACxD,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,yEAAyE;YACvE,iFAAiF;YACjF,wEAAwE,CAC3E;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sFAAsF;YACpF,4FAA4F,CAC/F;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;QACvH,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClD,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;gBACvC,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,OAAO;gBAChB,IAAI;gBACJ,SAAS;gBACT,IAAI;gBACJ,QAAQ;gBACR,MAAM;gBACN,sEAAsE;gBACtE,eAAe,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;gBACpF,KAAK;gBACL,aAAa;gBACb,SAAS;aACV,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACzF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8DAA8D;IAC9D,EAAE;IACF,gFAAgF;IAChF,gFAAgF;IAChF,6EAA6E;IAC7E,sEAAsE;IACtE,6DAA6D;IAC7D,EAAE;IACF,4EAA4E;IAC5E,gFAAgF;IAChF,+EAA+E;IAC/E,iFAAiF;IACjF,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,gGAAgG;QAC9F,mGAAmG;QACnG,qEAAqE;QACrE,gGAAgG;QAChG,8GAA8G;QAC9G,qCAAqC,EACvC;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,0FAA0F,CAAC;QACvG,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iHAAiH,CAAC;QAC9H,SAAS,EAAE,CAAC;aACT,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;aAC9B,QAAQ,EAAE;aACV,QAAQ,CAAC,yFAAyF,CAAC;QACtG,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+EAA+E,CAAC;KAC7F,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;YAExB,4EAA4E;YAC5E,2EAA2E;YAC3E,0DAA0D;YAC1D,MAAM,IAAI,GAAQ,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC5C,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;gBACrC,yDAAyD;gBACzD,qBAAqB;gBACrB,sBAAsB;gBACtB,sBAAsB;gBACtB,qBAAqB;gBACrB,wBAAwB;gBACxB,uBAAuB;gBACvB,kBAAkB;gBAClB,YAAY;gBACZ,WAAW;gBACX,aAAa;gBACb,YAAY;gBACZ,4DAA4D;gBAC5D,iBAAiB;gBACjB,iBAAiB;gBACjB,kBAAkB;gBAClB,kBAAkB;gBAClB,gDAAgD;gBAChD,iBAAiB;gBACjB,iBAAiB;gBACjB,iBAAiB;gBACjB,iBAAiB;gBACjB,wBAAwB;gBACxB,4BAA4B;gBAC5B,4BAA4B;gBAC5B,0DAA0D;gBAC1D,iCAAiC;gBACjC,oCAAoC;gBACpC,mBAAmB;gBACnB,yBAAyB;gBACzB,yBAAyB;gBACzB,0BAA0B;gBAC1B,0BAA0B;aAC3B,CAAC,CAAC;YAEH,MAAM,MAAM,GAA+B,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAE1F,MAAM,SAAS,GAAG,MAAM;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;iBACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;gBACzC,8DAA8D;gBAC9D,IAAI,KAAK,GAAG,SAAS,CAAC;gBACtB,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,oEAAoE;oBACpE,kEAAkE;oBAClE,gEAAgE;oBAChE,oDAAoD;oBACpD,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,WAAW,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,CAAC;qBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClF,mFAAmF;oBACnF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAClE,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtE,CAAC;qBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACrD,mEAAmE;oBACnE,iEAAiE;oBACjE,gEAAgE;oBAChE,kEAAkE;oBAClE,mBAAmB;oBACnB,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC;gBACjF,CAAC;qBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1C,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;oBACpB,SAAS;oBACT,KAAK;oBACL,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;oBACnE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;iBAC7B,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACb,oEAAoE;gBACpE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACnC,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEjB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,MAAM,EAAE,GAAG;4BACX,SAAS,EAAE,EAAE;4BACb,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,SAAS,CAAC,MAAM;4BACvB,SAAS;4BACT,UAAU,EAAE;gCACV,cAAc,EACZ,6VAA6V;gCAC/V,WAAW,EACT,sKAAsK;6BACzK;yBACF,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC9G;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dwlf/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "MCP server for DWLF market analysis platform — exposes market data, indicators, signals, strategies, backtests, portfolio, trade journal, and more as AI-accessible tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|