@dwlf/mcp-server 0.17.1 → 0.18.1

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,QA8MnB"}
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,QA8XnB"}
@@ -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,159 @@ 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
+ // NB: supportResistance.{support,resistance}.level events are intentionally
260
+ // EXCLUDED here. They re-fire every cron run with the same level value, so
261
+ // a 60-day window dumps ~120 duplicate rows that crowd out the actually
262
+ // narrative-worthy events (cycle pivots, swing breaks, etc.) under the
263
+ // limit cap. Use dwlf_get_support_resistance for current S&R levels.
264
+ // Trendline breaks
265
+ 'trendline_break_bullish',
266
+ 'trendline_break_bearish',
267
+ 'trendline_breach_bullish',
268
+ 'trendline_breach_bearish',
269
+ ]);
270
+ const events = Array.isArray(data?.events) ? data.events : [];
271
+ const narrative = events
272
+ .filter((e) => PRICE_MEANINGFUL_TYPES.has(String(e.eventType ?? '')))
273
+ .map((e) => {
274
+ const eventType = String(e.eventType ?? '');
275
+ const price = e.price ?? e.level ?? null;
276
+ // Pick a useful label per category — keeps the row scannable.
277
+ let label = eventType;
278
+ if (eventType.startsWith('cycle.')) {
279
+ // Handles cycle.low.* AND cycle.high.* symmetrically (both lows and
280
+ // highs carry the same totalScore field). Earlier version checked
281
+ // `cycle.low` only and silently dropped the score annotation on
282
+ // cycle highs — flagged by bugbot in the PR review.
283
+ label = e.totalScore ? `${eventType} (score ${e.totalScore})` : eventType;
284
+ }
285
+ else if (eventType.startsWith('sma.cross') || eventType.startsWith('ema.cross')) {
286
+ // sortKey usually contains the length, e.g. "2026-05-22#sma.cross.below#length=50"
287
+ const lengthMatch = String(e.sortKey ?? '').match(/length=(\d+)/);
288
+ label = lengthMatch ? `${eventType}(${lengthMatch[1]})` : eventType;
289
+ }
290
+ else if (eventType.startsWith('swing_')) {
291
+ label = e.swingType ? `${eventType} (${e.swingType})` : eventType;
292
+ }
293
+ return {
294
+ date: e.date ?? null,
295
+ eventType,
296
+ label,
297
+ price: price !== null && price !== undefined ? Number(price) : null,
298
+ timeframe: e.timeframe ?? tf,
299
+ };
300
+ })
301
+ .sort((a, b) => {
302
+ // newest first; fall back to string compare if either date missing.
303
+ const dateA = String(a.date ?? '');
304
+ const dateB = String(b.date ?? '');
305
+ return dateA > dateB ? -1 : dateA < dateB ? 1 : 0;
306
+ })
307
+ .slice(0, cap);
308
+ return {
309
+ content: [
310
+ {
311
+ type: 'text',
312
+ text: JSON.stringify({
313
+ symbol: sym,
314
+ timeframe: tf,
315
+ days: lookback,
316
+ count: narrative.length,
317
+ narrative,
318
+ agentHints: {
319
+ 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.',
320
+ 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).',
321
+ },
322
+ }, null, 2),
323
+ },
324
+ ],
325
+ };
326
+ }
327
+ catch (error) {
328
+ return {
329
+ content: [
330
+ {
331
+ type: 'text',
332
+ text: `Error fetching price picture for ${symbol}: ${error instanceof Error ? error.message : String(error)}`,
333
+ },
334
+ ],
335
+ isError: true,
336
+ };
337
+ }
338
+ });
177
339
  }
178
340
  //# sourceMappingURL=market-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"market-data.js","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market-data.js","sourceRoot":"","sources":["../../src/tools/market-data.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dwlf/mcp-server",
3
- "version": "0.17.1",
3
+ "version": "0.18.1",
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",