nodebench-mcp 1.0.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 (65) hide show
  1. package/README.md +237 -0
  2. package/dist/__tests__/tools.test.d.ts +1 -0
  3. package/dist/__tests__/tools.test.js +402 -0
  4. package/dist/__tests__/tools.test.js.map +1 -0
  5. package/dist/db.d.ts +4 -0
  6. package/dist/db.js +198 -0
  7. package/dist/db.js.map +1 -0
  8. package/dist/index.d.ts +19 -0
  9. package/dist/index.js +237 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/tools/documentTools.d.ts +5 -0
  12. package/dist/tools/documentTools.js +524 -0
  13. package/dist/tools/documentTools.js.map +1 -0
  14. package/dist/tools/documentationTools.d.ts +12 -0
  15. package/dist/tools/documentationTools.js +647 -0
  16. package/dist/tools/documentationTools.js.map +1 -0
  17. package/dist/tools/evalTools.d.ts +6 -0
  18. package/dist/tools/evalTools.js +335 -0
  19. package/dist/tools/evalTools.js.map +1 -0
  20. package/dist/tools/financialTools.d.ts +10 -0
  21. package/dist/tools/financialTools.js +403 -0
  22. package/dist/tools/financialTools.js.map +1 -0
  23. package/dist/tools/flywheelTools.d.ts +6 -0
  24. package/dist/tools/flywheelTools.js +366 -0
  25. package/dist/tools/flywheelTools.js.map +1 -0
  26. package/dist/tools/githubTools.d.ts +12 -0
  27. package/dist/tools/githubTools.js +432 -0
  28. package/dist/tools/githubTools.js.map +1 -0
  29. package/dist/tools/learningTools.d.ts +6 -0
  30. package/dist/tools/learningTools.js +199 -0
  31. package/dist/tools/learningTools.js.map +1 -0
  32. package/dist/tools/memoryTools.d.ts +5 -0
  33. package/dist/tools/memoryTools.js +137 -0
  34. package/dist/tools/memoryTools.js.map +1 -0
  35. package/dist/tools/metaTools.d.ts +7 -0
  36. package/dist/tools/metaTools.js +837 -0
  37. package/dist/tools/metaTools.js.map +1 -0
  38. package/dist/tools/planningTools.d.ts +5 -0
  39. package/dist/tools/planningTools.js +147 -0
  40. package/dist/tools/planningTools.js.map +1 -0
  41. package/dist/tools/qualityGateTools.d.ts +6 -0
  42. package/dist/tools/qualityGateTools.js +347 -0
  43. package/dist/tools/qualityGateTools.js.map +1 -0
  44. package/dist/tools/reconTools.d.ts +8 -0
  45. package/dist/tools/reconTools.js +729 -0
  46. package/dist/tools/reconTools.js.map +1 -0
  47. package/dist/tools/searchTools.d.ts +5 -0
  48. package/dist/tools/searchTools.js +145 -0
  49. package/dist/tools/searchTools.js.map +1 -0
  50. package/dist/tools/uiCaptureTools.d.ts +8 -0
  51. package/dist/tools/uiCaptureTools.js +339 -0
  52. package/dist/tools/uiCaptureTools.js.map +1 -0
  53. package/dist/tools/verificationTools.d.ts +6 -0
  54. package/dist/tools/verificationTools.js +472 -0
  55. package/dist/tools/verificationTools.js.map +1 -0
  56. package/dist/tools/visionTools.d.ts +12 -0
  57. package/dist/tools/visionTools.js +553 -0
  58. package/dist/tools/visionTools.js.map +1 -0
  59. package/dist/tools/webTools.d.ts +12 -0
  60. package/dist/tools/webTools.js +443 -0
  61. package/dist/tools/webTools.js.map +1 -0
  62. package/dist/types.d.ts +16 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +66 -0
@@ -0,0 +1,403 @@
1
+ /**
2
+ * Financial data tools — uses only built-in `fetch()` (no npm packages).
3
+ *
4
+ * Data sources:
5
+ * - Stooq (equity / crypto CSV quotes & history)
6
+ * - Yahoo Finance (quote, fundamentals, news)
7
+ * - World Bank (GDP, inflation)
8
+ */
9
+ // ─── helpers ────────────────────────────────────────────────────────────────
10
+ const TIMEOUT_MS = 15_000;
11
+ function nowIso() {
12
+ return new Date().toISOString();
13
+ }
14
+ function timeoutSignal(ms = TIMEOUT_MS) {
15
+ const controller = new AbortController();
16
+ setTimeout(() => controller.abort(), ms);
17
+ return controller.signal;
18
+ }
19
+ function parseStooqCsv(text) {
20
+ const lines = text.trim().split(/\r?\n/);
21
+ if (lines.length < 2)
22
+ return {};
23
+ const headers = lines[0].split(",").map((h) => h.trim());
24
+ const values = lines[1].split(",").map((v) => v.trim());
25
+ const obj = {};
26
+ for (let i = 0; i < headers.length; i++) {
27
+ const val = values[i] ?? null;
28
+ obj[headers[i]] = val === "N/D" ? null : val;
29
+ }
30
+ return obj;
31
+ }
32
+ function stooqSymbol(symbol) {
33
+ return symbol.includes(".") ? symbol.toLowerCase() : `${symbol.toLowerCase()}.us`;
34
+ }
35
+ async function fetchStooqQuote(symbol) {
36
+ const s = stooqSymbol(symbol);
37
+ const url = `https://stooq.com/q/l/?s=${s}&f=sd2t2ohlcv&h=1&e=csv`;
38
+ const res = await fetch(url, { signal: timeoutSignal() });
39
+ if (!res.ok)
40
+ throw new Error(`Stooq HTTP ${res.status}`);
41
+ const text = await res.text();
42
+ if (text.includes("Exceeded the daily hits limit")) {
43
+ throw new Error("Stooq daily rate limit exceeded");
44
+ }
45
+ const parsed = parseStooqCsv(text);
46
+ return {
47
+ symbol: parsed["Symbol"] ?? symbol.toUpperCase(),
48
+ date: parsed["Date"] ?? null,
49
+ time: parsed["Time"] ?? null,
50
+ open: parsed["Open"] ?? null,
51
+ high: parsed["High"] ?? null,
52
+ low: parsed["Low"] ?? null,
53
+ close: parsed["Close"] ?? null,
54
+ volume: parsed["Volume"] ?? null,
55
+ };
56
+ }
57
+ async function fetchYahooQuote(symbol) {
58
+ const url = `https://query1.finance.yahoo.com/v7/finance/quote?symbols=${encodeURIComponent(symbol)}`;
59
+ const res = await fetch(url, {
60
+ signal: timeoutSignal(),
61
+ headers: {
62
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
63
+ },
64
+ });
65
+ if (!res.ok)
66
+ return null;
67
+ const json = (await res.json());
68
+ const results = json?.quoteResponse?.result;
69
+ if (!Array.isArray(results) || results.length === 0)
70
+ return null;
71
+ return results[0];
72
+ }
73
+ async function fetchWorldBank(country, indicator) {
74
+ const url = `https://api.worldbank.org/v2/country/${encodeURIComponent(country)}/indicator/${encodeURIComponent(indicator)}?format=json&per_page=10`;
75
+ const res = await fetch(url, { signal: timeoutSignal() });
76
+ if (!res.ok)
77
+ throw new Error(`World Bank HTTP ${res.status}`);
78
+ const json = (await res.json());
79
+ const dataPoints = json?.[1];
80
+ if (!Array.isArray(dataPoints)) {
81
+ return { value: null, year: null };
82
+ }
83
+ for (const dp of dataPoints) {
84
+ if (dp.value != null) {
85
+ return { value: dp.value, year: dp.date ?? null };
86
+ }
87
+ }
88
+ return { value: null, year: null };
89
+ }
90
+ // ─── tool implementations ───────────────────────────────────────────────────
91
+ async function equityPriceQuoteHandler(args) {
92
+ const { symbol } = args;
93
+ try {
94
+ try {
95
+ const sq = await fetchStooqQuote(symbol);
96
+ if (sq.close && sq.close !== "N/D") {
97
+ return {
98
+ symbol: sq.symbol, price: Number(sq.close), currency: "USD", marketCap: null,
99
+ dayHigh: sq.high ? Number(sq.high) : null, dayLow: sq.low ? Number(sq.low) : null,
100
+ open: sq.open ? Number(sq.open) : null, volume: sq.volume ? Number(sq.volume) : null,
101
+ source: "stooq", fetchedAt: nowIso(),
102
+ };
103
+ }
104
+ }
105
+ catch { /* fall through to Yahoo */ }
106
+ const yq = await fetchYahooQuote(symbol);
107
+ if (yq) {
108
+ return {
109
+ symbol: yq.symbol ?? symbol.toUpperCase(), price: yq.regularMarketPrice ?? null,
110
+ currency: yq.currency ?? "USD", marketCap: yq.marketCap ?? null,
111
+ dayHigh: yq.regularMarketDayHigh ?? null, dayLow: yq.regularMarketDayLow ?? null,
112
+ open: yq.regularMarketOpen ?? null, volume: yq.regularMarketVolume ?? null,
113
+ source: "yahoo", fetchedAt: nowIso(),
114
+ };
115
+ }
116
+ return { symbol: symbol.toUpperCase(), error: "No data available from any source", fetchedAt: nowIso() };
117
+ }
118
+ catch (err) {
119
+ return { symbol: symbol.toUpperCase(), error: err?.message ?? String(err), fetchedAt: nowIso() };
120
+ }
121
+ }
122
+ async function equityPriceHistoricalHandler(args) {
123
+ const { symbol, start_date, end_date } = args;
124
+ try {
125
+ const s = stooqSymbol(symbol);
126
+ const url = `https://stooq.com/q/d/l/?s=${s}&i=d`;
127
+ const res = await fetch(url, { signal: timeoutSignal() });
128
+ if (!res.ok)
129
+ throw new Error(`Stooq HTTP ${res.status}`);
130
+ const text = await res.text();
131
+ const lines = text.trim().split(/\r?\n/);
132
+ if (lines.length < 2) {
133
+ return { symbol: symbol.toUpperCase(), count: 0, points: [], source: "stooq", fetchedAt: nowIso() };
134
+ }
135
+ const headers = lines[0].split(",").map((h) => h.trim());
136
+ const dateIdx = headers.indexOf("Date");
137
+ const openIdx = headers.indexOf("Open");
138
+ const highIdx = headers.indexOf("High");
139
+ const lowIdx = headers.indexOf("Low");
140
+ const closeIdx = headers.indexOf("Close");
141
+ const volIdx = headers.indexOf("Volume");
142
+ const points = [];
143
+ for (let i = 1; i < lines.length; i++) {
144
+ const cols = lines[i].split(",").map((c) => c.trim());
145
+ const date = cols[dateIdx] ?? "";
146
+ if (!date)
147
+ continue;
148
+ if (start_date && date < start_date)
149
+ continue;
150
+ if (end_date && date > end_date)
151
+ continue;
152
+ const parseNum = (v) => {
153
+ if (!v || v === "N/D")
154
+ return null;
155
+ const n = Number(v);
156
+ return Number.isNaN(n) ? null : n;
157
+ };
158
+ points.push({
159
+ t: date, open: parseNum(cols[openIdx]), high: parseNum(cols[highIdx]),
160
+ low: parseNum(cols[lowIdx]), close: parseNum(cols[closeIdx]), volume: parseNum(cols[volIdx]),
161
+ });
162
+ }
163
+ return { symbol: symbol.toUpperCase(), count: points.length, points, source: "stooq", fetchedAt: nowIso() };
164
+ }
165
+ catch (err) {
166
+ return { symbol: symbol.toUpperCase(), error: err?.message ?? String(err), fetchedAt: nowIso() };
167
+ }
168
+ }
169
+ async function equityFundamentalOverviewHandler(args) {
170
+ const { symbol } = args;
171
+ try {
172
+ const quote = (await equityPriceQuoteHandler({ symbol }));
173
+ let fundamentals = {};
174
+ try {
175
+ const yq = await fetchYahooQuote(symbol);
176
+ if (yq) {
177
+ fundamentals = {
178
+ longName: yq.longName ?? yq.shortName ?? null, sector: yq.sector ?? null,
179
+ industry: yq.industry ?? null, marketCap: yq.marketCap ?? null,
180
+ trailingPE: yq.trailingPE ?? null, forwardPE: yq.forwardPE ?? null,
181
+ dividendYield: yq.dividendYield ?? yq.trailingAnnualDividendYield ?? null,
182
+ fiftyTwoWeekHigh: yq.fiftyTwoWeekHigh ?? null, fiftyTwoWeekLow: yq.fiftyTwoWeekLow ?? null,
183
+ averageVolume: yq.averageDailyVolume3Month ?? null, beta: yq.beta ?? null,
184
+ earningsDate: yq.earningsTimestamp ?? null,
185
+ };
186
+ }
187
+ }
188
+ catch { /* fundamentals unavailable */ }
189
+ return { ...quote, ...fundamentals, fetchedAt: nowIso() };
190
+ }
191
+ catch (err) {
192
+ return { symbol: symbol.toUpperCase(), error: err?.message ?? String(err), fetchedAt: nowIso() };
193
+ }
194
+ }
195
+ function cryptoStooqSymbol(symbol) {
196
+ const base = symbol.replace(/-USD$/i, "").toUpperCase();
197
+ return `${base}.V`;
198
+ }
199
+ function cryptoYahooSymbol(symbol) {
200
+ return symbol.includes("-") ? symbol.toUpperCase() : `${symbol.toUpperCase()}-USD`;
201
+ }
202
+ async function cryptoPriceQuoteHandler(args) {
203
+ const { symbol } = args;
204
+ try {
205
+ try {
206
+ const sq = await fetchStooqQuote(cryptoStooqSymbol(symbol));
207
+ if (sq.close && sq.close !== "N/D") {
208
+ return {
209
+ symbol: symbol.toUpperCase(), price: Number(sq.close), currency: "USD", marketCap: null,
210
+ dayHigh: sq.high ? Number(sq.high) : null, dayLow: sq.low ? Number(sq.low) : null,
211
+ open: sq.open ? Number(sq.open) : null, volume: sq.volume ? Number(sq.volume) : null,
212
+ source: "stooq", fetchedAt: nowIso(),
213
+ };
214
+ }
215
+ }
216
+ catch { /* fall through */ }
217
+ const yq = await fetchYahooQuote(cryptoYahooSymbol(symbol));
218
+ if (yq) {
219
+ return {
220
+ symbol: yq.symbol ?? symbol.toUpperCase(), price: yq.regularMarketPrice ?? null,
221
+ currency: yq.currency ?? "USD", marketCap: yq.marketCap ?? null,
222
+ dayHigh: yq.regularMarketDayHigh ?? null, dayLow: yq.regularMarketDayLow ?? null,
223
+ open: yq.regularMarketOpen ?? null, volume: yq.regularMarketVolume ?? null,
224
+ source: "yahoo", fetchedAt: nowIso(),
225
+ };
226
+ }
227
+ return { symbol: symbol.toUpperCase(), error: "No data available from any source", fetchedAt: nowIso() };
228
+ }
229
+ catch (err) {
230
+ return { symbol: symbol.toUpperCase(), error: err?.message ?? String(err), fetchedAt: nowIso() };
231
+ }
232
+ }
233
+ async function cryptoPriceHistoricalHandler(args) {
234
+ return equityPriceHistoricalHandler({
235
+ symbol: cryptoStooqSymbol(args.symbol),
236
+ start_date: args.start_date,
237
+ end_date: args.end_date,
238
+ });
239
+ }
240
+ async function economyGdpHandler(args) {
241
+ const country = args.country ?? "US";
242
+ try {
243
+ const { value, year } = await fetchWorldBank(country, "NY.GDP.MKTP.CD");
244
+ return { country, value, year, unit: "USD", source: "world_bank", fetchedAt: nowIso() };
245
+ }
246
+ catch (err) {
247
+ return { country, error: err?.message ?? String(err), fetchedAt: nowIso() };
248
+ }
249
+ }
250
+ async function economyInflationHandler(args) {
251
+ const country = args.country ?? "US";
252
+ try {
253
+ const { value, year } = await fetchWorldBank(country, "FP.CPI.TOTL.ZG");
254
+ return { country, value, year, unit: "percent", source: "world_bank", fetchedAt: nowIso() };
255
+ }
256
+ catch (err) {
257
+ return { country, error: err?.message ?? String(err), fetchedAt: nowIso() };
258
+ }
259
+ }
260
+ async function newsCompanyHandler(args) {
261
+ const { symbol, limit = 10 } = args;
262
+ try {
263
+ const urls = [
264
+ `https://query1.finance.yahoo.com/v8/finance/chart/${encodeURIComponent(symbol)}?events=news`,
265
+ `https://query1.finance.yahoo.com/v7/finance/quote?symbols=${encodeURIComponent(symbol)}&fields=messageBoardId`,
266
+ ];
267
+ const headers = {
268
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
269
+ };
270
+ for (const url of urls) {
271
+ try {
272
+ const res = await fetch(url, { signal: timeoutSignal(), headers });
273
+ if (!res.ok)
274
+ continue;
275
+ const json = (await res.json());
276
+ const newsItems = json?.chart?.result?.[0]?.events?.news ?? json?.news ?? [];
277
+ const items = (Array.isArray(newsItems) ? newsItems : Object.values(newsItems))
278
+ .slice(0, limit)
279
+ .map((item) => ({
280
+ title: item.title ?? item.headline ?? null,
281
+ url: item.link ?? item.url ?? null,
282
+ publishedAt: item.providerPublishTime
283
+ ? new Date(item.providerPublishTime * 1000).toISOString()
284
+ : item.publishedAt ?? null,
285
+ source: item.publisher ?? item.source ?? null,
286
+ }));
287
+ if (items.length > 0) {
288
+ return { symbol: symbol.toUpperCase(), count: items.length, items, source: "yahoo", fetchedAt: nowIso() };
289
+ }
290
+ }
291
+ catch { /* try next URL */ }
292
+ }
293
+ return { symbol: symbol.toUpperCase(), count: 0, items: [], note: "Yahoo Finance news endpoint may be rate-limited or blocked", source: "yahoo", fetchedAt: nowIso() };
294
+ }
295
+ catch (err) {
296
+ return { symbol: symbol.toUpperCase(), count: 0, items: [], error: err?.message ?? String(err), fetchedAt: nowIso() };
297
+ }
298
+ }
299
+ async function newsWorldHandler(_args) {
300
+ return { count: 0, items: [], note: "world news requires external news API", source: "none", fetchedAt: nowIso() };
301
+ }
302
+ // ─── tool definitions ───────────────────────────────────────────────────────
303
+ export const financialTools = [
304
+ {
305
+ name: "equity_price_quote",
306
+ description: "Get the latest equity/stock price quote for a given ticker symbol. Tries Stooq first, then Yahoo Finance as fallback.",
307
+ inputSchema: {
308
+ type: "object",
309
+ properties: { symbol: { type: "string", description: "Ticker symbol (e.g. AAPL, MSFT, TSLA)" } },
310
+ required: ["symbol"],
311
+ },
312
+ handler: equityPriceQuoteHandler,
313
+ },
314
+ {
315
+ name: "equity_price_historical",
316
+ description: "Get historical daily OHLCV price data for a given equity ticker. Optionally filter by start/end date (YYYY-MM-DD).",
317
+ inputSchema: {
318
+ type: "object",
319
+ properties: {
320
+ symbol: { type: "string", description: "Ticker symbol (e.g. AAPL, MSFT)" },
321
+ start_date: { type: "string", description: "Start date in YYYY-MM-DD format (inclusive)" },
322
+ end_date: { type: "string", description: "End date in YYYY-MM-DD format (inclusive)" },
323
+ },
324
+ required: ["symbol"],
325
+ },
326
+ handler: equityPriceHistoricalHandler,
327
+ },
328
+ {
329
+ name: "equity_fundamental_overview",
330
+ description: "Get a fundamental overview for an equity ticker including price, sector, industry, P/E ratios, market cap, and other key metrics.",
331
+ inputSchema: {
332
+ type: "object",
333
+ properties: { symbol: { type: "string", description: "Ticker symbol (e.g. AAPL, MSFT)" } },
334
+ required: ["symbol"],
335
+ },
336
+ handler: equityFundamentalOverviewHandler,
337
+ },
338
+ {
339
+ name: "crypto_price_quote",
340
+ description: "Get the latest cryptocurrency price quote. Accepts symbols like BTC, ETH, or BTC-USD.",
341
+ inputSchema: {
342
+ type: "object",
343
+ properties: { symbol: { type: "string", description: "Crypto symbol (e.g. BTC, ETH, BTC-USD)" } },
344
+ required: ["symbol"],
345
+ },
346
+ handler: cryptoPriceQuoteHandler,
347
+ },
348
+ {
349
+ name: "crypto_price_historical",
350
+ description: "Get historical daily price data for a cryptocurrency. Optionally filter by date range.",
351
+ inputSchema: {
352
+ type: "object",
353
+ properties: {
354
+ symbol: { type: "string", description: "Crypto symbol (e.g. BTC, ETH, BTC-USD)" },
355
+ start_date: { type: "string", description: "Start date in YYYY-MM-DD format (inclusive)" },
356
+ end_date: { type: "string", description: "End date in YYYY-MM-DD format (inclusive)" },
357
+ },
358
+ required: ["symbol"],
359
+ },
360
+ handler: cryptoPriceHistoricalHandler,
361
+ },
362
+ {
363
+ name: "economy_gdp",
364
+ description: "Get the latest GDP data for a country from the World Bank. Defaults to the US.",
365
+ inputSchema: {
366
+ type: "object",
367
+ properties: { country: { type: "string", description: 'ISO 3166-1 alpha-2 country code (default "US")' } },
368
+ },
369
+ handler: economyGdpHandler,
370
+ },
371
+ {
372
+ name: "economy_inflation",
373
+ description: "Get the latest consumer price inflation rate (CPI) for a country from the World Bank. Defaults to the US.",
374
+ inputSchema: {
375
+ type: "object",
376
+ properties: { country: { type: "string", description: 'ISO 3166-1 alpha-2 country code (default "US")' } },
377
+ },
378
+ handler: economyInflationHandler,
379
+ },
380
+ {
381
+ name: "news_company",
382
+ description: "Get recent news articles for a specific company/ticker symbol from Yahoo Finance.",
383
+ inputSchema: {
384
+ type: "object",
385
+ properties: {
386
+ symbol: { type: "string", description: "Ticker symbol (e.g. AAPL, TSLA)" },
387
+ limit: { type: "number", description: "Maximum number of news items to return (default 10)" },
388
+ },
389
+ required: ["symbol"],
390
+ },
391
+ handler: newsCompanyHandler,
392
+ },
393
+ {
394
+ name: "news_world",
395
+ description: "Get world/market news headlines. Currently returns a placeholder — requires an external news API for full functionality.",
396
+ inputSchema: {
397
+ type: "object",
398
+ properties: { limit: { type: "number", description: "Maximum number of news items to return (default 10)" } },
399
+ },
400
+ handler: newsWorldHandler,
401
+ },
402
+ ];
403
+ //# sourceMappingURL=financialTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"financialTools.js","sourceRoot":"","sources":["../../src/tools/financialTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Flywheel tools — compose the 6-Phase Verification (inner loop) with
3
+ * Eval-Driven Development (outer loop) into the AI Flywheel.
4
+ */
5
+ import type { McpTool } from "../types.js";
6
+ export declare const flywheelTools: McpTool[];