fmp-ai-tools
Version:
AI tools for FMP Node API - compatible with Vercel AI SDK, Langchain, OpenAI, and more
267 lines (184 loc) • 6.66 kB
Markdown
# FMP AI Tools
AI tools for Financial Modeling Prep (FMP) Node API - compatible with Vercel AI SDK, OpenAI Agents, and more.
This package provides pre-built AI tools that can be used with various AI frameworks. For direct API access, use the `fmp-node-api` package.
## Installation
```bash
npm install fmp-ai-tools
# or
pnpm add fmp-ai-tools
# or
yarn add fmp-ai-tools
```
## Quick Start
### Vercel AI SDK (Recommended)
```typescript
import { openai } from '@ai-sdk/openai';
import { streamText, convertToModelMessages, stepCountIs } from 'ai';
import { fmpTools } from 'fmp-ai-tools/vercel-ai';
export async function POST(req: Request) {
const { messages } = await req.json();
const result = streamText({
model: openai('gpt-4o-mini'),
messages: convertToModelMessages(messages),
tools: fmpTools,
stopWhen: stepCountIs(5),
});
return result.toUIMessageStreamResponse();
}
```
### OpenAI Agents
```typescript
import { Agent } from '@openai/agents';
import { fmpTools } from 'fmp-ai-tools/openai';
const agent = new Agent({
name: 'Financial Analyst',
instructions: 'You are a financial analyst with access to real-time market data.',
tools: fmpTools,
});
const result = await agent.run({
messages: [
{
role: 'user',
content:
'Get the current stock quote for Apple (AAPL) and show me their latest balance sheet',
},
],
});
```
## Configuration
**Important**: You must set your FMP API key as an environment variable for the tools to work:
```bash
FMP_API_KEY=your_api_key_here
```
The tools internally use the `fmp-node-api` library, which reads this environment variable to authenticate with the Financial Modeling Prep API.
## Available Tools
### Quote Tools
- `getStockQuote` - Get real-time stock quote for a company
### Company Tools
- `getCompanyProfile` - Get comprehensive company profile and information
### Financial Tools
- `getBalanceSheet` - Get balance sheet statements (annual/quarterly)
- `getIncomeStatement` - Get income statements (annual/quarterly)
- `getCashFlowStatement` - Get cash flow statements (annual/quarterly)
- `getFinancialRatios` - Get financial ratios and metrics (annual/quarterly)
### Stock Tools
- `getMarketCap` - Get market capitalization for a company
- `getStockSplits` - Get historical stock splits for a company
- `getDividendHistory` - Get dividend history and payments for a company
### Market Tools
- `getMarketPerformance` - Get overall market performance data
- `getSectorPerformance` - Get sector performance data
- `getGainers` - Get top gaining stocks
- `getLosers` - Get top losing stocks
- `getMostActive` - Get most actively traded stocks
### Economic Tools
- `getTreasuryRates` - Get treasury rates and yields
- `getEconomicIndicators` - Get economic indicators (GDP, CPI, unemployment, etc.)
### ETF Tools
- `getETFHoldings` - Get holdings for a specific ETF
- `getETFProfile` - Get ETF profile and information
### Calendar Tools
- `getEarningsCalendar` - Get upcoming earnings calendar
- `getEconomicCalendar` - Get economic calendar events
### Senate & House Trading Tools
- `getSenateTrading` - Get recent Senate trading activity
- `getHouseTrading` - Get recent House trading activity
- `getSenateTradingByName` - Get Senate trading by politician name
- `getHouseTradingByName` - Get House trading by politician name
- `getSenateTradingRSSFeed` - Get Senate trading RSS feed
- `getHouseTradingRSSFeed` - Get House trading RSS feed
### Institutional Tools
- `getInstitutionalHolders` - Get institutional holders for a company
### Insider Trading Tools
- `getInsiderTrading` - Get insider trading data for a company
## Using Individual Tools
You can import and use specific tool categories or individual tools from either provider:
### Import Specific Categories (Vercel AI)
```typescript
import { quoteTools, financialTools, marketTools } from 'fmp-ai-tools/vercel-ai';
// Use only quote and financial tools
const selectedTools = {
...quoteTools,
...financialTools,
};
// Use with Vercel AI SDK
const result = streamText({
model: openai('gpt-4o-mini'),
messages: convertToModelMessages(messages),
tools: selectedTools,
});
```
### Import Specific Categories (OpenAI)
```typescript
import { quoteTools, financialTools, marketTools } from 'fmp-ai-tools/openai';
// Use only quote and financial tools
const selectedTools = [...quoteTools, ...financialTools];
// Use with OpenAI Agents
const agent = new Agent({
name: 'Financial Analyst',
instructions: 'You are a financial analyst with access to real-time market data.',
tools: selectedTools,
});
```
### Import Individual Tools
```typescript
// Vercel AI SDK
import { getStockQuote, getCompanyProfile } from 'fmp-ai-tools/vercel-ai';
// OpenAI Agents
import { getStockQuote, getCompanyProfile } from 'fmp-ai-tools/openai';
```
## Example Tool Usage
Here are some example prompts you can use with the tools:
**Stock Analysis:**
```
"Get the current stock quote for Apple (AAPL) and show me their latest balance sheet"
```
**Market Research:**
```
"What are the top gaining stocks today and show me the overall market performance?"
```
**Economic Analysis:**
```
"Get the current treasury rates and show me the latest GDP data"
```
**ETF Research:**
```
"Show me the holdings of SPY ETF and get its profile information"
```
**Financial Analysis:**
```
"Get Apple's income statement, cash flow statement, and financial ratios for the last year"
```
## Tool Parameters
Each tool accepts specific parameters. Here are some common ones:
- `symbol` - Stock/ETF symbol (e.g., "AAPL", "SPY")
- `period` - For financial statements: "annual" or "quarter"
- `from` - Start date in YYYY-MM-DD format
- `to` - End date in YYYY-MM-DD format
- `name` - For economic indicators: specific indicator name
## Error Handling
The tools handle API errors gracefully and will return informative error messages if:
- The API key is invalid or missing
- The requested data is not available
- Rate limits are exceeded
- Invalid parameters are provided
## Testing Tools
Test individual tools:
```bash
# Test specific tools
pnpm test:tool getStockQuote
pnpm test:tool getCompanyProfile
pnpm test:tool getBalanceSheet
pnpm test:tool getMarketPerformance
```
## For Direct API Access
If you need direct access to the FMP API without AI tools, use the `fmp-node-api` package:
```typescript
import { FMP } from 'fmp-node-api';
const fmp = new FMP({ apiKey: 'your_api_key_here' });
// Direct API calls
const quote = await fmp.quote.getQuote('AAPL');
const profile = await fmp.company.getCompanyProfile('AAPL');
```
## License
MIT