mcp-financex
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-financexget current price of AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP FinanceX
A comprehensive Model Context Protocol (MCP) server for real-time stock, cryptocurrency, options trading, SEC filings, and fundamental valuation analysis. Provides tools for price quotes, historical data, technical indicators, market news, options chains, Greeks calculation, advanced options strategy analysis, insider trading tracking (Forms 3/4/5), institutional holdings (13F), ownership changes (13D/G), material events (8-K), financial statements, and DCF valuation.
Features
Stock & Crypto Analysis
Real-time Price Quotes: Get current prices, changes, volume, and market data for stocks and cryptocurrencies
Historical Data: Retrieve OHLCV (Open, High, Low, Close, Volume) data with multiple time intervals
Technical Indicators: Calculate RSI, MACD, SMA, EMA, Bollinger Bands, and Stochastic oscillators
Market News: Fetch recent news articles for specific symbols or general market news
Symbol Search: Find ticker symbols by company name or keyword
Batch Operations: Fetch multiple quotes efficiently in a single request
Market Overview: Access major market indices and trending stocks
Watchlist Management: Track favorite symbols with notes and alerts
Options Trading
Options Chains: Complete options data with strikes, premiums, volume, open interest, and IV
Greeks Calculator: Delta, Gamma, Theta, Vega, Rho using Black-Scholes model
Earnings Calendar: Critical dates for volatility planning
Dividend Information: Ex-dividend dates affecting options pricing
Historical Volatility: Compare realized volatility with implied volatility
Implied Volatility Analysis: IV rank, percentile, and term structure
Max Pain Calculator: Find the pin price where most options expire worthless
Strategy Analyzer: Analyze complex spreads, condors, butterflies with P&L charts
Real-Time & Market Intelligence (NEW!)
Extended Hours Trading: Track pre-market (4 AM - 9:30 AM ET) and after-hours (4 PM - 8 PM ET) price movements
Short Interest Tracker: Monitor short ratio (days to cover), short % of float, and short squeeze potential
Analyst Ratings: Track Wall Street consensus, target prices, rating distribution, and sentiment trends
News Impact Analysis: Correlate news events with price movements to identify significant market-moving events
SEC Filings & Institutional Analysis (NEW!)
Insider Trading (Forms 3/4/5): Track CEO, director, and 10% owner buying/selling with real transaction details
Institutional Holdings (13F): Monitor hedge fund and institutional investor portfolios (Berkshire, Bridgewater, etc.)
Ownership Changes (13D/G): Track major ownership changes (5%+ stakes) and activist investor campaigns
Material Events (8-K): Real-time corporate event notifications (M&A, earnings, management changes, cybersecurity)
Fundamental Analysis & Valuation (NEW!)
Financial Statements: Access income statements, balance sheets, and cash flow statements
Financial Ratios: Calculate profitability, liquidity, leverage, and efficiency ratios
DCF Valuation: Calculate intrinsic value using Discounted Cash Flow analysis
Sensitivity Analysis: Test valuation assumptions (WACC, terminal growth, FCF margin)
Investment Recommendations: Strong Buy/Buy/Hold/Sell/Strong Sell based on upside/downside
Technical Features
Smart Caching: Intelligent caching with market hours awareness to minimize API calls
Black-Scholes Pricing: Accurate Greeks and theoretical option prices
No API Keys Required: Free Yahoo Finance and SEC EDGAR data (respects rate limits)
Related MCP server: market-data-mcp
Installation
Prerequisites
Node.js (v18 or later)
npm or yarn
Setup
Clone the repository:
git clone https://github.com/xerktech/mcp-financex.git
cd mcp-financexInstall dependencies:
npm installBuild the project:
npm run build(Optional) Create a
.envfile for custom configuration:
cp .env.example .envUsage
Running the Server
Development mode (with auto-reload):
npm run devProduction mode:
npm startConfiguration with Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Option 1: Use npx (Recommended - No Installation Required)
Once published to npm, users can run it directly without installation:
{
"mcpServers": {
"finance": {
"command": "npx",
"args": ["-y", "mcp-financex"]
}
}
}Option 2: Use from GitHub (Before npm publish)
{
"mcpServers": {
"finance": {
"command": "npx",
"args": ["-y", "github:xerktech/mcp-financex"]
}
}
}Option 3: Local Installation
{
"mcpServers": {
"finance": {
"command": "node",
"args": ["/path/to/mcp-financex/dist/index.js"]
}
}
}Available Tools
1. get_quote
Get real-time price quote for a stock or cryptocurrency.
Input:
{
"symbol": "AAPL",
"fields": ["regularMarketPrice", "marketCap"] // Optional
}Example:
Get the current price of Apple stock (AAPL)Output:
{
"symbol": "AAPL",
"regularMarketPrice": 178.50,
"regularMarketChange": 2.35,
"regularMarketChangePercent": 1.33,
"regularMarketVolume": 52438900,
"marketCap": 2800000000000,
"currency": "USD",
"exchangeName": "NASDAQ",
"quoteType": "EQUITY"
}2. get_quote_batch
Get quotes for multiple symbols efficiently.
Input:
{
"symbols": ["AAPL", "MSFT", "BTC-USD", "GOOGL"]
}Example:
Get current prices for Apple, Microsoft, Bitcoin, and Google3. get_historical_data
Retrieve historical OHLCV data.
Input:
{
"symbol": "BTC-USD",
"period1": "1mo",
"interval": "1d"
}Example:
Get the last month of daily price data for BitcoinSupported Intervals:
1m,5m,15m,30m- Intraday (limited history)1h- Hourly1d- Daily1wk- Weekly1mo- Monthly
4. calculate_indicator
Calculate technical indicators on price data.
Input:
{
"symbol": "AAPL",
"indicator": "rsi",
"period": 14,
"interval": "1d"
}Example:
Calculate the RSI for Apple stock over the last 14 daysSupported Indicators:
RSI (Relative Strength Index): Momentum oscillator, identifies overbought/oversold conditions
MACD (Moving Average Convergence Divergence): Trend following indicator
SMA (Simple Moving Average): Average price over period
EMA (Exponential Moving Average): Weighted average giving more importance to recent prices
Bollinger Bands: Volatility indicator with upper/lower bands
Stochastic: Momentum indicator comparing closing price to price range
5. search_ticker
Search for ticker symbols by company name or keyword.
Input:
{
"query": "Tesla",
"limit": 10
}Example:
Search for Tesla's ticker symbol6. get_market_news
Retrieve recent news articles.
Input:
{
"symbol": "AAPL",
"limit": 10
}Example:
Get the latest news about Apple
Get general market news (omit symbol)SEC Filings & Institutional Analysis Tools
7. get_sec_form4_filings (Insider Trading)
Track insider trading activity from SEC Forms 3, 4, and 5. See what CEOs, directors, and major shareholders are buying or selling.
Input:
{
"symbol": "AAPL",
"limit": 20,
"transactionType": "buy", // "buy", "sell", or "all"
"formType": "4" // "3", "4", or "5"
}Example:
Show me recent insider buying for Apple
What insider trades happened at Tesla?
Track Form 4 filings for NVDAForm Types:
Form 3: Initial ownership statements when someone becomes an insider
Form 4: Changes in ownership (buy/sell transactions)
Form 5: Annual summary of transactions
Output: Transaction details with shares, prices, values, insider positions, and SEC filing URLs.
8. get_13f_institutional_holdings
Track what hedge funds and institutional investors are buying and selling from SEC Form 13F quarterly filings.
Input:
{
"cik": "0001067983", // Berkshire Hathaway CIK
"limit": 10,
"compareQuarters": true
}Example:
What is Berkshire Hathaway buying? (CIK: 0001067983)
Show me Warren Buffett's latest portfolio changes
Track Bridgewater's 13F filings
What did hedge funds buy this quarter?Famous Investors CIKs:
Berkshire Hathaway (Warren Buffett): 0001067983
Vanguard Group: 0000102909
BlackRock: 0001086364
Output: Institution details, portfolio holdings, quarterly changes (additions, reductions, increases, decreases).
9. get_13dg_ownership_changes
Monitor major ownership changes (5%+ stakes) and activist investor campaigns from SEC Schedule 13D and 13G filings.
Input:
{
"symbol": "TSLA",
"formType": "13D", // "13D", "13G", or "both"
"activistOnly": false
}Example:
Show me recent 13D filings (activist investors)
Who filed major ownership stakes in Tesla?
Track activist investor activity
Recent 5%+ ownership changesForm Types:
13D: Active ownership with intent to influence company (activist investors)
13G: Passive ownership without intent to influence
Output: Reporting person, ownership percentage, shares, purpose of acquisition, filing dates.
10. get_8k_material_events
Get real-time notifications of material corporate events from SEC Form 8-K current reports.
Input:
{
"symbol": "AAPL",
"category": "financial", // "business", "financial", "securities", "governance", "disclosure", "all"
"itemNumbers": ["2.02", "5.02"] // Optional: specific item numbers
}Example:
Show me recent 8-K filings for Apple
What are the latest material events?
Recent earnings-related 8-Ks (Item 2.02)
Management changes (Item 5.02)Event Categories:
Business: Material agreements, bankruptcy, cybersecurity incidents
Financial: M&A completion, earnings releases, impairments
Securities: Delisting notices, unregistered sales
Governance: Director/officer changes, control changes
Disclosure: Regulation FD disclosures
Key Item Numbers:
1.01: Material agreements
1.05: Cybersecurity incidents
2.01: M&A completion
2.02: Earnings releases
5.02: Director/officer changes
8.01: Other material events
Output: Event details, item categories, filing dates, company info, SEC filing URLs.
Fundamental Analysis & Valuation Tools
11. get_financial_statements
Access comprehensive financial data from SEC 10-K (annual) and 10-Q (quarterly) filings.
Input:
{
"symbol": "AAPL",
"periodType": "annual", // "annual" or "quarterly"
"limit": 3,
"includeRatios": true
}Example:
Get Apple's annual financial statements
Show me Tesla's quarterly financials
What is Microsoft's profit margin?
Compare balance sheets over 4 quartersAvailable Data:
Income Statement: Revenue, gross profit, operating income, net income, EPS, EBITDA
Balance Sheet: Assets, liabilities, equity, cash, debt, working capital
Cash Flow: Operating cash flow, capital expenditures, free cash flow
Financial Ratios Calculated:
Profitability: Gross margin, operating margin, net margin, ROA, ROE
Liquidity: Current ratio, quick ratio
Leverage: Debt-to-equity, debt-to-assets
Efficiency: Asset turnover
Output: Complete financial statements, calculated ratios, period information.
12. calculate_dcf_valuation
Calculate intrinsic value using Discounted Cash Flow (DCF) analysis with 5-year projections and terminal value.
Input:
{
"symbol": "AAPL",
"customInputs": {
"revenueGrowthRates": [0.15, 0.12, 0.10, 0.08, 0.06],
"fcfMargin": 0.25,
"wacc": 0.10,
"terminalGrowthRate": 0.03
},
"includeSensitivity": true
}Example:
Calculate intrinsic value for Apple
Is Tesla overvalued or undervalued?
DCF analysis for NVDA with sensitivity
What is Microsoft worth based on DCF?
Should I buy this stock? (based on valuation)Customizable Inputs:
Revenue growth rates (5-year projection)
Free cash flow margin
WACC (Weighted Average Cost of Capital)
Terminal growth rate
Shares outstanding, net debt
Investment Recommendations:
Strong Buy: >30% upside
Buy: 15-30% upside
Hold: -10% to 15%
Sell: -25% to -10%
Strong Sell: <-25% downside
Sensitivity Analysis: Tests how valuation changes with:
WACC variations (+/- 2%)
Terminal growth rate variations (+/- 1%)
FCF margin variations (+/- 5%)
Output: Intrinsic value per share, current price comparison, recommendation, 5-year projections, optional sensitivity analysis.
13. compare_peer_companies
Compare key financial metrics across multiple companies for competitive analysis and investment decisions.
Input:
{
"symbols": ["AAPL", "MSFT", "GOOGL"],
"metrics": ["marketCap", "peRatio", "netMargin", "roe"] // Optional
}Example:
Compare Apple, Microsoft, and Google financials
Which tech company has better margins?
Compare Tesla vs traditional automakers
Analyze competitors in the semiconductor sectorComparison Metrics:
Valuation: Market cap, P/E ratio, P/B ratio, EV/EBITDA
Profitability: Gross margin, operating margin, net margin, ROA, ROE
Growth: Revenue growth, earnings growth
Liquidity: Current ratio, quick ratio
Leverage: Debt-to-equity, debt-to-assets, interest coverage
Efficiency: Asset turnover
Earnings Quality: Quality of earnings (OCF/Net Income), cash conversion rate
Rankings: Automatically ranks companies by key metrics to identify leaders and laggards.
Output: Side-by-side comparison of up to 10 companies with rankings for key metrics.
Options Trading Tools
14. get_options_chain
Get complete options chain data with all available strikes, calls, and puts.
Input:
{
"symbol": "AAPL",
"expirationDate": "2024-06-21" // Optional
}Example:
Show me the options chain for Apple
Get options for TSLA expiring June 21, 2024Output: Calls and puts with strikes, premiums, volume, open interest, implied volatility, bid/ask spreads.
15. calculate_greeks
Calculate option Greeks (Delta, Gamma, Theta, Vega, Rho) using Black-Scholes model.
Input:
{
"symbol": "AAPL",
"strike": 180,
"expirationDate": "2024-06-21",
"optionType": "call"
}Example:
Calculate Greeks for AAPL $180 call expiring June 21
What are the Greeks for a TSLA $250 put?Greeks Explained:
Delta (0-1 for calls, -1-0 for puts): Price sensitivity - how much the option price changes per $1 move in stock
Gamma: Rate of delta change - how quickly delta changes as stock moves
Theta: Time decay - how much value the option loses per day
Vega: Volatility sensitivity - impact of 1% change in implied volatility
Rho: Interest rate sensitivity - impact of 1% change in rates
16. get_earnings_calendar
Get upcoming earnings dates and historical earnings data.
Input:
{
"symbol": "AAPL",
"daysAhead": 30 // Optional
}Example:
When is Apple's next earnings date?
Show me upcoming earnings for TSLAWhy it matters: Earnings announcements cause volatility spikes, significantly impacting options prices. Options traders often avoid holding positions through earnings or specifically trade earnings volatility.
17. get_dividend_info
Get comprehensive dividend information including ex-dividend dates.
Input:
{
"symbol": "AAPL"
}Example:
What's Apple's dividend yield and ex-dividend date?
Get dividend information for MSFTWhy it matters: Ex-dividend dates affect options pricing, especially for calls. Stock price typically drops by the dividend amount on ex-div date.
18. calculate_historical_volatility
Calculate historical (realized) volatility for multiple periods.
Input:
{
"symbol": "AAPL",
"periods": [10, 20, 30, 60, 90] // Days
}Example:
Calculate 30-day historical volatility for TSLA
Show me historical volatility trends for AAPLWhy it matters: Compare historical volatility (HV) with implied volatility (IV) to identify overpriced or underpriced options. High IV relative to HV suggests expensive options (good for selling), while low IV relative to HV suggests cheap options (good for buying).
19. calculate_max_pain
Calculate the max pain price where most options expire worthless.
Input:
{
"symbol": "AAPL",
"expirationDate": "2024-06-21" // Optional
}Example:
What's the max pain for AAPL options?
Calculate max pain for next week's SPY expirationTheory: Max pain theory suggests prices gravitate toward the strike where option buyers lose the most money (and option writers profit the most) as expiration approaches.
20. get_implied_volatility
Get implied volatility data and compare with historical volatility.
Input:
{
"symbol": "AAPL"
}Example:
What's the current IV for Tesla options?
Show me implied volatility by expiration for AAPLAnalysis provided:
Current ATM IV
IV vs HV comparison
IV by expiration (term structure)
High/low IV environment assessment
21. analyze_options_strategy
Analyze complex options strategies with P&L calculations, Greeks, and risk metrics.
Input:
{
"symbol": "AAPL",
"strategy": "iron_condor",
"legs": [
{"strike": 170, "optionType": "put", "action": "buy", "quantity": 1},
{"strike": 175, "optionType": "put", "action": "sell", "quantity": 1},
{"strike": 185, "optionType": "call", "action": "sell", "quantity": 1},
{"strike": 190, "optionType": "call", "action": "buy", "quantity": 1}
],
"expirationDate": "2024-06-21"
}Supported Strategies:
Single options: call, put
Stock + option: covered_call, protective_put
Vertical spreads: bull_call_spread, bear_put_spread, bull_put_spread, bear_call_spread
Volatility: long_straddle, short_straddle, long_strangle, short_strangle
Advanced: iron_condor, iron_butterfly, butterfly_spread, calendar_spread, diagonal_spread
Example:
Analyze an iron condor on SPY with strikes 170/175/185/190
What's the risk/reward for a bull call spread on AAPL $175/$180?
Show me P&L chart for a covered call on TSLA at $250 strikeOutput:
Max profit & max loss
Break-even points
Net premium/debit
Combined Greeks for entire position
P&L chart (profit/loss at various prices)
Risk/reward ratio
22. get_extended_hours_data
Track pre-market and after-hours trading activity.
Input:
{
"symbol": "TSLA"
}Example:
What's Tesla trading at in pre-market?
Show me after-hours price for AAPL
Get extended hours data for NVDAOutput:
{
"symbol": "TSLA",
"companyName": "Tesla, Inc.",
"currentSession": "pre-market",
"preMarket": {
"price": 185.50,
"change": 2.35,
"changePercent": 1.28,
"isActive": true
},
"regularMarket": {
"price": 183.15,
"change": -1.50,
"changePercent": -0.81,
"isOpen": false
},
"currentPrice": 185.50,
"currentChange": 2.35
}Trading Sessions:
Pre-market: 4:00 AM - 9:30 AM ET
Regular: 9:30 AM - 4:00 PM ET
After-hours: 4:00 PM - 8:00 PM ET
23. get_short_interest
Monitor short interest and short squeeze potential.
Input:
{
"symbol": "GME"
}Example:
What's the short interest for GameStop?
Show me short squeeze potential for AMC
How many days to cover short positions on TSLA?Output:
{
"symbol": "GME",
"companyName": "GameStop Corp.",
"shortInterest": {
"shortRatio": 7.5,
"shortPercentOfFloat": 22.3,
"sharesShort": 15420000,
"shortInterestChange": 1200000,
"shortInterestChangePercent": 8.4
},
"squeezeAnalysis": {
"risk": "high",
"score": 85,
"interpretation": "HIGH SQUEEZE RISK: high days to cover (7.5 days) and very high short interest (22.3% of float)"
}
}Squeeze Risk Levels:
High: Short ratio >10 days OR short % >30% (Score: 70-100)
Medium: Short ratio >3 days OR short % >15% (Score: 40-69)
Low: Lower short interest (Score: 0-39)
24. get_analyst_ratings
Track Wall Street analyst recommendations and target prices.
Input:
{
"symbol": "AAPL"
}Example:
What do analysts think about Apple?
Show me analyst ratings for Microsoft
What's the price target for NVDA?Output:
{
"symbol": "AAPL",
"companyName": "Apple Inc.",
"consensus": {
"rating": "buy",
"targetPrice": 195.50,
"targetPriceHigh": 225.00,
"targetPriceLow": 165.00,
"numberOfAnalysts": 42
},
"ratingDistribution": {
"strongBuy": 15,
"buy": 20,
"hold": 5,
"sell": 2,
"strongSell": 0,
"total": 42
},
"trend": {
"direction": "improving",
"bullishPercent": 83.3,
"bearishPercent": 4.8,
"description": "Strong bullish consensus with 83% buy ratings"
},
"priceComparison": {
"currentPrice": 178.50,
"upside": 9.5,
"upsideToHigh": 26.1
}
}Consensus Ratings:
Buy: >50% buy/strong buy ratings
Hold: Mixed opinions or 60%+ hold ratings
Sell: >50% sell/strong sell ratings
25. analyze_news_impact
Correlate news events with stock price movements.
Input:
{
"symbol": "TSLA",
"days_back": 30,
"news_limit": 20
}Example:
How does news affect Tesla's stock price?
Which news had the biggest impact on AAPL?
Analyze news correlation for MicrosoftOutput:
{
"symbol": "TSLA",
"companyName": "Tesla, Inc.",
"overallStatistics": {
"correlationStrength": "strong",
"significantImpacts": 5,
"averageImpact1Hour": 0.8,
"averageImpact1Day": 2.3,
"impactDistribution": {
"positiveNews": 12,
"negativeNews": 5,
"neutralNews": 3
}
},
"topImpactEvents": {
"mostPositiveImpact": {
"title": "Tesla Deliveries Beat Expectations",
"changePercent": 8.5,
"impactLevel": "significant"
},
"mostNegativeImpact": {
"title": "Production Delays Announced",
"changePercent": -5.2,
"impactLevel": "significant"
}
},
"newsImpacts": [
{
"news": {
"title": "Tesla Deliveries Beat Expectations",
"timestamp": "2024-01-10T14:30:00Z"
},
"priceChanges": {
"after1Hour": {
"changePercent": 1.2
},
"after1Day": {
"changePercent": 8.5
}
},
"impact": {
"level": "significant",
"score": 92,
"direction": "positive"
}
}
]
}Impact Classification:
Significant: ≥5% price movement (Score: 70-100)
Moderate: 2-5% price movement (Score: 40-69)
Minor: 0.5-2% price movement (Score: 15-39)
Negligible: <0.5% price movement (Score: 0-14)
Available Resources
watchlist://default
Access your default watchlist of tracked symbols.
Example:
Show me my watchlistmarket://summary
Get real-time summary of major market indices (S&P 500, Dow Jones, NASDAQ, VIX).
Example:
What's the market doing today?market://trending
Get trending and most active stocks.
Example:
What stocks are trending?Example Use Cases
Investment Analysis
1. Get current price of Tesla (TSLA)
2. Show me the last 6 months of daily data for TSLA
3. Calculate the 50-day moving average for TSLA
4. Calculate RSI for TSLA
5. Get latest news about TeslaCrypto Tracking
1. Get current prices for BTC-USD, ETH-USD, and ADA-USD
2. Show me Bitcoin's price history for the last week with hourly intervals
3. Calculate MACD for Ethereum
4. What's the market summary?Technical Analysis
1. Calculate Bollinger Bands for Apple stock
2. Show me the RSI for MSFT
3. Calculate the 20-day and 50-day moving averages for GOOGL
4. Get stochastic oscillator for SPYMarket Research
1. Search for companies in the electric vehicle sector
2. Get quotes for the top results
3. Compare their market caps and P/E ratios
4. Get news for each companyOptions Trading - Pre-Earnings Analysis
1. When is Apple's next earnings date?
2. Show me the options chain for AAPL
3. What's the current implied volatility for AAPL?
4. Calculate historical volatility for comparison
5. Find options with high IV to potentially sell premiumOptions Trading - Strategy Building
1. Show me TSLA options expiring next month
2. Calculate Greeks for $250 call
3. Analyze an iron condor strategy on TSLA
4. What's the max profit and max loss?
5. Show me the P&L chartOptions Trading - Risk Management
1. Get the Greeks for my AAPL $180 call position
2. What's my delta exposure?
3. How much am I losing to time decay (theta)?
4. Calculate max pain for this expiration
5. Should I hedge with a protective put?Options Trading - Volatility Analysis
1. Compare IV vs HV for SPY
2. Is this a high or low volatility environment?
3. Show me IV by expiration (term structure)
4. Find opportunities where IV is elevated
5. Calculate historical volatility for the past 30 daysTechnical Details
Data Source
All data is sourced from Yahoo Finance via the yahoo-finance2 library. Yahoo Finance provides:
Real-time quotes (with 15-minute delay for some markets)
Historical data going back many years
Cryptocurrency data (BTC-USD, ETH-USD, etc.)
No API key required
Free for personal and educational use
Caching Strategy
The server implements intelligent caching to minimize API calls and improve performance:
Quotes: 5 seconds (adjusts based on market hours)
Historical Data: 1 hour during market hours, 24 hours after hours
News: 5 minutes
Search Results: 1 hour
Technical Indicators: 5 minutes
Market Summary: 1 minute
Cache TTLs automatically extend during weekends and after market hours to reduce unnecessary API calls.
Error Handling
The server provides clear, actionable error messages:
Invalid Symbol (404): Symbol not found, check ticker
Validation Error (400): Invalid input parameters
Rate Limit (429): Too many requests, try again later
Network Error (502): Connection issues
Timeout (504): Request took too long
Technical Indicators Library
Uses the technicalindicators library for accurate, battle-tested calculations. Supports:
RSI with overbought/oversold signals
MACD with bullish/bearish crossover detection
Multiple moving average types
Bollinger Bands with bandwidth and %B calculations
Stochastic oscillator
CI/CD & Automation
This project uses GitHub Actions for continuous integration and deployment:
Automated Workflows
PR Quality Checks - Runs on every pull request
Security scanning (npm audit, Trivy, TruffleHog)
Code quality checks (ESLint, formatting)
Build verification
Tests across multiple Node.js versions (18.x, 20.x, 22.x)
Dependency review
Automatic Publishing - Runs on merge to main
Auto version bump
npm registry publication with provenance
GitHub release creation
Package artifact upload
Setup for Contributors
See .github/workflows/README.md for detailed workflow documentation.
Required Secrets (for maintainers):
NPM_TOKEN- For publishing to npm registry (requires 2FA bypass or automation token)
Development
Claude Code Integration
This project is optimized for development with Claude Code, Anthropic's official CLI tool. The .claude/ directory contains configuration and guides to help Claude work more effectively with the codebase.
For Claude Code Users:
.claude/CLAUDE_GUIDE.md- Quick reference for working with this codebase.claude/ARCHITECTURE.md- Detailed system architecture and design decisions.claude/COMMON_TASKS.md- Step-by-step workflows for common development tasks.claude/settings.local.json- Pre-configured permissions for common operations.claudeignore- Optimized to exclude unnecessary files from context
Getting Started with Claude Code:
# Install Claude Code (if not already installed)
npm install -g @anthropic/claude-code
# Navigate to project and start Claude
cd mcp-financex
claude
# Claude will automatically load project configuration
# Try: "Help me add a new technical indicator"Project Structure
mcp-financex/
├── .claude/ # Claude Code configuration
│ ├── CLAUDE_GUIDE.md # Quick reference guide
│ ├── ARCHITECTURE.md # System architecture
│ ├── COMMON_TASKS.md # Development workflows
│ └── settings.local.json # Claude permissions
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── tools/ # MCP tool implementations
│ ├── resources/ # MCP resource implementations
│ ├── services/ # Core services (Yahoo Finance, cache, indicators)
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utilities (error handling, validation)
├── tests/ # Test files
├── .claudeignore # Files to exclude from Claude context
├── package.json
├── tsconfig.json
└── README.mdScripts
npm run build- Compile TypeScript to JavaScriptnpm run dev- Run in development mode with auto-reloadnpm start- Run compiled servernpm test- Run testsnpm run lint- Run ESLintnpm run format- Format code with Prettier
Testing
Run the test suite:
npm testRun tests in watch mode:
npm run test:watchGenerate coverage report:
npm run test:coverageEnvironment Variables
Configuration options (optional, defaults provided):
# Server Configuration
NODE_ENV=development
LOG_LEVEL=info
# Cache Configuration (in seconds)
CACHE_DEFAULT_TTL=300
CACHE_QUOTE_TTL=5
CACHE_HISTORICAL_TTL=3600
CACHE_NEWS_TTL=300
CACHE_SEARCH_TTL=3600
CACHE_INDICATOR_TTL=300
# Yahoo Finance Configuration
YAHOO_FINANCE_TIMEOUT=10000
YAHOO_FINANCE_RETRY_ATTEMPTS=3
YAHOO_FINANCE_RETRY_DELAY=1000Limitations
Rate Limiting: Yahoo Finance has rate limits. The server implements caching and retry logic to mitigate this.
Real-time Data: Some quotes may have a 15-minute delay depending on the exchange.
Intraday Data: Intraday intervals (1m, 5m, etc.) have limited historical data (typically 7 days).
Crypto Coverage: Primarily supports major cryptocurrencies paired with USD (BTC-USD, ETH-USD, etc.).
No Authentication: Yahoo Finance data is public and doesn't require authentication, but usage should comply with Yahoo's terms of service.
Future Enhancements
Planned features for future releases:
Portfolio tracking and P&L calculations
Price alerts and notifications
Backtesting capabilities
More technical indicators (Ichimoku, Fibonacci, etc.)
Options data and Greeks calculations
Comparison tools for multiple stocks
Export to CSV/JSON
Redis caching for multi-instance deployments
WebSocket streaming for real-time updates
Troubleshooting
"Symbol not found" Error
Make sure you're using the correct ticker symbol format:
Stocks:
AAPL,MSFT,GOOGLCrypto:
BTC-USD,ETH-USD(notBTCalone)Indices:
^GSPC(S&P 500),^DJI(Dow Jones)
"Rate limit exceeded" Error
The server is making too many requests to Yahoo Finance. The built-in caching should prevent this, but if it occurs:
Wait a few minutes before retrying
Reduce the frequency of requests
Check cache configuration
Connection Issues
Ensure you have a stable internet connection. The server will automatically retry failed requests up to 3 times with exponential backoff.
Publishing to npm
To make this package available for external deployment (so users can run it with npx without installation):
First-time setup:
Create an npm account (if you don't have one):
npm adduserUpdate package.json with your GitHub repository URL:
"repository": { "type": "git", "url": "git+https://github.com/xerktech/mcp-financex.git" }Build and publish:
npm run build npm publish
For updates:
Update version in package.json:
npm version patch # 1.0.0 -> 1.0.1 npm version minor # 1.0.0 -> 1.1.0 npm version major # 1.0.0 -> 2.0.0Publish:
npm publish
Once published, users can use it in their Claude Desktop config:
{
"mcpServers": {
"finance": {
"command": "npx",
"args": ["-y", "mcp-financex"]
}
}
}This is similar to how the Alpha Vantage MCP works with uvx - users don't need to install anything locally!
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Please ensure:
Code follows the existing style (use
npm run format)Tests pass (
npm test)New features include tests
Documentation is updated
License
MIT License - see LICENSE file for details
Acknowledgments
Model Context Protocol by Anthropic
yahoo-finance2 for Yahoo Finance API access
technicalindicators for technical analysis calculations
Disclaimer
This software is provided for educational and informational purposes only. It is not intended as financial advice. Always do your own research and consult with a qualified financial advisor before making investment decisions. The authors are not responsible for any financial losses incurred through the use of this software.
Yahoo Finance data is subject to Yahoo's terms of service. This project is not affiliated with or endorsed by Yahoo.
Available Tools
26 toolsanalyze_news_impactA
News Impact Analysis | Price Movement Correlation | Event-Driven Trading - Analyze how news events affect stock prices over time. Correlates news articles with price movements to identify which news has the most significant impact on stock performance.
Key Metrics:
Short-Term Impact (1 Hour): Immediate price reaction to news
Medium-Term Impact (1 Day): Daily price movement after news
Long-Term Impact (1 Week): Extended price trend following news
Impact Score: 0-100 score indicating magnitude of price movement
Impact Direction: Positive, negative, or neutral price impact
Correlation Strength: Overall news-price correlation (strong/moderate/weak/none)
Impact Classification:
Significant: ≥5% price movement (Score: 70-100)
Moderate: 2-5% price movement (Score: 40-69)
Minor: 0.5-2% price movement (Score: 15-39)
Negligible: <0.5% price movement (Score: 0-14)
Use Cases:
"How does news affect Tesla stock price?"
"Which news had the biggest impact on AAPL?"
"Analyze news correlation for Microsoft"
"Show me price movements after earnings news"
"What news caused the biggest price drop for NVDA?"
Why It Matters: News impact analysis helps:
Event-Driven Trading: Identify patterns in news-driven price movements
Risk Management: Understand how different news types affect volatility
Trading Strategy: Time entry/exit based on news impact patterns
Market Sentiment: Gauge how market reacts to different news categories
Analysis Insights:
Aggregate statistics across all news events
Most positive and negative impact events
Correlation between news frequency and price volatility
Category-specific impact patterns (earnings, M&A, analyst ratings, etc.)
Important Notes:
Correlation does not imply causation - other factors may influence price
Market-wide events can affect all stocks simultaneously
Low-volume stocks may show exaggerated price impacts
Some news may be priced in before official publication
Returns: Individual news impacts, aggregate statistics, top impacts, correlation strength, and event analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol to analyze news impact for (e.g., "AAPL", "TSLA"). The analysis will cover recent news and corresponding price movements. | |
| days_back | No | Number of days to look back for news analysis (default: 30, max: 90). Longer periods provide more data but may include less relevant events. | |
| news_limit | No | Maximum number of news articles to analyze (default: 20, max: 50). More articles provide better statistical analysis but take longer to process. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of behavioral transparency. It thoroughly discloses the analytical approach (impact scores, direction, classification), and includes important caveats about correlation, market-wide events, low-volume stocks, and news pre-pricing. This ensures the agent understands the tool's behavior and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured with sections (Key Metrics, Impact Classification, Use Cases, etc.). It is front-loaded with the core purpose. Every section adds value, though some redundancy exists (e.g., 'Why It Matters' partly repeats 'Analysis Insights'). Overall, it earns its length for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of an output schema, the description thoroughly covers what the tool returns: individual news impacts, aggregate statistics, top impacts, correlation strength, and event analysis. It also addresses use cases and limitations, making it contextually complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for all three parameters. The description adds value beyond the schema by explaining trade-offs for days_back and news_limit (e.g., 'Longer periods provide more data but may include less relevant events'). This enhances semantic understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes how news events affect stock prices over time, correlating news with price movements. It distinguishes itself from sibling tools like get_market_news and compare_peer_companies by focusing on impact analysis rather than just retrieving news or comparing peers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases with example queries, such as 'How does news affect Tesla stock price?' and 'Which news had the biggest impact on AAPL?'. It includes 'Important Notes' that caution about correlation vs. causation and other limitations, but lacks direct comparison to alternatives like get_market_news for when to use each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_options_strategyA
Analyze an options strategy to calculate max profit, max loss, break-even points, Greeks, and generate a profit/loss chart. Supports complex multi-leg strategies like spreads, straddles, iron condors, and butterflies. Helps visualize risk/reward before entering a trade.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | Yes | Strategy legs (options positions) | |
| symbol | Yes | Stock ticker symbol | |
| strategy | Yes | Strategy type | |
| expirationDate | Yes | Expiration date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states outputs (max profit, loss, break-even, Greeks, chart) but does not disclose data source (live vs. cached), freshness, or any side effects. It implies calculation and visualization but lacks detail on behavior like whether it uses market data or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three clear sentences: first defines function and outputs, second lists supported strategy complexity, third states use case. No extraneous words, efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an options analysis tool with 100% schema coverage and no output schema, the description adequately covers purpose, outputs, and supported strategies. Lacks mention of chart format or data source, but overall sufficient for an agent to understand when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds context about supporting multi-leg strategies and that premium can be optional (already in schema). The description provides marginal additional clarity but does not significantly extend beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes options strategies to calculate specific metrics (max profit, loss, break-even, Greeks) and generate a chart. It lists supported multi-leg strategies (spreads, straddles, iron condors, butterflies), distinguishing it from siblings like 'calculate_greeks' (only Greeks) or 'get_options_chain' (raw data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it helps visualize risk/reward before entering a trade, which implies appropriate usage context. However, it does not explicitly state when not to use it or reference alternative tools (e.g., calculate_greeks for just Greeks, get_options_chain for raw data). No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_dcf_valuationA
DCF Valuation | Intrinsic Value | Investment Analysis - Calculate intrinsic value using Discounted Cash Flow (DCF) analysis. Get 5-year cash flow projections, terminal value, and investment recommendations.
What DCF Analysis Provides:
Intrinsic Value: Fair value per share based on future cash flows
Investment Recommendation: Strong Buy, Buy, Hold, Sell, Strong Sell
Upside/Downside: Percentage difference vs current market price
5-Year Projections: Revenue and free cash flow forecasts
Sensitivity Analysis: How valuation changes with different assumptions
Key Inputs (customizable):
Revenue growth rates (5-year projection)
Free cash flow margin
WACC (Weighted Average Cost of Capital)
Terminal growth rate
Shares outstanding, debt, cash
Investment Recommendations:
Strong Buy: >30% upside
Buy: 15-30% upside
Hold: -10% to 15%
Sell: -25% to -10%
Strong Sell: <-25% downside
Sensitivity Analysis: Tests valuation sensitivity to:
WACC changes (+/- 2%)
Terminal growth rate changes (+/- 1%)
Free cash flow margin changes (+/- 5%)
Use Cases:
"Calculate intrinsic value for Apple"
"Is Tesla overvalued or undervalued?"
"DCF analysis for NVDA with sensitivity"
"What is Microsoft worth based on DCF?"
"Should I buy this stock?" (based on DCF)
Returns: Intrinsic value, current price comparison, recommendation, projections, optional sensitivity analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol to value (e.g., "AAPL", "TSLA"). Required. | |
| customInputs | No | Optional custom inputs to override default assumptions. If not provided, defaults are calculated from historical data and market conditions. | |
| includeSensitivity | No | When true, includes sensitivity analysis showing how valuation changes with: WACC (+/- 2%), terminal growth rate (+/- 1%), and FCF margin (+/- 5%). Useful for understanding valuation robustness. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It details what the tool returns (intrinsic value, recommendation, projections, sensitivity analysis) and explains that inputs are customizable with defaults from historical data. It does not mention rate limits, destructive effects, or error states, but for a computational model, the transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, bullet points, and a table, making it readable. However, it is verbose: the 'What DCF Analysis Provides' section partially duplicates 'Returns'. The first sentence gets to the point, but the overall length could be reduced without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description adequately covers return values (intrinsic value, recommendation, projections, sensitivity analysis) and input options. It explains the investment recommendation thresholds and sensitivity analysis scope. However, it could be more explicit about the output format (e.g., JSON structure) and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a clear description. The description adds a high-level overview of key inputs (e.g., 'Revenue growth rates', 'WACC') and groups them, but it largely paraphrases what is already in the schema. There is no extra semantic insight beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it calculates intrinsic value using Discounted Cash Flow analysis, with specific focus on stock valuation. While the purpose is well-defined, it does not explicitly differentiate from sibling tools that might also compute valuations (e.g., 'get_analyst_ratings' or 'compare_peer_companies'). The title 'DCF Valuation | Intrinsic Value | Investment Analysis' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists concrete use cases (e.g., 'Calculate intrinsic value for Apple') and suggests when to enable sensitivity analysis. However, it provides no guidance on when NOT to use this tool or alternatives (e.g., for simple price checks, use get_quote). The usage context is implied but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_greeksA
Calculate option Greeks (Delta, Gamma, Theta, Vega, Rho) using the Black-Scholes model. Greeks measure risk and sensitivity:
Delta: Price change per $1 move in underlying (0-1 for calls, -1-0 for puts)
Gamma: Rate of delta change
Theta: Daily time decay
Vega: Sensitivity to 1% volatility change
Rho: Sensitivity to 1% interest rate change
| Name | Required | Description | Default |
|---|---|---|---|
| strike | Yes | Option strike price | |
| symbol | Yes | Stock ticker symbol | |
| optionType | Yes | Option type: call or put | |
| riskFreeRate | No | Risk-free interest rate as decimal (optional, default: 0.045) | |
| dividendYield | No | Annual dividend yield as decimal (optional, default: 0) | |
| expirationDate | Yes | Expiration date in YYYY-MM-DD format | |
| underlyingPrice | No | Current underlying price (optional, will be fetched if not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the model (Black-Scholes) and defines the output Greeks meaningfully. However, it omits limitations (e.g., European options only) and does not mention that the tool can fetch underlying price if not provided, nor any authentication or rate limit concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and includes structured bullet points for Greek definitions. It is reasonably concise, though the definitions could be considered verbose; every sentence serves a purpose without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by explaining the returned Greeks. Parameter descriptions in schema are complete. The tool's context is adequately covered for a financial calculation tool, though it assumes familiarity with Black-Scholes and option types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter. The description adds definitions for Greeks (outputs) but does not enhance parameter understanding beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Calculate' and the resource 'option Greeks', specifying the Black-Scholes model. It lists the specific Greeks (Delta, Gamma, Theta, Vega, Rho), which uniquely identifies this tool among siblings like 'calculate_historical_volatility' or 'calculate_indicator'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for computing option Greeks with given parameters, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'analyze_options_strategy' might also involve Greeks). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_historical_volatilityA
Calculate historical volatility (realized volatility) for multiple periods. Historical volatility measures past price fluctuations and is used to compare with implied volatility to identify potential opportunities. Returns annualized volatility percentages.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol | |
| periods | No | Array of periods in days to calculate (default: [10, 20, 30, 60, 90]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the output is annualized volatility percentages but omits details on calculation methodology, data source, or any side effects. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no fluff: first states purpose, second adds context, third states output format. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description covers the output (annualized volatility percentages) and key usage. It could specify that results are returned per period, but overall it's sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already documents both parameters well. The description adds minimal extra meaning beyond 'multiple periods' and does not detail the period array format or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's function: calculating historical volatility for multiple periods. It explicitly mentions the use case of comparing with implied volatility, which distinguishes it from siblings like get_implied_volatility and get_historical_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (comparing with implied volatility for opportunities) but does not state explicit alternatives or conditions where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_indicatorB
Calculate technical indicators on price data for a stock or cryptocurrency. Supports RSI, MACD, SMA, EMA, Bollinger Bands, and Stochastic oscillator. Returns calculated values with timestamps and trading signals where applicable.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Lookback period for calculation (default varies by indicator: RSI=14, SMA/EMA=20, Bollinger Bands=20, Stochastic=14, MACD=12 for fast period) | |
| symbol | Yes | Ticker symbol (e.g., AAPL, BTC-USD, MSFT) | |
| interval | No | Data interval for calculations (default: 1d for daily data) | |
| indicator | Yes | Technical indicator to calculate: - rsi: Relative Strength Index (momentum oscillator, 0-100) - macd: Moving Average Convergence Divergence (trend following) - sma: Simple Moving Average (trend indicator) - ema: Exponential Moving Average (trend indicator, more responsive) - bollinger_bands: Bollinger Bands (volatility indicator) - stochastic: Stochastic Oscillator (momentum indicator) | |
| startDate | No | Start date for historical data (optional, defaults to sufficient data for indicator) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions the tool returns 'calculated values with timestamps and trading signals where applicable,' which gives some behavioral context. However, it does not disclose data freshness, required authentication, rate limits, or any side effects beyond being a read-only calculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose and resource. Every sentence adds value: first defines action and assets, second describes output. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and no output schema. The description provides only a high-level overview of return values ('calculated values with timestamps and trading signals'), which is insufficient for an agent to understand the exact output structure for each indicator (e.g., fields for MACD vs RSI). Error handling and data availability are also omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed descriptions for each parameter (e.g., defaults for period, enum values for indicator). The description adds minimal extra meaning beyond listing the supported indicators, which is already in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates technical indicators on price data for stocks or cryptocurrencies, and explicitly lists supported indicators (RSI, MACD, SMA, EMA, Bollinger Bands, Stochastic). This specific verb-resource pairing distinguishes it from siblings like calculate_dcf_valuation or get_historical_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., get_historical_data for raw data, calculate_historical_volatility for volatility, etc.). There is no explicit when-to-use, when-not-to-use, or comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_max_painB
Calculate the max pain price for an options expiration. Max pain is the strike price where option holders (buyers) experience maximum loss, and option writers (sellers) experience maximum profit. Many traders believe prices gravitate toward max pain as expiration approaches.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol | |
| expirationDate | No | Expiration date in YYYY-MM-DD format (optional, defaults to nearest expiration) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as data sources, calculation methods, prerequisites (e.g., need options chain data), or side effects. The description is purely definitional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, with the first sentence stating the purpose, the second defining the term, and the third providing context. No wasted words, but it could be more structured with a bulleted list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description fails to explain what the tool returns (e.g., a single number, an object with strike price and total OI). This is a significant gap for a calculation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions (schema coverage 100%). The description does not add any new information about parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool calculates the max pain price for an options expiration and defines what max pain is. It clearly distinguishes from sibling tools like calculate_greeks or get_options_chain by its specific focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that many traders believe prices gravitate toward max pain as expiration approaches, implying when to use it (near expiration). However, it does not explicitly say when to use this tool versus alternatives like calculate_greeks or get_options_chain, and provides no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_peer_companiesA
Peer Comparison | Competitive Analysis | Compare Companies Side-by-Side - Compare key financial metrics across multiple companies to identify relative strengths and weaknesses. Useful for competitive analysis, sector comparison, and investment decisions.
What you can compare:
Valuation Metrics: Market cap, P/E ratio, P/B ratio, EV/EBITDA
Profitability: Gross margin, operating margin, net margin, ROA, ROE
Growth: Revenue growth, earnings growth
Liquidity: Current ratio, quick ratio
Leverage: Debt-to-equity, debt-to-assets, interest coverage
Efficiency: Asset turnover
Earnings Quality: Quality of earnings, cash conversion rate
Use Cases:
"Compare Apple, Microsoft, and Google financials"
"Which tech company has better margins?"
"Compare Tesla vs traditional automakers"
"Analyze competitors in the semiconductor sector"
"Who has the strongest balance sheet among banks?"
Returns: Side-by-side comparison of key metrics for up to 10 companies.
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | Optional: Specific metrics to compare. If not provided, returns all key metrics. Examples: ["marketCap", "peRatio", "netMargin", "debtToEquity", "roe"] | |
| symbols | Yes | Array of stock ticker symbols to compare (e.g., ["AAPL", "MSFT", "GOOGL"]). Minimum 2 companies, maximum 10 companies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return type (side-by-side comparison of key metrics) and limits (up to 10 companies). However, it does not mention any behavioral details like rate limits, authorization, or response structure, which is acceptable for a read-only comparison tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and use cases, front-loading the purpose. While slightly long, every section adds value for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters, no output schema, and no annotations, the description is quite complete. It covers what can be compared, use cases, and return type. It lacks output schema details, but that is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds value by listing example metrics and categories, but the schema already explains the parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares key financial metrics across multiple companies, with specific metrics and use cases listed. It distinguishes from siblings like get_quote (single company) and search_ticker (ticker search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases (e.g., 'Compare Apple, Microsoft, and Google financials') and specifies that it returns side-by-side comparison. It doesn't explicitly state when not to use it, but the context of sibling tools gives implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_13dg_ownership_changesA
13D/G Ownership Changes | Major Stakes | Activist Investors - Track major ownership changes (5%+ stakes) from SEC Schedule 13D and 13G filings. 13D filings indicate activist intent, while 13G filings indicate passive ownership.
What you can track:
Major ownership changes (5%+ of company shares)
Activist investor campaigns (Carl Icahn, Bill Ackman, etc.)
Passive institutional stakes (13G)
Potential takeover targets
Hedge fund 13D activity
Form Types:
13D: Active ownership with intent to influence (activist investors)
13G: Passive ownership without intent to influence
Amendments: /A suffix indicates filing updates
Use Cases:
"Show me recent 13D filings" (activist activity)
"Who filed 13D for Tesla?"
"Recent activist investor campaigns"
"Major ownership changes in tech sector"
Returns: Reporting person, ownership percentage, purpose, filing dates, direct SEC links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of filings to return (default: 20, max: 50) | |
| symbol | No | Stock ticker symbol to get ownership filings for (e.g., "AAPL", "TSLA"). Omit to get market-wide recent filings. | |
| formType | No | Type of filing to retrieve: "13D" = Active ownership (activist investors), "13G" = Passive ownership, "both" = All ownership filings (default). | |
| activistOnly | No | When true, only returns activist investors (those with multiple 13D filings). Useful for identifying activist campaigns. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly describes what is returned: reporting person, ownership percentage, purpose, filing dates, SEC links. Explains form types and amendments. Lacks details on rate limits or authentication, but sufficient for behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings and bullet points. Front-loaded with summary. Every sentence adds value, but slightly longer than necessary; could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description adequately covers return values and filing types. For a tool with 4 parameters and moderate complexity, the description is complete and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds significant meaning: explains formType enum values ('13D' vs '13G' vs 'both'), activistOnly flag, and default values. Provides context beyond schema, e.g., 'activistOnly: returns only activist investors with multiple 13D filings'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it tracks major ownership changes (5%+ stakes) from SEC Schedule 13D and 13G filings. Distinguishes between 13D (activist intent) and 13G (passive ownership), and provides clear use cases. Differentiates from sibling tools like get_13f_institutional_holdings or get_insider_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use cases (e.g., 'Show me recent 13D filings', 'Who filed 13D for Tesla?'). Explains when to use each form type. Does not explicitly state when not to use, but context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_13f_institutional_holdingsA
13F Institutional Holdings | Hedge Fund Tracking | See What Warren Buffett is Buying - Track institutional investor holdings from SEC Form 13F filings. 13F filings are filed quarterly by institutions managing >$100M in assets.
What you can track:
Hedge fund portfolio holdings (Berkshire Hathaway, Bridgewater, etc.)
Mutual fund positions
Pension fund investments
Quarterly changes (new positions, sold positions, increases, decreases)
Activist investor identification
Use Cases:
"What is Berkshire Hathaway buying?" (use CIK: 0001067983)
"Show me recent 13F filings for Bridgewater"
"Track quarterly changes in institutional holdings"
"Find activist investors"
Returns: Institution details, filing dates, holdings summaries, quarterly comparison data.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK (Central Index Key) of the institution to track. Examples: Berkshire Hathaway (0001067983), Vanguard Group (0000102909), BlackRock (0001086364). Required for institution-specific tracking. | |
| limit | No | Maximum number of filings to return (default: 10, max: 40) | |
| compareQuarters | No | When true, compares the most recent filing with the previous quarter to show: additions (new positions), reductions (sold positions), increases, and decreases. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return data (institution details, filing dates, holdings summaries) and explains compareQuarters behavior; no destructive actions indicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and sections, though somewhat lengthy; front-loaded with key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately covers what the tool returns, use cases, and parameter context for a moderately complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds meaning with CIK examples and explanation of compareQuarters, enhancing beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it tracks institutional investor holdings from SEC Form 13F filings, with specific examples like Berkshire Hathaway and use cases that precisely define the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases with CIK examples, but does not directly distinguish from sibling tools like get_13dg_ownership_changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_8k_material_eventsA
8-K Material Events | Corporate News | SEC Current Reports - Get SEC Form 8-K current reports of material corporate events. 8-K filings are filed within 4 business days of significant events.
Event Categories Tracked:
Business Events: Material agreements, bankruptcy, cybersecurity incidents
Financial Events: M&A completion, earnings releases, impairments, debt changes
Securities Events: Delisting notices, unregistered sales, rights modifications
Governance Events: Director/officer changes, control changes, voting results
Disclosure Events: Regulation FD disclosures
Key Item Numbers:
Item 1.01: Material agreements
Item 1.05: Cybersecurity incidents
Item 2.01: M&A completion
Item 2.02: Earnings releases
Item 5.02: Director/officer changes
Item 8.01: Other material events
Use Cases:
"Show me recent 8-K filings for Apple"
"What are the latest material events?"
"Show me earnings-related 8-Ks" (Item 2.02)
"Recent management changes" (Item 5.02)
Returns: Event details, item categories, filing dates, company info, direct SEC links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of events to return (default: 20, max: 50) | |
| symbol | No | Stock ticker symbol to get material events for (e.g., "AAPL", "TSLA"). Omit to get market-wide recent events. | |
| category | No | Filter by event category: "business" = Material agreements, bankruptcy, cybersecurity; "financial" = M&A, earnings, impairments; "securities" = Delisting, stock sales; "governance" = Management changes, voting; "disclosure" = Regulation FD; "all" = All events (default). | |
| itemNumbers | No | Filter by specific 8-K item numbers (e.g., ["2.02", "5.02"]). Useful for tracking specific event types like earnings (2.02) or management changes (5.02). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions filing timeliness (4 business days) and return content, but does not disclose potential rate limits, authentication needs, or any destructive actions. The return format is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but well-organized with sections and bullet points. It starts with a clear summary and uses whitespace effectively. Every sentence adds information, though it could be slightly tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a reasonable overview of return contents. With 4 optional parameters fully documented in schema, the description covers usage scenarios and parameter values. It could mention pagination or default behaviors, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining event categories, item numbers, and their meanings, which goes beyond the schema's short descriptions. This helps the agent understand parameter semantics deeply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves SEC Form 8-K current reports, listing event categories and item numbers. It distinguishes itself from sibling tools like get_earnings_calendar and get_market_news by focusing exclusively on 8-K filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use cases are provided (e.g., 'Show me recent 8-K filings for Apple'), and the description implies when to use this tool vs. others (e.g., for 8-Ks vs. other forms). However, it lacks explicit 'when not to use' or direct alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_ratingsA
Analyst Ratings & Target Prices | Wall Street Consensus | Upgrades & Downgrades - Track analyst recommendations, price targets, and consensus changes for stocks. Get insights into what Wall Street analysts think about a company's prospects.
Key Metrics:
Consensus Rating: Overall buy/hold/sell recommendation from analysts
Target Price: Mean analyst price target with high/low/median ranges
Rating Distribution: Breakdown of strong buy, buy, hold, sell, strong sell ratings
Analyst Coverage: Number of analysts actively covering the stock
Price Upside/Downside: Potential gains or losses to target prices
Trend Analysis: Whether analyst sentiment is improving, deteriorating, or stable
Trend Indicators:
Improving: 50%+ buy ratings indicate bullish analyst sentiment
Deteriorating: 50%+ sell ratings indicate bearish analyst sentiment
Stable: 60%+ hold ratings or mixed opinions with no clear consensus
Use Cases:
"What do analysts think about Apple stock?"
"Show me analyst ratings for TSLA"
"What's the price target for Microsoft?"
"Which analysts are bullish on NVDA?"
"Is analyst sentiment improving for AMD?"
Why It Matters: Analyst ratings influence:
Stock Price: Upgrades often lead to price increases
Investor Sentiment: Wall Street opinions shape market perception
Trading Volume: Rating changes can trigger significant buying/selling
Target Setting: Price targets help investors gauge potential returns
Important Notes:
Analyst ratings are opinions, not guarantees
Consider multiple factors beyond analyst recommendations
Rating changes can be influenced by various factors (earnings, industry trends, etc.)
Strong consensus doesn't always predict future performance
Returns: Consensus rating, target prices, rating distribution, analyst coverage, upside/downside percentages, and trend analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Stock ticker symbol to get analyst ratings for (e.g., "AAPL", "MSFT"). Analyst ratings are typically available for widely-covered US stocks. | |
| symbols | No | Optional: Array of symbols to get analyst ratings for multiple stocks at once. If provided, this takes precedence over the single symbol parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It details the return metrics (consensus rating, target prices, etc.) and includes notes that analysts' opinions are not guarantees. However, it does not disclose potential rate limits, data freshness, or whether the tool is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections but is quite verbose. Sections like 'Why It Matters' and 'Important Notes' are somewhat extraneous for tool selection. Could be more concise while retaining key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description adequately explains the returned data. Parameter count is low and well-covered. No critical information is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the 'symbol' parameter with examples ('AAPL', 'MSFT') and notes about availability for widely-covered US stocks. The 'symbols' parameter is also briefly described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: track analyst recommendations, price targets, and consensus changes. It lists key metrics and use cases, distinguishing it from sibling tools like 'get_quote' or 'get_earnings_calendar' by focusing on analyst sentiment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides example use cases and 'Why It Matters,' but lacks explicit guidance on when to use this tool versus alternatives. No mention of prerequisites or when not to use it, though the context is somewhat implied by the examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividend_infoA
Get dividend information for a stock including dividend rate, yield, ex-dividend date, and payout ratio. Dividends affect options pricing, especially for calls around ex-dividend dates.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol (e.g., AAPL, MSFT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It lists returned fields but discloses no behavioral traits (e.g., read-only nature, data freshness, rate limits, or side effects). Basic info only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description adequately explains what is returned and hints at a use case. Could mention data source or update frequency, but it's near complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes 'symbol' as a ticker. The description does not add extra meaning beyond listing return fields, so it doesn't exceed the baseline for a well-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get' and the resource 'dividend information for a stock', listing specific fields (dividend rate, yield, ex-dividend date, payout ratio). This distinguishes it from sibling tools, none of which focus on dividends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a use case ('affects options pricing, especially for calls around ex-dividend dates') but does not explicitly state when to use or avoid this tool compared to alternatives. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_calendarA
Get upcoming earnings dates and historical earnings data for a stock. Earnings announcements significantly impact options pricing due to increased volatility. Returns earnings dates, estimates, and historical results.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Stock ticker symbol (optional, omit for market-wide calendar) | |
| daysAhead | No | Number of days ahead to look (default: 30, max: 365) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states what is returned (dates, estimates, historical results) but lacks details on pagination, error handling, or data scope (e.g., market-wide when symbol omitted). Basic transparency is present but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste. First sentence front-loads the core purpose, second adds relevant context, third lists returns. Efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 optional parameters and no output schema, the description adequately covers the main function. It could mention that omitting symbol gives market-wide calendar, but the schema already hints at that. Overall, reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description adds context about options volatility but does not enhance parameter meaning beyond what the schema already provides. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets upcoming earnings dates and historical earnings data for a stock, using a specific verb and resource. It differentiates from sibling tools like get_financial_statements or get_historical_data by focusing specifically on earnings calendar data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that earnings impact options pricing, implying use cases for options analysis, but does not explicitly state when to use this tool vs alternatives or when not to use it. No direct comparison with siblings is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_extended_hours_dataA
Pre-Market & After-Hours Trading | Extended Session Data | Early/Late Trading Activity - Get real-time pre-market and after-hours trading data for stocks. Extended hours trading occurs before and after regular market hours, allowing traders to react to news and events.
Trading Sessions:
Pre-Market: 4:00 AM - 9:30 AM ET (before regular hours)
Regular Hours: 9:30 AM - 4:00 PM ET (standard trading)
After-Hours: 4:00 PM - 8:00 PM ET (after regular hours)
Data Provided:
Pre-market price, change, volume
After-hours price, change, volume
Regular market data (for comparison)
Current active session indicator
Most recent price across all sessions
Use Cases:
"Show me Apple's pre-market price"
"What's Tesla trading at after-hours?"
"Get extended hours data for NVDA"
"Is there pre-market activity on AAPL?"
"Compare regular vs after-hours price for MSFT"
Why It Matters: Extended hours trading reveals early market reactions to:
Earnings announcements (typically after-hours or pre-market)
Breaking news and geopolitical events
Analyst upgrades/downgrades
Economic data releases
Important Notes:
Extended hours have lower liquidity (wider spreads)
Prices can be more volatile
Not all stocks are actively traded in extended hours
Returns: Pre-market and after-hours prices, changes, current session, and comparison with regular hours.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Stock ticker symbol to get extended hours data for (e.g., "AAPL", "TSLA"). Extended hours data is typically only available for US stocks. | |
| symbols | No | Optional: Array of symbols to get extended hours data for multiple stocks at once. If provided, this takes precedence over the single symbol parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the data provided, trading sessions, and important notes about liquidity and volatility. It does not mention authentication or update frequency, but covers core behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections but is somewhat verbose, including educational content ('Why It Matters'). It could be more concise while retaining clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return data (price, change, volume, session indicator). Parameter coverage is complete, and the description adds context about sessions and use cases. Almost complete for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context beyond schema: symbol description notes US stocks only, symbols parameter precedence. This adds meaningful guidance for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides real-time pre-market and after-hours trading data for stocks. It distinguishes from siblings by focusing specifically on extended hours, and includes explicit examples and data scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes use cases and important notes about when to use the tool (e.g., for early/late trading reactions) and limitations (lower liquidity, volatility). It does not mention alternatives among sibling tools, but the context makes the purpose clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_statementsA
Financial Statements | Income Statement | Balance Sheet | Cash Flow - Access comprehensive financial data from SEC 10-K (annual) and 10-Q (quarterly) filings. Get income statements, balance sheets, cash flow statements, and calculated financial ratios.
Available Data:
Income Statement: Revenue, gross profit, operating income, net income, EPS, EBITDA
Balance Sheet: Assets, liabilities, equity, cash, debt, working capital
Cash Flow: Operating cash flow, capital expenditures, free cash flow
Financial Ratios: Profitability, liquidity, leverage, and efficiency metrics
Financial Ratios Calculated:
Profitability: Gross margin, operating margin, net margin, ROA, ROE
Liquidity: Current ratio, quick ratio
Leverage: Debt-to-equity, debt-to-assets
Efficiency: Asset turnover
Use Cases:
"Get Apple's annual financial statements"
"Show me quarterly financials for Tesla"
"What is Microsoft's profit margin?"
"Compare balance sheets over 4 quarters"
"Calculate financial ratios for NVDA"
Returns: Complete financial statements, calculated ratios, period information, SEC filing links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of periods to retrieve (default: 4 for quarterly, 3 for annual). Useful for trend analysis over time. Max: 10. | |
| symbol | Yes | Stock ticker symbol to get financial statements for (e.g., "AAPL", "TSLA"). Required. | |
| periodType | No | Type of financial period: "annual" = Annual reports (10-K), "quarterly" = Quarterly reports (10-Q). Default: "annual". | |
| includeRatios | No | When true, calculates and includes financial ratios: profitability (margins, ROA, ROE), liquidity (current, quick), leverage (debt ratios), efficiency (asset turnover). Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses the data source (SEC filings), return components (statements, ratios, period info, links), and includes a parameter description for limit. It does not mention destructive actions or auth, but as a read-only data retrieval tool, this is adequate. Slightly more detail on response structure could improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and bullet points, making key information easy to scan. It is somewhat verbose but every section adds value. Front-loads the main purpose effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive, covering all financial statements and ratios, use cases, and return components. Without an output schema, it sufficiently explains what the tool returns. Given the complexity of financial data, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description adds value by explaining defaults (e.g., limit default depends on periodType) and providing context for includeRatios and periodType use cases, going beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it accesses financial statements from SEC filings, listing specific statements and ratios. It distinguishes from siblings like get_historical_data (price history) or get_options_chain (options data) by focusing on fundamental financial data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use case examples (e.g., 'Get Apple's annual financial statements') and mentions available data types. However, it does not explicitly state when to avoid using this tool in favor of alternatives, though the sibling list and context make it implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historical_dataA
Retrieve historical OHLCV (Open, High, Low, Close, Volume) price data for a stock or cryptocurrency. Supports various time intervals from 1 minute to 1 month. Useful for charting and technical analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Ticker symbol (e.g., AAPL, BTC-USD, MSFT) | |
| period1 | Yes | Start date/period. Can be ISO date (YYYY-MM-DD), relative period (1d, 7d, 1mo, 3mo, 1y), or timestamp. | |
| period2 | No | End date/period (optional, defaults to now). Can be ISO date (YYYY-MM-DD), relative period, or timestamp. | |
| interval | Yes | Data interval: 1m=1 minute, 5m=5 minutes, 15m=15 minutes, 30m=30 minutes, 1h=1 hour, 1d=1 day, 1wk=1 week, 1mo=1 month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions support for various time intervals but does not disclose behavioral traits like rate limits, error handling for invalid symbols, or data source specifics. With no annotations, the description could provide more context on execution behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core function, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and moderate complexity (4 parameters), the description adequately covers the purpose and usage scope. Could mention return format or data adjustments for completeness, but not lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds no new meaning beyond what is already provided in the parameter descriptions. The interval summary is useful but not additive beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves historical OHLCV price data for stocks or cryptocurrencies, specifying the resource and action. Distinguishes from siblings like get_quote (current price) and get_extended_hours_data by focusing on historical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates utility for charting and technical analysis, providing a clear use case. However, it does not explicitly state when not to use this tool (e.g., for current prices) or mention sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_implied_volatilityA
Get implied volatility (IV) data for a stock. IV represents market expectations of future volatility. Compare IV to historical volatility to identify high or low volatility environments. Returns current IV, IV by expiration, and comparison with historical volatility.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool returns current IV, IV by expiration, and comparison with historical volatility, which informs the agent of output content. However, it does not mention any side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately explains the concept of IV, its use, and what data is returned. It covers the essential information, though it could be slightly more detailed about the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (symbol) with 100% schema coverage. The schema already describes it as a stock ticker symbol, and the description adds no additional meaning or constraints beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool gets implied volatility data for a stock, specifying the verb (get) and resource (IV data). Distinguishes from sibling tools like calculate_historical_volatility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions comparing IV to historical volatility to identify high/low volatility environments, but does not explicitly state when to use this tool versus siblings like calculate_historical_volatility or calculate_greeks, nor does it provide when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_tradesA
🚨 PRIMARY TOOL FOR: SEC, EDGAR, FORM 4, INSIDER TRADING, INSIDER BUYING, INSIDER SELLING 🚨 This tool provides DIRECT REAL-TIME ACCESS to SEC.gov EDGAR database for Form 4 insider trading filings. DO NOT say "data unavailable" - THIS TOOL CAN RETRIEVE SEC Form 4 DATA.
ALWAYS use this tool when user mentions:
"SEC Form 4" or "Form 4 filings" or "SEC filings" or "EDGAR"
"insider trading" or "insider activity" or "insider transactions"
"insider buying" or "insider selling" or "insider purchases/sales"
"what are insiders doing" or "are insiders buying/selling"
"latest Form 4" or "recent insider trades"
Two operating modes:
Company-specific (provide symbol parameter): Returns detailed insider activity analysis for a specific stock including transaction history, net buying/selling sentiment, top insiders, and optional company fundamentals
Market-wide (omit symbol parameter): Returns recent Form 4 filings across all companies in the market
Example queries this tool handles:
"Show me insider trading for AAPL"
"Are insiders buying or selling Tesla stock?"
"What are the latest Form 4 filings?"
"Recent insider purchases in the last week"
"Show me insider selling activity for NVDA"
Data returned: Insider names, positions, transaction types (buy/sell), shares traded, prices, transaction values, filing dates, and direct links to SEC Form 4 documents.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return (default: 20, max: 100) | |
| symbol | No | Stock ticker symbol for company-specific insider analysis (e.g., "AAPL", "TSLA", "MSFT"). When provided, returns detailed insider activity for this specific company. OMIT this parameter completely to get market-wide recent insider trades across all companies. | |
| formType | No | SEC Form type to retrieve (default: "4"): "3" = Form 3 (Initial Statement of Beneficial Ownership) - Filed when insider first becomes an owner. "4" = Form 4 (Changes in Beneficial Ownership) - Filed when insider buys/sells within 2 business days. Most common for tracking active trading. "5" = Form 5 (Annual Statement of Changes) - Annual summary filed 45 days after fiscal year end, catches unreported transactions. Default is "4" which provides timely insider transaction data. | |
| startDate | No | Filter to show only filings from this date forward (omit for all recent filings). Accepts: ISO date format "YYYY-MM-DD" (e.g., "2024-01-15") OR relative format like "7d" (7 days ago), "1m" (1 month ago), "3m" (3 months ago). Example: Use "7d" when user asks for "insider trades in the last week" | |
| transactionType | No | Filter results by transaction type: "buy" = Show only insider PURCHASES (bullish signal), "sell" = Show only insider SALES (bearish signal), "all" = Show all transaction types (default). Use "buy" when user asks "are insiders buying?" or "sell" when user asks "are insiders selling?" | |
| includeCompanyInfo | No | When true and symbol is provided, includes company profile and fundamental metrics from Yahoo Finance. Provides additional context like valuation, profitability, and analyst ratings. Default: true when symbol is provided, ignored for market-wide mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It accurately describes real-time access to EDGAR, the two modes, and returned fields. It does not disclose limitations like rate limits or data freshness, but overall transparency is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured with headings, bullet points, and examples. It front-loads the primary purpose and uses emojis for emphasis. Every section serves a purpose, but slight trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains return values (insider names, positions, etc.). It covers both modes, all 6 parameters with enums, and provides sufficient context for an AI agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining parameter usage with examples (e.g., relative dates for startDate, mode switching via symbol presence), justifying a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool is for SEC Form 4 insider trading filings, distinguishes two operating modes (company-specific vs market-wide), and lists emitted data types. The verb 'retrieve' with resource 'SEC Form 4 data' is specific and differentiates from sibling tools like get_sec_form4_filings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear trigger keywords and example queries, making it obvious when to invoke this tool. However, it does not explicitly mention when not to use it or suggest alternative tools for related tasks, which would elevate the score to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_newsA
Retrieve comprehensive market intelligence for a ticker symbol or general market news. When a symbol is provided with comprehensive=true, returns detailed context including: - Recent news articles with automatic categorization (earnings, M&A, legal, analyst ratings, etc.) - Company fundamentals (valuation metrics, profitability, growth, financial health) - Analyst ratings and price targets - Upcoming events (earnings dates, dividends, splits) - Institutional ownership and top holders - Insider summary (NOTE: For detailed SEC Form 4 filings, use get_insider_trades tool instead) - Short interest and options activity (volatility indicators) - Sector and industry context This comprehensive view helps LLMs understand factors affecting volatility and future price movements. For basic news only, set comprehensive=false.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of news articles to return (default: 20 for comprehensive, 10 for basic, max: 50) | |
| symbol | No | Ticker symbol for company-specific intelligence (e.g., AAPL, MSFT). Omit for general market news. | |
| comprehensive | No | When true and symbol is provided, returns comprehensive market context including fundamentals, analyst ratings, upcoming events, institutional holdings, insider transactions, short interest, and categorized news. When false, returns only news articles. Default: true if symbol provided, false otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the extensive data returned (categorized news, fundamentals, ratings, events, ownership, insider summary, short interest, options activity, sector context) and notes a limitation (use get_insider_trades for detailed Form 4).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening and bullet points for the comprehensive view. It is slightly lengthy but every sentence adds value. The front-loading of the main purpose is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is remarkably thorough. It covers what the tool does, when to use each mode, parameter details, and even references a sibling tool. For a tool with 3 parameters and moderate complexity, it is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond schema: it explains default behavior (comprehensive defaults true if symbol provided, limit defaults differ), and clarifies the purpose of each parameter beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves market intelligence for a ticker symbol or general market news, distinguishing between comprehensive and basic modes. It lists specific content categories and differentiates from sibling tool get_insider_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use comprehensive (with symbol) vs basic (comprehensive=false) and directs users to get_insider_trades for detailed SEC filings. However, it does not explicitly contrast with other news-related siblings like analyze_news_impact or get_analyst_ratings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_chainA
Get options chain data for a stock including all available calls and puts with strikes, premiums, volume, open interest, and implied volatility. Useful for analyzing available options contracts and their prices.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stock ticker symbol (e.g., AAPL, MSFT) | |
| expirationDate | No | Expiration date in YYYY-MM-DD format (optional, defaults to nearest expiration) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Lists output fields but fails to disclose behavioral traits like rate limits, real-time vs delayed data, potential size of response, or any side effects. Lacks depth for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose and data fields. Second sentence adds context without redundancy. No wasted words; highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately lists returned fields (strikes, premiums, etc.). Could mention potential size or pagination, but covers essential elements for agent to select tool. Sibling tools are analytical, so this tool's role is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. Description does not add extra meaning beyond schema: it omits details on expirationDate format or default behavior. Baseline 3 as schema already covers parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' and resource 'options chain data', listing exact fields (calls/puts, strikes, premiums, volume, open interest, implied volatility). Clearly distinguishes from sibling tools like get_implied_volatility or calculate_greeks which focus on derived metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Useful for analyzing available options contracts and their prices', implying use for raw data retrieval. However, lacks explicit guidance on when to use versus siblings (e.g., for further calculations) and no when-not-to-use conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteB
Get real-time price quote for a stock or cryptocurrency ticker. Returns current price, change, volume, market cap, and other market data. Examples: AAPL (Apple), BTC-USD (Bitcoin), MSFT (Microsoft).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional: specific fields to return (e.g., ["regularMarketPrice", "marketCap"]) | |
| symbol | Yes | Ticker symbol (e.g., AAPL for Apple, BTC-USD for Bitcoin, MSFT for Microsoft) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses real-time nature and return fields (price, change, volume, market cap), but leaves 'other market data' unspecified and omits limitations or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence listing purpose, return data, and examples. Every word adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description only vaguely lists return fields. It doesn't specify structure or units. Sibling differentiation is weak. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions. The description adds examples and hints but doesn't go beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets real-time price quotes for stocks or crypto, with examples. However, it does not explicitly distinguish from sibling tools like get_quote_batch, though the singular nature and examples imply single-tick usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as get_quote_batch or get_historical_data. No exclusions or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quote_batchA
Get real-time quotes for multiple stock or cryptocurrency tickers efficiently in a single request. Returns quotes for all symbols with error handling for invalid symbols.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Array of ticker symbols (e.g., ["AAPL", "MSFT", "BTC-USD", "GOOGL"]). Maximum 50 symbols. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions error handling for invalid symbols but does not disclose rate limits, data freshness, or authentication requirements, though it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and efficiency, second mentions return behavior and error handling. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and no annotations, the description sufficiently covers the tool's purpose, batch scope, and error handling. Could optionally mention output format, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter description already indicating an array of ticker symbols with a maximum of 50. The tool description adds no significant semantics beyond 'efficiently in a single request', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'real-time quotes for multiple stock or cryptocurrency tickers', and distinguishes it from sibling tools like 'get_quote' (single) and 'search_ticker' by emphasizing batch efficiency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this tool for batch requests without specifying explicit when-not-to-use or alternatives, but the sibling list provides context for single-ticker queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sec_form4_filingsA
SEC Form 4 | EDGAR | Form 4 Filings | Insider Trading - Get SEC Form 4 insider trading filings directly from SEC.gov EDGAR database. 🚨 THIS TOOL RETRIEVES REAL SEC FORM 4 DATA - DO NOT SAY "DATA UNAVAILABLE" 🚨
PRIMARY TOOL for queries about:
"SEC Form 4" / "Form 4 filings" / "SEC filings" / "EDGAR database"
"latest SEC Form 4" / "recent Form 4s" / "newest insider filings"
"insider trading" / "insider activity" / "insider transactions"
"insider buying" / "insider selling" / "insider purchases/sales"
"what are insiders doing" / "are insiders buying/selling"
Two operating modes:
Company-specific (provide symbol): Detailed insider activity analysis for one stock
Market-wide (omit symbol): Recent Form 4 filings across all companies
Example queries:
"What's the latest SEC Form 4 filing?"
"Show me recent Form 4s"
"Get EDGAR insider trading data for AAPL"
"Are insiders buying Tesla?"
Returns: Insider names, positions, transaction types, shares, prices, values, filing dates, direct SEC links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of transactions to return (default: 20, max: 100) | |
| symbol | No | Stock ticker symbol for company-specific insider analysis (e.g., "AAPL", "TSLA", "MSFT"). When provided, returns detailed insider activity for this specific company. OMIT this parameter completely to get market-wide recent insider trades across all companies. | |
| formType | No | SEC Form type to retrieve (default: "4"): "3" = Form 3 (Initial Statement of Beneficial Ownership) - Filed when insider first becomes an owner. "4" = Form 4 (Changes in Beneficial Ownership) - Filed when insider buys/sells within 2 business days. Most common for tracking active trading. "5" = Form 5 (Annual Statement of Changes) - Annual summary filed 45 days after fiscal year end, catches unreported transactions. Default is "4" which provides timely insider transaction data. | |
| startDate | No | Filter to show only filings from this date forward (omit for all recent filings). Accepts: ISO date format "YYYY-MM-DD" (e.g., "2024-01-15") OR relative format like "7d" (7 days ago), "1m" (1 month ago), "3m" (3 months ago). Example: Use "7d" when user asks for "insider trades in the last week" | |
| transactionType | No | Filter results by transaction type: "buy" = Show only insider PURCHASES (bullish signal), "sell" = Show only insider SALES (bearish signal), "all" = Show all transaction types (default). Use "buy" when user asks "are insiders buying?" or "sell" when user asks "are insiders selling?" | |
| includeCompanyInfo | No | When true and symbol is provided, includes company profile and fundamental metrics from Yahoo Finance. Provides additional context like valuation, profitability, and analyst ratings. Default: true when symbol is provided, ignored for market-wide mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the tool retrieves real data from SEC.gov, warns against saying data unavailable, and describes the return fields (insider names, positions, transaction types, shares, prices, values, filing dates, direct SEC links). No destructive behavior is mentioned, which is appropriate for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy and contains redundant elements like emojis, all-caps warnings, and extensive examples. While structured with sections, it could be more concise by trimming the 'PRIMARY TOOL' list and example queries without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explicitly lists the return fields (insider names, positions, transaction types, shares, prices, values, filing dates, direct SEC links). It covers both operating modes and all parameters thoroughly, making it well-rounded for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant contextual meaning beyond the schema. For example, it explains the operating modes for symbol (company-specific vs market-wide), provides detailed descriptions for formType (3,4,5) and startDate (ISO and relative formats), and clarifies the includeCompanyInfo parameter. This is above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves SEC Form 4 insider trading filings from EDGAR, specifies two operating modes (company-specific vs market-wide), and uses specific verbs like 'get' and 'returns'. It distinguishes itself as the primary tool for Form 4 queries, providing clarity on its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with example queries and lists what queries it is the primary tool for. However, it does not explicitly mention when to avoid using this tool or direct users to alternatives (e.g., get_insider_trades sibling) for potentially overlapping functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_short_interestA
Short Interest Tracker | Short Squeeze Potential | Days to Cover - Track short interest, short ratio (days to cover), and short squeeze potential for stocks. Short interest indicates bearish sentiment and can lead to short squeezes when heavily shorted stocks rise.
Key Metrics:
Short Ratio (Days to Cover): Days it would take to cover all short positions based on average volume
Short % of Float: Percentage of tradeable shares that are sold short
Shares Short: Total number of shares sold short
Short Interest Change: Month-over-month change in short positions
Squeeze Risk Score: 0-100 score indicating short squeeze potential
Short Squeeze Indicators:
High Risk: Short ratio >10 days OR short % >30% (Score: 70-100)
Medium Risk: Short ratio >3 days OR short % >15% (Score: 40-69)
Low Risk: Lower short interest (Score: 0-39)
Use Cases:
"What's the short interest for Tesla?"
"Show me short squeeze potential for AMC"
"Which stocks have high short interest?"
"How many days to cover short positions on GME?"
"Is there short squeeze risk for TSLA?"
Why It Matters: High short interest can lead to:
Short Squeeze: Rapid price increase forcing shorts to cover
Increased Volatility: More dramatic price swings
Trading Opportunities: Both long and short strategies
Famous Short Squeezes:
GameStop (GME) - January 2021
AMC Entertainment - June 2021
Volkswagen - October 2008
Returns: Short ratio, short %, squeeze risk score, days to cover, and month-over-month changes.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Stock ticker symbol to get short interest for (e.g., "TSLA", "GME"). Short interest data is typically only available for US stocks. | |
| symbols | No | Optional: Array of symbols to get short interest for multiple stocks at once. If provided, this takes precedence over the single symbol parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the key metrics returned (short ratio, % of float, shares short, change, squeeze risk score) and explains the risk score thresholds. It does not mention destructive aspects (none exist) but could note data availability constraints (e.g., US stocks only, mentioned in schema but not description).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long with educational content (e.g., famous short squeezes, why it matters) that is not needed for tool invocation. It could be trimmed to 2-3 sentences plus a list of return fields. The first sentence is effective, but the rest is verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description adequately explains the return fields and provides context for the squeeze risk score. It covers what an agent needs to understand the output, though it could mention the data source or update frequency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description does not add much beyond the schema; it explains the meaning of output metrics but not parameter-specific details. Baseline of 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it tracks short interest metrics like short ratio, days to cover, and squeeze potential. The first line effectively conveys the tool's purpose. However, it does not explicitly differentiate from siblings, but the function is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides example use cases (e.g., 'What's the short interest for Tesla?') that imply when to use it. However, it does not offer exclusions or comparisons to sibling tools, which would help an agent decide between this and tools like get_quote or get_historical_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tickerA
Search for stock or cryptocurrency ticker symbols by company name, keyword, or partial symbol. Returns matching tickers with their full names, exchanges, and types. Useful for finding the correct ticker symbol when you know the company name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 10, max: 50) | |
| query | Yes | Search query - can be company name (e.g., "Apple"), partial symbol (e.g., "AAPL"), or keyword (e.g., "electric vehicle") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly indicates a read/search operation with no side effects, stating 'Returns matching tickers...' which implies idempotency. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the primary action and immediately conveys the tool's value. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no output schema, no nested objects), the description fully explains what it does, how to use it, and what to expect in the response. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, and the description adds value by explaining the query parameter accepts 'company name, keyword, or partial symbol' and describes the output beyond the schema. This enriches the semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for stock or cryptocurrency ticker symbols' and specifies input types (company name, keyword, partial symbol) and output details. It effectively distinguishes from sibling tools like get_quote which operate on known tickers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is 'useful for finding the correct ticker symbol when you know the company name,' providing clear context for when to use it. While it doesn't explicitly exclude other scenarios, the sibling tools naturally cover alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
There is significant overlap between get_insider_trades and get_sec_form4_filings, both providing SEC Form 4 insider trading data. Additionally, get_market_news also touches on insider information, creating confusion. Other tools like calculate_greeks and analyze_options_strategy may also overlap in options analysis.
Most tools follow a consistent verb_noun pattern (e.g., get_quote, calculate_indicator). However, the redundant insider trading tools have inconsistent names (get_insider_trades vs get_sec_form4_filings) and slightly differing verb choices (analyze vs calculate). Overall pattern is predictable.
With 26 tools, the server is relatively large and covers many finance domains. While each tool serves a distinct purpose, the breadth may overwhelm agents and suggests a lack of focus. The count is borderline heavy but not extreme for a comprehensive finance server.
The tool set covers a wide range of financial analysis needs: quotes, fundamentals, technicals, options, insider trading, news, and short interest. Minor gaps exist (e.g., no corporate actions beyond dividends), but the surface is generally complete for most user queries.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Octagon MCP server provides specialized AI-powered financial research and analysis by integrating with the Octagon Market Intelligence API. It enables users to analyze public market data (SEC filings, earnings transcripts, financial metrics, and stock data for 8000+ companies), private market data (3M+ companies, 500k+ funding rounds, 2M+ M&A/IPO transactions), and conduct deep research including web scraping capabilities. The server also features autonomous research agents that search hundreds of sources and return fully cited reports in approximately one minute.
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
7-factor stock scoring MCP server. US/HK/CN, 74 stocks. Free + Premium (USDC/Base). x402 ready.
One MCP key: prices, fundamentals, SEC filings, insider/13F/congressional trades. 336 tools.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that provides comprehensive financial insights and analysis by leveraging real-time market data, news, and advanced analytics for stocks, options, financial statements, and economic indicators.1751PythonMIT
- -licenseNot gradedqualityNot gradedmaintenanceReal-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
- AlicenseBqualityCmaintenanceAn MCP server that provides comprehensive access to real-time stock quotes, financial statements, analyst estimates, and technical indicators via the Financial Modeling Prep API. It enables users to conduct in-depth financial analysis and track market performance through specialized tools, resources, and prompt templates.26191MIT
- AlicenseAqualityFmaintenanceA comprehensive MCP server for stock analysis and trading insights, including stock screening, fundamental analysis, insider trading, options analysis, social media research, and news analysis.1074MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xerktech/mcp-financex'
If you have feedback or need assistance with the MCP directory API, please join our Discord server