fmp-ai-tools 0.0.3
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/LICENSE +21 -0
- package/README.md +217 -0
- package/dist/index.d.mts +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/providers/vercel-ai/index.d.mts +96 -0
- package/dist/providers/vercel-ai/index.d.ts +96 -0
- package/dist/providers/vercel-ai/index.js +466 -0
- package/dist/providers/vercel-ai/index.js.map +1 -0
- package/dist/providers/vercel-ai/index.mjs +453 -0
- package/dist/providers/vercel-ai/index.mjs.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var zod = require('zod');
|
|
4
|
+
var fmpNodeApi = require('fmp-node-api');
|
|
5
|
+
var ai = require('ai');
|
|
6
|
+
|
|
7
|
+
// src/providers/vercel-ai/quote.ts
|
|
8
|
+
function getFMPClient() {
|
|
9
|
+
return new fmpNodeApi.FMP();
|
|
10
|
+
}
|
|
11
|
+
function createTool(config) {
|
|
12
|
+
const { name, description, inputSchema, execute } = config;
|
|
13
|
+
return ai.tool({
|
|
14
|
+
name,
|
|
15
|
+
description,
|
|
16
|
+
inputSchema,
|
|
17
|
+
execute
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/providers/vercel-ai/quote.ts
|
|
22
|
+
var quoteTools = {
|
|
23
|
+
getStockQuote: createTool({
|
|
24
|
+
name: "getStockQuote",
|
|
25
|
+
description: "Get the stock quote for a company",
|
|
26
|
+
inputSchema: zod.z.object({
|
|
27
|
+
symbol: zod.z.string().describe("The symbol of the company to get the stock quote for")
|
|
28
|
+
}),
|
|
29
|
+
execute: async ({ symbol }) => {
|
|
30
|
+
const fmp = getFMPClient();
|
|
31
|
+
const stockQuote = await fmp.quote.getQuote(symbol);
|
|
32
|
+
const response = JSON.stringify(stockQuote.data, null, 2);
|
|
33
|
+
return response;
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
var companyTools = {
|
|
38
|
+
getCompanyProfile: createTool({
|
|
39
|
+
name: "getCompanyProfile",
|
|
40
|
+
description: "Get the company profile",
|
|
41
|
+
inputSchema: zod.z.object({
|
|
42
|
+
symbol: zod.z.string().describe("The stock ticker symbol (e.g., AAPL)")
|
|
43
|
+
}),
|
|
44
|
+
execute: async ({ symbol }) => {
|
|
45
|
+
const fmp = getFMPClient();
|
|
46
|
+
const companyProfile = await fmp.company.getCompanyProfile(symbol);
|
|
47
|
+
const response = JSON.stringify(companyProfile.data, null, 2);
|
|
48
|
+
return response;
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
};
|
|
52
|
+
var financialTools = {
|
|
53
|
+
getBalanceSheet: createTool({
|
|
54
|
+
name: "getBalanceSheet",
|
|
55
|
+
description: "Get balance sheet for a company",
|
|
56
|
+
inputSchema: zod.z.object({
|
|
57
|
+
symbol: zod.z.string().describe("The stock symbol to get balance sheet for"),
|
|
58
|
+
period: zod.z.enum(["annual", "quarter"]).default("annual").describe("The period type (annual or quarter)")
|
|
59
|
+
}),
|
|
60
|
+
execute: async ({ symbol, period }) => {
|
|
61
|
+
const fmp = getFMPClient();
|
|
62
|
+
const balanceSheet = await fmp.financial.getBalanceSheet({ symbol, period });
|
|
63
|
+
const response = JSON.stringify(balanceSheet.data, null, 2);
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
66
|
+
}),
|
|
67
|
+
getIncomeStatement: createTool({
|
|
68
|
+
name: "getIncomeStatement",
|
|
69
|
+
description: "Get income statement for a company",
|
|
70
|
+
inputSchema: zod.z.object({
|
|
71
|
+
symbol: zod.z.string().describe("The stock symbol to get income statement for"),
|
|
72
|
+
period: zod.z.enum(["annual", "quarter"]).default("annual").describe("The period type (annual or quarter)")
|
|
73
|
+
}),
|
|
74
|
+
execute: async ({ symbol, period }) => {
|
|
75
|
+
const fmp = getFMPClient();
|
|
76
|
+
const incomeStatement = await fmp.financial.getIncomeStatement({ symbol, period });
|
|
77
|
+
const response = JSON.stringify(incomeStatement.data, null, 2);
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
getCashFlowStatement: createTool({
|
|
82
|
+
name: "getCashFlowStatement",
|
|
83
|
+
description: "Get cash flow statement for a company",
|
|
84
|
+
inputSchema: zod.z.object({
|
|
85
|
+
symbol: zod.z.string().describe("The stock symbol to get cash flow statement for"),
|
|
86
|
+
period: zod.z.enum(["annual", "quarter"]).default("annual").describe("The period type (annual or quarter)")
|
|
87
|
+
}),
|
|
88
|
+
execute: async ({ symbol, period }) => {
|
|
89
|
+
const fmp = getFMPClient();
|
|
90
|
+
const cashFlowStatement = await fmp.financial.getCashFlowStatement({ symbol, period });
|
|
91
|
+
const response = JSON.stringify(cashFlowStatement.data, null, 2);
|
|
92
|
+
return response;
|
|
93
|
+
}
|
|
94
|
+
}),
|
|
95
|
+
getFinancialRatios: createTool({
|
|
96
|
+
name: "getFinancialRatios",
|
|
97
|
+
description: "Get financial ratios for a company",
|
|
98
|
+
inputSchema: zod.z.object({
|
|
99
|
+
symbol: zod.z.string().describe("The stock symbol to get financial ratios for"),
|
|
100
|
+
period: zod.z.enum(["annual", "quarter"]).default("annual").describe("The period type (annual or quarter)")
|
|
101
|
+
}),
|
|
102
|
+
execute: async ({ symbol, period }) => {
|
|
103
|
+
const fmp = getFMPClient();
|
|
104
|
+
const financialRatios = await fmp.financial.getFinancialRatios({ symbol, period });
|
|
105
|
+
const response = JSON.stringify(financialRatios.data, null, 2);
|
|
106
|
+
return response;
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
};
|
|
110
|
+
var calendarTools = {
|
|
111
|
+
getEarningsCalendar: createTool({
|
|
112
|
+
name: "getEarningsCalendar",
|
|
113
|
+
description: "Get earnings calendar",
|
|
114
|
+
inputSchema: zod.z.object({
|
|
115
|
+
from: zod.z.string().optional().describe("Start date in YYYY-MM-DD format"),
|
|
116
|
+
to: zod.z.string().optional().describe("End date in YYYY-MM-DD format")
|
|
117
|
+
}),
|
|
118
|
+
execute: async ({ from, to }) => {
|
|
119
|
+
const fmp = getFMPClient();
|
|
120
|
+
const earningsCalendar = await fmp.calendar.getEarningsCalendar({ from, to });
|
|
121
|
+
const response = JSON.stringify(earningsCalendar.data, null, 2);
|
|
122
|
+
return response;
|
|
123
|
+
}
|
|
124
|
+
}),
|
|
125
|
+
getEconomicCalendar: createTool({
|
|
126
|
+
name: "getEconomicCalendar",
|
|
127
|
+
description: "Get economic calendar",
|
|
128
|
+
inputSchema: zod.z.object({
|
|
129
|
+
from: zod.z.string().optional().describe("Start date in YYYY-MM-DD format"),
|
|
130
|
+
to: zod.z.string().optional().describe("End date in YYYY-MM-DD format")
|
|
131
|
+
}),
|
|
132
|
+
execute: async ({ from, to }) => {
|
|
133
|
+
const fmp = getFMPClient();
|
|
134
|
+
const economicCalendar = await fmp.calendar.getEconomicsCalendar({ from, to });
|
|
135
|
+
const response = JSON.stringify(economicCalendar.data, null, 2);
|
|
136
|
+
return response;
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
};
|
|
140
|
+
var economicTools = {
|
|
141
|
+
getTreasuryRates: createTool({
|
|
142
|
+
name: "getTreasuryRates",
|
|
143
|
+
description: "Get treasury rates",
|
|
144
|
+
inputSchema: zod.z.object({
|
|
145
|
+
from: zod.z.string().optional().describe("Start date in YYYY-MM-DD format"),
|
|
146
|
+
to: zod.z.string().optional().describe("End date in YYYY-MM-DD format")
|
|
147
|
+
}),
|
|
148
|
+
execute: async ({ from, to }) => {
|
|
149
|
+
const fmp = getFMPClient();
|
|
150
|
+
const treasuryRates = await fmp.economic.getTreasuryRates({ from, to });
|
|
151
|
+
const response = JSON.stringify(treasuryRates.data, null, 2);
|
|
152
|
+
return response;
|
|
153
|
+
}
|
|
154
|
+
}),
|
|
155
|
+
getEconomicIndicators: createTool({
|
|
156
|
+
name: "getEconomicIndicators",
|
|
157
|
+
description: "Get economic indicators",
|
|
158
|
+
inputSchema: zod.z.object({
|
|
159
|
+
name: zod.z.enum([
|
|
160
|
+
"GDP",
|
|
161
|
+
"realGDP",
|
|
162
|
+
"nominalPotentialGDP",
|
|
163
|
+
"realGDPPerCapita",
|
|
164
|
+
"federalFunds",
|
|
165
|
+
"CPI",
|
|
166
|
+
"inflationRate",
|
|
167
|
+
"inflation",
|
|
168
|
+
"retailSales",
|
|
169
|
+
"consumerSentiment",
|
|
170
|
+
"durableGoods",
|
|
171
|
+
"unemploymentRate",
|
|
172
|
+
"totalNonfarmPayroll",
|
|
173
|
+
"initialClaims",
|
|
174
|
+
"industrialProductionTotalIndex",
|
|
175
|
+
"newPrivatelyOwnedHousingUnitsStartedTotalUnits",
|
|
176
|
+
"totalVehicleSales",
|
|
177
|
+
"retailMoneyFunds",
|
|
178
|
+
"smoothedUSRecessionProbabilities",
|
|
179
|
+
"3MonthOr90DayRatesAndYieldsCertificatesOfDeposit",
|
|
180
|
+
"commercialBankInterestRateOnCreditCardPlansAllAccounts",
|
|
181
|
+
"30YearFixedRateMortgageAverage",
|
|
182
|
+
"15YearFixedRateMortgageAverage"
|
|
183
|
+
]).describe("The name of the economic indicator"),
|
|
184
|
+
from: zod.z.string().optional().describe("Start date in YYYY-MM-DD format"),
|
|
185
|
+
to: zod.z.string().optional().describe("End date in YYYY-MM-DD format")
|
|
186
|
+
}),
|
|
187
|
+
execute: async ({ name, from, to }) => {
|
|
188
|
+
const fmp = getFMPClient();
|
|
189
|
+
const economicIndicators = await fmp.economic.getEconomicIndicators({ name, from, to });
|
|
190
|
+
const response = JSON.stringify(economicIndicators.data, null, 2);
|
|
191
|
+
return response;
|
|
192
|
+
}
|
|
193
|
+
})
|
|
194
|
+
};
|
|
195
|
+
var etfTools = {
|
|
196
|
+
getETFHoldings: createTool({
|
|
197
|
+
name: "getETFHoldings",
|
|
198
|
+
description: "Get ETF holdings for a specific ETF symbol",
|
|
199
|
+
inputSchema: zod.z.object({
|
|
200
|
+
symbol: zod.z.string().describe("ETF symbol (e.g., SPY, QQQ, VTI)"),
|
|
201
|
+
date: zod.z.string().optional().describe("Date for holdings (YYYY-MM-DD format)")
|
|
202
|
+
}),
|
|
203
|
+
execute: async ({ symbol, date }) => {
|
|
204
|
+
const fmp = getFMPClient();
|
|
205
|
+
const params = { symbol };
|
|
206
|
+
if (date) {
|
|
207
|
+
params.date = date;
|
|
208
|
+
}
|
|
209
|
+
const etfHoldings = await fmp.etf.getHoldings(params);
|
|
210
|
+
const response = JSON.stringify(etfHoldings.data, null, 2);
|
|
211
|
+
return response;
|
|
212
|
+
}
|
|
213
|
+
}),
|
|
214
|
+
getETFProfile: createTool({
|
|
215
|
+
name: "getETFProfile",
|
|
216
|
+
description: "Get ETF profile information",
|
|
217
|
+
inputSchema: zod.z.object({
|
|
218
|
+
symbol: zod.z.string().describe("ETF symbol (e.g., SPY, QQQ, VTI)")
|
|
219
|
+
}),
|
|
220
|
+
execute: async ({ symbol }) => {
|
|
221
|
+
const fmp = getFMPClient();
|
|
222
|
+
const etfProfile = await fmp.etf.getProfile(symbol);
|
|
223
|
+
const response = JSON.stringify(etfProfile.data, null, 2);
|
|
224
|
+
return response;
|
|
225
|
+
}
|
|
226
|
+
})
|
|
227
|
+
};
|
|
228
|
+
var insiderTools = {
|
|
229
|
+
getInsiderTrading: createTool({
|
|
230
|
+
name: "getInsiderTrading",
|
|
231
|
+
description: "Get insider trading data for a specific stock symbol",
|
|
232
|
+
inputSchema: zod.z.object({
|
|
233
|
+
symbol: zod.z.string().describe("Stock symbol (e.g., AAPL, MSFT, GOOGL)"),
|
|
234
|
+
page: zod.z.number().default(0).describe("Page number for pagination")
|
|
235
|
+
}),
|
|
236
|
+
execute: async ({ symbol, page }) => {
|
|
237
|
+
const fmp = getFMPClient();
|
|
238
|
+
const insiderTrading = await fmp.insider.getInsiderTradesBySymbol(symbol, page);
|
|
239
|
+
const response = JSON.stringify(insiderTrading.data, null, 2);
|
|
240
|
+
return response;
|
|
241
|
+
}
|
|
242
|
+
})
|
|
243
|
+
};
|
|
244
|
+
var institutionalTools = {
|
|
245
|
+
getInstitutionalHolders: createTool({
|
|
246
|
+
name: "getInstitutionalHolders",
|
|
247
|
+
description: "Get institutional holders for a specific stock symbol",
|
|
248
|
+
inputSchema: zod.z.object({
|
|
249
|
+
symbol: zod.z.string().describe("Stock symbol (e.g., AAPL, MSFT, GOOGL)")
|
|
250
|
+
}),
|
|
251
|
+
execute: async ({ symbol }) => {
|
|
252
|
+
const fmp = getFMPClient();
|
|
253
|
+
const institutionalHolders = await fmp.institutional.getInstitutionalHolders({ symbol });
|
|
254
|
+
const response = JSON.stringify(institutionalHolders.data, null, 2);
|
|
255
|
+
return response;
|
|
256
|
+
}
|
|
257
|
+
})
|
|
258
|
+
};
|
|
259
|
+
var marketTools = {
|
|
260
|
+
getMarketPerformance: createTool({
|
|
261
|
+
name: "getMarketPerformance",
|
|
262
|
+
description: "Get overall market performance data",
|
|
263
|
+
inputSchema: zod.z.object({}),
|
|
264
|
+
execute: async () => {
|
|
265
|
+
const fmp = getFMPClient();
|
|
266
|
+
const marketPerformance = await fmp.market.getMarketPerformance();
|
|
267
|
+
const response = JSON.stringify(marketPerformance.data, null, 2);
|
|
268
|
+
return response;
|
|
269
|
+
}
|
|
270
|
+
}),
|
|
271
|
+
getSectorPerformance: createTool({
|
|
272
|
+
name: "getSectorPerformance",
|
|
273
|
+
description: "Get sector performance data",
|
|
274
|
+
inputSchema: zod.z.object({}),
|
|
275
|
+
execute: async () => {
|
|
276
|
+
const fmp = getFMPClient();
|
|
277
|
+
const sectorPerformance = await fmp.market.getSectorPerformance();
|
|
278
|
+
const response = JSON.stringify(sectorPerformance.data, null, 2);
|
|
279
|
+
return response;
|
|
280
|
+
}
|
|
281
|
+
}),
|
|
282
|
+
getGainers: createTool({
|
|
283
|
+
name: "getGainers",
|
|
284
|
+
description: "Get top gaining stocks",
|
|
285
|
+
inputSchema: zod.z.object({}),
|
|
286
|
+
execute: async () => {
|
|
287
|
+
const fmp = getFMPClient();
|
|
288
|
+
const gainers = await fmp.market.getGainers();
|
|
289
|
+
const response = JSON.stringify(gainers.data, null, 2);
|
|
290
|
+
return response;
|
|
291
|
+
}
|
|
292
|
+
}),
|
|
293
|
+
getLosers: createTool({
|
|
294
|
+
name: "getLosers",
|
|
295
|
+
description: "Get top losing stocks",
|
|
296
|
+
inputSchema: zod.z.object({}),
|
|
297
|
+
execute: async () => {
|
|
298
|
+
const fmp = getFMPClient();
|
|
299
|
+
const losers = await fmp.market.getLosers();
|
|
300
|
+
const response = JSON.stringify(losers.data, null, 2);
|
|
301
|
+
return response;
|
|
302
|
+
}
|
|
303
|
+
}),
|
|
304
|
+
getMostActive: createTool({
|
|
305
|
+
name: "getMostActive",
|
|
306
|
+
description: "Get most active stocks",
|
|
307
|
+
inputSchema: zod.z.object({}),
|
|
308
|
+
execute: async () => {
|
|
309
|
+
const fmp = getFMPClient();
|
|
310
|
+
const mostActive = await fmp.market.getMostActive();
|
|
311
|
+
const response = JSON.stringify(mostActive.data, null, 2);
|
|
312
|
+
return response;
|
|
313
|
+
}
|
|
314
|
+
})
|
|
315
|
+
};
|
|
316
|
+
var senateHouseTools = {
|
|
317
|
+
getSenateTrading: createTool({
|
|
318
|
+
name: "getSenateTrading",
|
|
319
|
+
description: "Get senate trading data for a specific stock symbol",
|
|
320
|
+
inputSchema: zod.z.object({
|
|
321
|
+
symbol: zod.z.string().describe("Stock symbol (e.g., AAPL, MSFT, GOOGL)")
|
|
322
|
+
}),
|
|
323
|
+
execute: async ({ symbol }) => {
|
|
324
|
+
const fmp = getFMPClient();
|
|
325
|
+
const senateTrading = await fmp.senateHouse.getSenateTrading({ symbol });
|
|
326
|
+
const response = JSON.stringify(senateTrading.data, null, 2);
|
|
327
|
+
return response;
|
|
328
|
+
}
|
|
329
|
+
}),
|
|
330
|
+
getHouseTrading: createTool({
|
|
331
|
+
name: "getHouseTrading",
|
|
332
|
+
description: "Get house trading data for a specific stock symbol",
|
|
333
|
+
inputSchema: zod.z.object({
|
|
334
|
+
symbol: zod.z.string().describe("Stock symbol (e.g., AAPL, MSFT, GOOGL)")
|
|
335
|
+
}),
|
|
336
|
+
execute: async ({ symbol }) => {
|
|
337
|
+
const fmp = getFMPClient();
|
|
338
|
+
const houseTrading = await fmp.senateHouse.getHouseTrading({ symbol });
|
|
339
|
+
const response = JSON.stringify(houseTrading.data, null, 2);
|
|
340
|
+
return response;
|
|
341
|
+
}
|
|
342
|
+
}),
|
|
343
|
+
getSenateTradingByName: createTool({
|
|
344
|
+
name: "getSenateTradingByName",
|
|
345
|
+
description: "Get senate trading data for a specific senator by name",
|
|
346
|
+
inputSchema: zod.z.object({
|
|
347
|
+
name: zod.z.string().describe("The name of the senator to get trading data for")
|
|
348
|
+
}),
|
|
349
|
+
execute: async ({ name }) => {
|
|
350
|
+
const fmp = getFMPClient();
|
|
351
|
+
const senateTradingByName = await fmp.senateHouse.getSenateTradingByName({ name });
|
|
352
|
+
const response = JSON.stringify(senateTradingByName.data, null, 2);
|
|
353
|
+
return response;
|
|
354
|
+
}
|
|
355
|
+
}),
|
|
356
|
+
getHouseTradingByName: createTool({
|
|
357
|
+
name: "getHouseTradingByName",
|
|
358
|
+
description: "Get house trading data for a specific representative by name",
|
|
359
|
+
inputSchema: zod.z.object({
|
|
360
|
+
name: zod.z.string().describe("The name of the representative to get trading data for")
|
|
361
|
+
}),
|
|
362
|
+
execute: async ({ name }) => {
|
|
363
|
+
const fmp = getFMPClient();
|
|
364
|
+
const houseTradingByName = await fmp.senateHouse.getHouseTradingByName({ name });
|
|
365
|
+
const response = JSON.stringify(houseTradingByName.data, null, 2);
|
|
366
|
+
return response;
|
|
367
|
+
}
|
|
368
|
+
}),
|
|
369
|
+
getSenateTradingRSSFeed: createTool({
|
|
370
|
+
name: "getSenateTradingRSSFeed",
|
|
371
|
+
description: "Get senate trading data through RSS feed with pagination",
|
|
372
|
+
inputSchema: zod.z.object({
|
|
373
|
+
page: zod.z.number().default(0).describe("Page number for pagination")
|
|
374
|
+
}),
|
|
375
|
+
execute: async ({ page = 0 }) => {
|
|
376
|
+
const fmp = getFMPClient();
|
|
377
|
+
const senateTradingRSSFeed = await fmp.senateHouse.getSenateTradingRSSFeed({ page });
|
|
378
|
+
const response = JSON.stringify(senateTradingRSSFeed.data, null, 2);
|
|
379
|
+
return response;
|
|
380
|
+
}
|
|
381
|
+
}),
|
|
382
|
+
getHouseTradingRSSFeed: createTool({
|
|
383
|
+
name: "getHouseTradingRSSFeed",
|
|
384
|
+
description: "Get house trading data through RSS feed with pagination",
|
|
385
|
+
inputSchema: zod.z.object({
|
|
386
|
+
page: zod.z.number().default(0).describe("Page number for pagination")
|
|
387
|
+
}),
|
|
388
|
+
execute: async ({ page = 0 }) => {
|
|
389
|
+
const fmp = getFMPClient();
|
|
390
|
+
const houseTradingRSSFeed = await fmp.senateHouse.getHouseTradingRSSFeed({ page });
|
|
391
|
+
const response = JSON.stringify(houseTradingRSSFeed.data, null, 2);
|
|
392
|
+
return response;
|
|
393
|
+
}
|
|
394
|
+
})
|
|
395
|
+
};
|
|
396
|
+
var stockTools = {
|
|
397
|
+
getMarketCap: createTool({
|
|
398
|
+
name: "getMarketCap",
|
|
399
|
+
description: "Get market capitalization for a company",
|
|
400
|
+
inputSchema: zod.z.object({
|
|
401
|
+
symbol: zod.z.string().describe("The stock symbol to get market cap for")
|
|
402
|
+
}),
|
|
403
|
+
execute: async ({ symbol }) => {
|
|
404
|
+
const fmp = getFMPClient();
|
|
405
|
+
const marketCap = await fmp.stock.getMarketCap(symbol);
|
|
406
|
+
const response = JSON.stringify(marketCap.data, null, 2);
|
|
407
|
+
return response;
|
|
408
|
+
}
|
|
409
|
+
}),
|
|
410
|
+
getStockSplits: createTool({
|
|
411
|
+
name: "getStockSplits",
|
|
412
|
+
description: "Get stock splits history for a company",
|
|
413
|
+
inputSchema: zod.z.object({
|
|
414
|
+
symbol: zod.z.string().describe("The stock symbol to get stock splits for")
|
|
415
|
+
}),
|
|
416
|
+
execute: async ({ symbol }) => {
|
|
417
|
+
const fmp = getFMPClient();
|
|
418
|
+
const stockSplits = await fmp.stock.getStockSplits(symbol);
|
|
419
|
+
const response = JSON.stringify(stockSplits.data, null, 2);
|
|
420
|
+
return response;
|
|
421
|
+
}
|
|
422
|
+
}),
|
|
423
|
+
getDividendHistory: createTool({
|
|
424
|
+
name: "getDividendHistory",
|
|
425
|
+
description: "Get dividend history for a company",
|
|
426
|
+
inputSchema: zod.z.object({
|
|
427
|
+
symbol: zod.z.string().describe("The stock symbol to get dividend history for")
|
|
428
|
+
}),
|
|
429
|
+
execute: async ({ symbol }) => {
|
|
430
|
+
const fmp = getFMPClient();
|
|
431
|
+
const dividendHistory = await fmp.stock.getDividendHistory(symbol);
|
|
432
|
+
const response = JSON.stringify(dividendHistory.data, null, 2);
|
|
433
|
+
return response;
|
|
434
|
+
}
|
|
435
|
+
})
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
// src/providers/vercel-ai/index.ts
|
|
439
|
+
var fmpTools = {
|
|
440
|
+
...quoteTools,
|
|
441
|
+
...companyTools,
|
|
442
|
+
...financialTools,
|
|
443
|
+
...calendarTools,
|
|
444
|
+
...economicTools,
|
|
445
|
+
...etfTools,
|
|
446
|
+
...insiderTools,
|
|
447
|
+
...institutionalTools,
|
|
448
|
+
...marketTools,
|
|
449
|
+
...senateHouseTools,
|
|
450
|
+
...stockTools
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
exports.calendarTools = calendarTools;
|
|
454
|
+
exports.companyTools = companyTools;
|
|
455
|
+
exports.economicTools = economicTools;
|
|
456
|
+
exports.etfTools = etfTools;
|
|
457
|
+
exports.financialTools = financialTools;
|
|
458
|
+
exports.fmpTools = fmpTools;
|
|
459
|
+
exports.insiderTools = insiderTools;
|
|
460
|
+
exports.institutionalTools = institutionalTools;
|
|
461
|
+
exports.marketTools = marketTools;
|
|
462
|
+
exports.quoteTools = quoteTools;
|
|
463
|
+
exports.senateHouseTools = senateHouseTools;
|
|
464
|
+
exports.stockTools = stockTools;
|
|
465
|
+
//# sourceMappingURL=index.js.map
|
|
466
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/types.ts","../../../src/utils/tool-wrapper.ts","../../../src/providers/vercel-ai/quote.ts","../../../src/providers/vercel-ai/company.ts","../../../src/providers/vercel-ai/financial.ts","../../../src/providers/vercel-ai/calendar.ts","../../../src/providers/vercel-ai/economic.ts","../../../src/providers/vercel-ai/etf.ts","../../../src/providers/vercel-ai/insider.ts","../../../src/providers/vercel-ai/institutional.ts","../../../src/providers/vercel-ai/market.ts","../../../src/providers/vercel-ai/senate-house.ts","../../../src/providers/vercel-ai/stock.ts","../../../src/providers/vercel-ai/index.ts"],"names":["FMP","tool","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Tool interface that matches the ai library's expected format\n * This is what the ai library produces when using their tool() function\n */\nexport interface Tool {\n type: 'function';\n function: {\n name: string;\n description: string;\n parameters: {\n type: 'object';\n properties: Record<string, any>;\n required: string[];\n };\n };\n execute: (args: any) => Promise<string>;\n}\n\n/**\n * Internal FMP API client instance\n * Used internally by the tools, not exported publicly\n */\nimport { FMP } from 'fmp-node-api';\n\n// Create a function to get the FMP client instance (internal use only)\nexport function getFMPClient() {\n return new FMP();\n}\n","import { z } from 'zod';\nimport { tool } from 'ai';\n\n// Tool configuration interface for AI SDK v2\nexport interface ToolConfig<T extends z.ZodType> {\n name: string;\n description: string;\n inputSchema: T;\n execute: (args: z.infer<T>) => Promise<string>;\n}\n\n// AI SDK v2 compatible tool creator using the ai library's tool function\nexport function createTool<T extends z.ZodType>(config: ToolConfig<T>) {\n const { name, description, inputSchema, execute } = config;\n\n // Use the AI SDK's tool function to create a compatible tool\n return tool({\n name,\n description,\n inputSchema,\n execute,\n } as any); // Use type assertion to avoid deep type inference issues\n}\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const quoteTools = {\n getStockQuote: createTool({\n name: 'getStockQuote',\n description: 'Get the stock quote for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The symbol of the company to get the stock quote for'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const stockQuote = await fmp.quote.getQuote(symbol);\n const response = JSON.stringify(stockQuote.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { createTool } from '@/utils/tool-wrapper';\nimport { getFMPClient } from '@/types';\n\nexport const companyTools = {\n getCompanyProfile: createTool({\n name: 'getCompanyProfile',\n description: 'Get the company profile',\n inputSchema: z.object({\n symbol: z.string().describe('The stock ticker symbol (e.g., AAPL)'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const companyProfile = await fmp.company.getCompanyProfile(symbol);\n const response = JSON.stringify(companyProfile.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const financialTools = {\n getBalanceSheet: createTool({\n name: 'getBalanceSheet',\n description: 'Get balance sheet for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get balance sheet for'),\n period: z\n .enum(['annual', 'quarter'])\n .default('annual')\n .describe('The period type (annual or quarter)'),\n }),\n execute: async ({ symbol, period }) => {\n const fmp = getFMPClient();\n const balanceSheet = await fmp.financial.getBalanceSheet({ symbol, period });\n const response = JSON.stringify(balanceSheet.data, null, 2);\n return response;\n },\n }),\n\n getIncomeStatement: createTool({\n name: 'getIncomeStatement',\n description: 'Get income statement for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get income statement for'),\n period: z\n .enum(['annual', 'quarter'])\n .default('annual')\n .describe('The period type (annual or quarter)'),\n }),\n execute: async ({ symbol, period }) => {\n const fmp = getFMPClient();\n const incomeStatement = await fmp.financial.getIncomeStatement({ symbol, period });\n const response = JSON.stringify(incomeStatement.data, null, 2);\n return response;\n },\n }),\n\n getCashFlowStatement: createTool({\n name: 'getCashFlowStatement',\n description: 'Get cash flow statement for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get cash flow statement for'),\n period: z\n .enum(['annual', 'quarter'])\n .default('annual')\n .describe('The period type (annual or quarter)'),\n }),\n execute: async ({ symbol, period }) => {\n const fmp = getFMPClient();\n const cashFlowStatement = await fmp.financial.getCashFlowStatement({ symbol, period });\n const response = JSON.stringify(cashFlowStatement.data, null, 2);\n return response;\n },\n }),\n\n getFinancialRatios: createTool({\n name: 'getFinancialRatios',\n description: 'Get financial ratios for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get financial ratios for'),\n period: z\n .enum(['annual', 'quarter'])\n .default('annual')\n .describe('The period type (annual or quarter)'),\n }),\n execute: async ({ symbol, period }) => {\n const fmp = getFMPClient();\n const financialRatios = await fmp.financial.getFinancialRatios({ symbol, period });\n const response = JSON.stringify(financialRatios.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { createTool } from '@/utils/tool-wrapper';\nimport { getFMPClient } from '@/types';\n\nexport const calendarTools = {\n getEarningsCalendar: createTool({\n name: 'getEarningsCalendar',\n description: 'Get earnings calendar',\n inputSchema: z.object({\n from: z.string().optional().describe('Start date in YYYY-MM-DD format'),\n to: z.string().optional().describe('End date in YYYY-MM-DD format'),\n }),\n execute: async ({ from, to }) => {\n const fmp = getFMPClient();\n const earningsCalendar = await fmp.calendar.getEarningsCalendar({ from, to });\n const response = JSON.stringify(earningsCalendar.data, null, 2);\n return response;\n },\n }),\n\n getEconomicCalendar: createTool({\n name: 'getEconomicCalendar',\n description: 'Get economic calendar',\n inputSchema: z.object({\n from: z.string().optional().describe('Start date in YYYY-MM-DD format'),\n to: z.string().optional().describe('End date in YYYY-MM-DD format'),\n }),\n execute: async ({ from, to }) => {\n const fmp = getFMPClient();\n const economicCalendar = await fmp.calendar.getEconomicsCalendar({ from, to });\n const response = JSON.stringify(economicCalendar.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const economicTools = {\n getTreasuryRates: createTool({\n name: 'getTreasuryRates',\n description: 'Get treasury rates',\n inputSchema: z.object({\n from: z.string().optional().describe('Start date in YYYY-MM-DD format'),\n to: z.string().optional().describe('End date in YYYY-MM-DD format'),\n }),\n execute: async ({ from, to }) => {\n const fmp = getFMPClient();\n const treasuryRates = await fmp.economic.getTreasuryRates({ from, to });\n const response = JSON.stringify(treasuryRates.data, null, 2);\n return response;\n },\n }),\n\n getEconomicIndicators: createTool({\n name: 'getEconomicIndicators',\n description: 'Get economic indicators',\n inputSchema: z.object({\n name: z\n .enum([\n 'GDP',\n 'realGDP',\n 'nominalPotentialGDP',\n 'realGDPPerCapita',\n 'federalFunds',\n 'CPI',\n 'inflationRate',\n 'inflation',\n 'retailSales',\n 'consumerSentiment',\n 'durableGoods',\n 'unemploymentRate',\n 'totalNonfarmPayroll',\n 'initialClaims',\n 'industrialProductionTotalIndex',\n 'newPrivatelyOwnedHousingUnitsStartedTotalUnits',\n 'totalVehicleSales',\n 'retailMoneyFunds',\n 'smoothedUSRecessionProbabilities',\n '3MonthOr90DayRatesAndYieldsCertificatesOfDeposit',\n 'commercialBankInterestRateOnCreditCardPlansAllAccounts',\n '30YearFixedRateMortgageAverage',\n '15YearFixedRateMortgageAverage',\n ])\n .describe('The name of the economic indicator'),\n from: z.string().optional().describe('Start date in YYYY-MM-DD format'),\n to: z.string().optional().describe('End date in YYYY-MM-DD format'),\n }),\n execute: async ({ name, from, to }) => {\n const fmp = getFMPClient();\n const economicIndicators = await fmp.economic.getEconomicIndicators({ name, from, to });\n const response = JSON.stringify(economicIndicators.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const etfTools = {\n getETFHoldings: createTool({\n name: 'getETFHoldings',\n description: 'Get ETF holdings for a specific ETF symbol',\n inputSchema: z.object({\n symbol: z.string().describe('ETF symbol (e.g., SPY, QQQ, VTI)'),\n date: z.string().optional().describe('Date for holdings (YYYY-MM-DD format)'),\n }),\n execute: async ({ symbol, date }) => {\n const fmp = getFMPClient();\n const params: any = { symbol };\n if (date) {\n params.date = date;\n }\n const etfHoldings = await fmp.etf.getHoldings(params);\n const response = JSON.stringify(etfHoldings.data, null, 2);\n return response;\n },\n }),\n\n getETFProfile: createTool({\n name: 'getETFProfile',\n description: 'Get ETF profile information',\n inputSchema: z.object({\n symbol: z.string().describe('ETF symbol (e.g., SPY, QQQ, VTI)'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const etfProfile = await fmp.etf.getProfile(symbol);\n const response = JSON.stringify(etfProfile.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { createTool } from '@/utils/tool-wrapper';\nimport { getFMPClient } from '@/types';\n\nexport const insiderTools = {\n getInsiderTrading: createTool({\n name: 'getInsiderTrading',\n description: 'Get insider trading data for a specific stock symbol',\n inputSchema: z.object({\n symbol: z.string().describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n page: z.number().default(0).describe('Page number for pagination'),\n }),\n execute: async ({ symbol, page }) => {\n const fmp = getFMPClient();\n const insiderTrading = await fmp.insider.getInsiderTradesBySymbol(symbol, page);\n const response = JSON.stringify(insiderTrading.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const institutionalTools = {\n getInstitutionalHolders: createTool({\n name: 'getInstitutionalHolders',\n description: 'Get institutional holders for a specific stock symbol',\n inputSchema: z.object({\n symbol: z.string().describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const institutionalHolders = await fmp.institutional.getInstitutionalHolders({ symbol });\n const response = JSON.stringify(institutionalHolders.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const marketTools = {\n getMarketPerformance: createTool({\n name: 'getMarketPerformance',\n description: 'Get overall market performance data',\n inputSchema: z.object({}),\n execute: async () => {\n const fmp = getFMPClient();\n const marketPerformance = await fmp.market.getMarketPerformance();\n const response = JSON.stringify(marketPerformance.data, null, 2);\n return response;\n },\n }),\n\n getSectorPerformance: createTool({\n name: 'getSectorPerformance',\n description: 'Get sector performance data',\n inputSchema: z.object({}),\n execute: async () => {\n const fmp = getFMPClient();\n const sectorPerformance = await fmp.market.getSectorPerformance();\n const response = JSON.stringify(sectorPerformance.data, null, 2);\n return response;\n },\n }),\n\n getGainers: createTool({\n name: 'getGainers',\n description: 'Get top gaining stocks',\n inputSchema: z.object({}),\n execute: async () => {\n const fmp = getFMPClient();\n const gainers = await fmp.market.getGainers();\n const response = JSON.stringify(gainers.data, null, 2);\n return response;\n },\n }),\n\n getLosers: createTool({\n name: 'getLosers',\n description: 'Get top losing stocks',\n inputSchema: z.object({}),\n execute: async () => {\n const fmp = getFMPClient();\n const losers = await fmp.market.getLosers();\n const response = JSON.stringify(losers.data, null, 2);\n return response;\n },\n }),\n\n getMostActive: createTool({\n name: 'getMostActive',\n description: 'Get most active stocks',\n inputSchema: z.object({}),\n execute: async () => {\n const fmp = getFMPClient();\n const mostActive = await fmp.market.getMostActive();\n const response = JSON.stringify(mostActive.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const senateHouseTools = {\n getSenateTrading: createTool({\n name: 'getSenateTrading',\n description: 'Get senate trading data for a specific stock symbol',\n inputSchema: z.object({\n symbol: z.string().describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const senateTrading = await fmp.senateHouse.getSenateTrading({ symbol });\n const response = JSON.stringify(senateTrading.data, null, 2);\n return response;\n },\n }),\n\n getHouseTrading: createTool({\n name: 'getHouseTrading',\n description: 'Get house trading data for a specific stock symbol',\n inputSchema: z.object({\n symbol: z.string().describe('Stock symbol (e.g., AAPL, MSFT, GOOGL)'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const houseTrading = await fmp.senateHouse.getHouseTrading({ symbol });\n const response = JSON.stringify(houseTrading.data, null, 2);\n return response;\n },\n }),\n\n getSenateTradingByName: createTool({\n name: 'getSenateTradingByName',\n description: 'Get senate trading data for a specific senator by name',\n inputSchema: z.object({\n name: z.string().describe('The name of the senator to get trading data for'),\n }),\n execute: async ({ name }) => {\n const fmp = getFMPClient();\n const senateTradingByName = await fmp.senateHouse.getSenateTradingByName({ name });\n const response = JSON.stringify(senateTradingByName.data, null, 2);\n return response;\n },\n }),\n\n getHouseTradingByName: createTool({\n name: 'getHouseTradingByName',\n description: 'Get house trading data for a specific representative by name',\n inputSchema: z.object({\n name: z.string().describe('The name of the representative to get trading data for'),\n }),\n execute: async ({ name }) => {\n const fmp = getFMPClient();\n const houseTradingByName = await fmp.senateHouse.getHouseTradingByName({ name });\n const response = JSON.stringify(houseTradingByName.data, null, 2);\n return response;\n },\n }),\n\n getSenateTradingRSSFeed: createTool({\n name: 'getSenateTradingRSSFeed',\n description: 'Get senate trading data through RSS feed with pagination',\n inputSchema: z.object({\n page: z.number().default(0).describe('Page number for pagination'),\n }),\n execute: async ({ page = 0 }) => {\n const fmp = getFMPClient();\n const senateTradingRSSFeed = await fmp.senateHouse.getSenateTradingRSSFeed({ page });\n const response = JSON.stringify(senateTradingRSSFeed.data, null, 2);\n return response;\n },\n }),\n\n getHouseTradingRSSFeed: createTool({\n name: 'getHouseTradingRSSFeed',\n description: 'Get house trading data through RSS feed with pagination',\n inputSchema: z.object({\n page: z.number().default(0).describe('Page number for pagination'),\n }),\n execute: async ({ page = 0 }) => {\n const fmp = getFMPClient();\n const houseTradingRSSFeed = await fmp.senateHouse.getHouseTradingRSSFeed({ page });\n const response = JSON.stringify(houseTradingRSSFeed.data, null, 2);\n return response;\n },\n }),\n};\n","import { z } from 'zod';\nimport { getFMPClient } from '@/types';\nimport { createTool } from '@/utils/tool-wrapper';\n\nexport const stockTools = {\n getMarketCap: createTool({\n name: 'getMarketCap',\n description: 'Get market capitalization for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get market cap for'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const marketCap = await fmp.stock.getMarketCap(symbol);\n const response = JSON.stringify(marketCap.data, null, 2);\n return response;\n },\n }),\n\n getStockSplits: createTool({\n name: 'getStockSplits',\n description: 'Get stock splits history for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get stock splits for'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const stockSplits = await fmp.stock.getStockSplits(symbol);\n const response = JSON.stringify(stockSplits.data, null, 2);\n return response;\n },\n }),\n\n getDividendHistory: createTool({\n name: 'getDividendHistory',\n description: 'Get dividend history for a company',\n inputSchema: z.object({\n symbol: z.string().describe('The stock symbol to get dividend history for'),\n }),\n execute: async ({ symbol }) => {\n const fmp = getFMPClient();\n const dividendHistory = await fmp.stock.getDividendHistory(symbol);\n const response = JSON.stringify(dividendHistory.data, null, 2);\n return response;\n },\n }),\n};\n","import { quoteTools } from './quote';\nimport { companyTools } from './company';\nimport { financialTools } from './financial';\nimport { calendarTools } from './calendar';\nimport { economicTools } from './economic';\nimport { etfTools } from './etf';\nimport { insiderTools } from './insider';\nimport { institutionalTools } from './institutional';\nimport { marketTools } from './market';\nimport { senateHouseTools } from './senate-house';\nimport { stockTools } from './stock';\n\n// Combine all tools into a single object for AI SDK v2\nexport const fmpTools = {\n ...quoteTools,\n ...companyTools,\n ...financialTools,\n ...calendarTools,\n ...economicTools,\n ...etfTools,\n ...insiderTools,\n ...institutionalTools,\n ...marketTools,\n ...senateHouseTools,\n ...stockTools,\n} as const;\n\n// Re-export individual tool groups\nexport {\n quoteTools,\n companyTools,\n financialTools,\n calendarTools,\n economicTools,\n etfTools,\n insiderTools,\n institutionalTools,\n marketTools,\n senateHouseTools,\n stockTools,\n};\n\n// Re-export types\nexport type { ToolSet } from 'ai';\n"]}
|