SPB Git

spb/vquant Public MIT

VibeQuant — AI-powered institutional-grade financial intelligence platform.

TypeScript 84.3% Python 11.7% JavaScript 1.6% CSS 1.5% HTML 0.7%
134.3 KB · 4,600 lines typescript
Raw Blame History
1/*2 * =============================================================================3 *  VibeQuant (vquant) — AI-Powered Financial Intelligence Platform4 * -----------------------------------------------------------------------------5 *  File:      server/services/claude/toolDefinitions.ts6 *7 *  Author:    Simon-Pierre Boucher8 *  Contact:   contact@spboucher.ai9 *  Website:   https://www.spboucher.ai10 *  Demo:      https://www.vquant.ai11 *  License:   MIT (see LICENSE)12 *13 *  Copyright © 2026 Simon-Pierre Boucher. All rights reserved.14 * =============================================================================15 */1617export interface ClaudeToolDefinition {18  name: string;19  description: string;20  input_schema: {21    type: string;22    properties: Record<string, any>;23    required?: string[];24  };25}26const AVAILABLE_TOOLS: ClaudeToolDefinition[] = [27  {28    name: 'get_company_profile',29    description: 'Gets detailed company profile information including sector, industry, description, employees, CEO, market cap, and more.',30    input_schema: {31      type: 'object',32      properties: {33        symbol: {34          type: 'string',35          description: 'Stock ticker symbol (e.g., "AAPL", "TSLA", "MSFT")',36        },37      },38      required: ['symbol'],39    },40  },41  {42    name: 'get_income_statement',43    description: 'Gets income statement (profit & loss) data showing revenue, expenses, and profitability over time.',44    input_schema: {45      type: 'object',46      properties: {47        symbol: {48          type: 'string',49          description: 'Stock ticker symbol',50        },51        period: {52          type: 'string',53          description: 'Period type: "annual" or "quarter" (default: annual)',54        },55        limit: {56          type: 'number',57          description: 'Number of periods to retrieve (default: 5)',58        },59      },60      required: ['symbol'],61    },62  },63  {64    name: 'get_balance_sheet',65    description: 'Gets balance sheet data showing assets, liabilities, and equity.',66    input_schema: {67      type: 'object',68      properties: {69        symbol: {70          type: 'string',71          description: 'Stock ticker symbol',72        },73        period: {74          type: 'string',75          description: 'Period type: "annual" or "quarter" (default: annual)',76        },77        limit: {78          type: 'number',79          description: 'Number of periods to retrieve (default: 5)',80        },81      },82      required: ['symbol'],83    },84  },85  {86    name: 'get_cash_flow',87    description: 'Gets cash flow statement showing operating, investing, and financing activities.',88    input_schema: {89      type: 'object',90      properties: {91        symbol: {92          type: 'string',93          description: 'Stock ticker symbol',94        },95        period: {96          type: 'string',97          description: 'Period type: "annual" or "quarter" (default: annual)',98        },99        limit: {100          type: 'number',101          description: 'Number of periods to retrieve (default: 5)',102        },103      },104      required: ['symbol'],105    },106  },107  {108    name: 'get_key_metrics',109    description: 'Gets key financial metrics and ratios like P/E ratio, ROE, debt-to-equity, market cap, EV, etc.',110    input_schema: {111      type: 'object',112      properties: {113        symbol: {114          type: 'string',115          description: 'Stock ticker symbol',116        },117        period: {118          type: 'string',119          description: 'Period type: "annual" or "quarter" (default: annual)',120        },121        limit: {122          type: 'number',123          description: 'Number of periods to retrieve (default: 5)',124        },125      },126      required: ['symbol'],127    },128  },129  {130    name: 'get_financial_ratios',131    description: 'Gets comprehensive financial ratios including liquidity, profitability, leverage, and efficiency ratios.',132    input_schema: {133      type: 'object',134      properties: {135        symbol: {136          type: 'string',137          description: 'Stock ticker symbol',138        },139        period: {140          type: 'string',141          description: 'Period type: "annual" or "quarter" (default: annual)',142        },143        limit: {144          type: 'number',145          description: 'Number of periods to retrieve (default: 5)',146        },147      },148      required: ['symbol'],149    },150  },151  {152    name: 'get_stock_quote',153    description: 'Gets real-time stock quote with current price, volume, market cap, P/E ratio, and daily changes.',154    input_schema: {155      type: 'object',156      properties: {157        symbol: {158          type: 'string',159          description: 'Stock ticker symbol',160        },161      },162      required: ['symbol'],163    },164  },165  {166    name: 'get_historical_price',167    description: 'Gets historical stock prices (OHLC data) for charting and trend analysis. Returns up to 2 years (504 trading days) of data. IMPORTANT: When the user asks for "derniers N mois/jours", calculate the "from" date by subtracting from TODAY\'S date (use the current date provided in the system prompt). The "to" date defaults to TODAY automatically if not specified. For Monte Carlo simulations, call WITHOUT from/to dates to get maximum historical data.',168    input_schema: {169      type: 'object',170      properties: {171        symbol: {172          type: 'string',173          description: 'Stock ticker symbol',174        },175        from: {176          type: 'string',177          description: 'Start date in YYYY-MM-DD format. When user asks for "last 6 months" or "6 derniers mois", calculate this as TODAY minus 6 months using the current date from system prompt. Optional - omit for maximum data.',178        },179        to: {180          type: 'string',181          description: 'End date in YYYY-MM-DD format (optional - omit for maximum data)',182        },183      },184      required: ['symbol'],185    },186  },187  {188    name: 'search_companies',189    description: 'Searches for companies by name or partial ticker to find the correct stock symbol.',190    input_schema: {191      type: 'object',192      properties: {193        query: {194          type: 'string',195          description: 'Company name or partial symbol to search for',196        },197        limit: {198          type: 'number',199          description: 'Maximum number of results (default: 10)',200        },201      },202      required: ['query'],203    },204  },205  {206    name: 'get_stock_peers',207    description: 'Gets comparable companies (peers) in the same sector/industry for comparison analysis.',208    input_schema: {209      type: 'object',210      properties: {211        symbol: {212          type: 'string',213          description: 'Stock ticker symbol',214        },215      },216      required: ['symbol'],217    },218  },219  {220    name: 'get_financial_news',221    description: 'Gets latest financial news articles for a specific stock or general market news.',222    input_schema: {223      type: 'object',224      properties: {225        symbol: {226          type: 'string',227          description: 'Stock ticker symbol (optional - if not provided, gets general market news)',228        },229        limit: {230          type: 'number',231          description: 'Maximum number of news articles (default: 5, max: 5 to avoid context overflow)',232        },233      },234      required: [],235    },236  },237  {238    name: 'get_rsi',239    description: 'Gets RSI (Relative Strength Index) technical indicator - measures momentum and overbought/oversold conditions. Values above 70 suggest overbought, below 30 suggest oversold.',240    input_schema: {241      type: 'object',242      properties: {243        symbol: {244          type: 'string',245          description: 'Stock ticker symbol',246        },247        period: {248          type: 'number',249          description: 'Period for RSI calculation (default: 14)',250        },251        timePeriod: {252          type: 'string',253          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',254        },255      },256      required: ['symbol'],257    },258  },259  {260    name: 'get_macd',261    description: 'Gets MACD (Moving Average Convergence Divergence) - shows trend direction and momentum. Includes MACD line, signal line, and histogram.',262    input_schema: {263      type: 'object',264      properties: {265        symbol: {266          type: 'string',267          description: 'Stock ticker symbol',268        },269        timePeriod: {270          type: 'string',271          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',272        },273      },274      required: ['symbol'],275    },276  },277  {278    name: 'get_ema',279    description: 'Gets EMA (Exponential Moving Average) - smoothed price trend line that reacts faster to recent price changes.',280    input_schema: {281      type: 'object',282      properties: {283        symbol: {284          type: 'string',285          description: 'Stock ticker symbol',286        },287        period: {288          type: 'number',289          description: 'Period for EMA (default: 50, common: 12, 26, 50, 200)',290        },291        timePeriod: {292          type: 'string',293          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',294        },295      },296      required: ['symbol'],297    },298  },299  {300    name: 'get_sma',301    description: 'Gets SMA (Simple Moving Average) - basic price trend line. Common periods: 20, 50, 200 days.',302    input_schema: {303      type: 'object',304      properties: {305        symbol: {306          type: 'string',307          description: 'Stock ticker symbol',308        },309        period: {310          type: 'number',311          description: 'Period for SMA (default: 50, common: 20, 50, 100, 200)',312        },313        timePeriod: {314          type: 'string',315          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',316        },317      },318      required: ['symbol'],319    },320  },321  {322    name: 'get_adx',323    description: 'Gets ADX (Average Directional Index) - measures trend strength. Above 25 indicates strong trend, below 20 weak trend.',324    input_schema: {325      type: 'object',326      properties: {327        symbol: {328          type: 'string',329          description: 'Stock ticker symbol',330        },331        period: {332          type: 'number',333          description: 'Period for ADX calculation (default: 14)',334        },335        timePeriod: {336          type: 'string',337          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',338        },339      },340      required: ['symbol'],341    },342  },343  {344    name: 'get_williams_r',345    description: 'Gets Williams %R - momentum oscillator showing overbought/oversold levels. Values above -20 suggest overbought, below -80 oversold.',346    input_schema: {347      type: 'object',348      properties: {349        symbol: {350          type: 'string',351          description: 'Stock ticker symbol',352        },353        period: {354          type: 'number',355          description: 'Period for Williams %R (default: 14)',356        },357        timePeriod: {358          type: 'string',359          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',360        },361      },362      required: ['symbol'],363    },364  },365  {366    name: 'get_cci',367    description: 'Gets CCI (Commodity Channel Index) - identifies cyclical trends. Above +100 suggests overbought, below -100 oversold.',368    input_schema: {369      type: 'object',370      properties: {371        symbol: {372          type: 'string',373          description: 'Stock ticker symbol',374        },375        period: {376          type: 'number',377          description: 'Period for CCI (default: 20)',378        },379        timePeriod: {380          type: 'string',381          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',382        },383      },384      required: ['symbol'],385    },386  },387  {388    name: 'get_stochastic',389    description: 'Gets Stochastic Oscillator - compares closing price to price range over time. %K above 80 suggests overbought, below 20 oversold.',390    input_schema: {391      type: 'object',392      properties: {393        symbol: {394          type: 'string',395          description: 'Stock ticker symbol',396        },397        period: {398          type: 'number',399          description: 'Period for Stochastic (default: 14)',400        },401        timePeriod: {402          type: 'string',403          description: 'Time period: "daily", "weekly", "monthly" (default: daily)',404        },405      },406      required: ['symbol'],407    },408  },409  {410    name: 'calculate_options_price',411    description: 'Calculates theoretical option prices using the Black-Scholes model for European options. Returns prices for both call and put options, along with Greeks (Delta, Gamma, Theta, Vega, Rho) and intrinsic/time values. Useful for options valuation, hedging strategies, and understanding option sensitivities. RECOMMENDED: Pass "symbol" parameter to automatically fetch current stock price and calculate historical volatility from FMP API.',412    input_schema: {413      type: 'object',414      properties: {415        symbol: {416          type: 'string',417          description: 'Stock ticker symbol (e.g., "AAPL"). RECOMMENDED: Use this to automatically fetch current stock price and calculate historical volatility from FMP API. Much simpler and uses real market data!',418        },419        stock_price: {420          type: 'number',421          description: 'ALTERNATIVE to symbol: Current stock price (S). Only use if you cannot provide a symbol.',422        },423        strike_price: {424          type: 'number',425          description: 'Option strike price (K)',426        },427        time_to_maturity: {428          type: 'number',429          description: 'Time to expiration in years (T). Example: 0.25 for 3 months, 0.5 for 6 months, 1.0 for 1 year',430        },431        risk_free_rate: {432          type: 'number',433          description: 'Risk-free interest rate as decimal (r). Example: 0.05 for 5%. Default: 0.05',434        },435        volatility: {436          type: 'number',437          description: 'Annualized volatility as decimal (sigma). Example: 0.3 for 30% volatility. If symbol is provided and volatility is not, it will be calculated automatically from 30-day historical data. Otherwise defaults to 30%',438        },439        option_type: {440          type: 'string',441          description: 'Type of option: "call" or "put". This parameter is informational - the tool calculates both types',442        },443      },444      required: ['strike_price', 'time_to_maturity'],445    },446  },447  {448    name: 'get_economic_calendar',449    description: 'Gets upcoming economic events and data releases that impact markets (GDP, inflation, employment, etc.). Includes actual vs expected values and impact ratings.',450    input_schema: {451      type: 'object',452      properties: {453        from: {454          type: 'string',455          description: 'Start date in YYYY-MM-DD format (optional)',456        },457        to: {458          type: 'string',459          description: 'End date in YYYY-MM-DD format (optional)',460        },461      },462      required: [],463    },464  },465  {466    name: 'get_treasury_rates',467    description: 'Gets US Treasury rates for various maturities (1 month to 30 years). Useful for analyzing interest rate environment and yield curve.',468    input_schema: {469      type: 'object',470      properties: {471        from: {472          type: 'string',473          description: 'Start date in YYYY-MM-DD format (optional)',474        },475        to: {476          type: 'string',477          description: 'End date in YYYY-MM-DD format (optional)',478        },479      },480      required: [],481    },482  },483  {484    name: 'get_economic_indicator',485    description: 'Gets specific economic indicator data (GDP, unemployment, inflation, etc.). Useful for macroeconomic analysis.',486    input_schema: {487      type: 'object',488      properties: {489        indicator: {490          type: 'string',491          description: 'Economic indicator name (e.g., "GDP", "unemployment", "inflation", "CPI")',492        },493        from: {494          type: 'string',495          description: 'Start date in YYYY-MM-DD format (optional)',496        },497        to: {498          type: 'string',499          description: 'End date in YYYY-MM-DD format (optional)',500        },501      },502      required: ['indicator'],503    },504  },505  {506    name: 'get_insider_trading',507    description: 'Gets recent insider trading activity (buys/sells by company executives). Helps identify insider sentiment. Can filter by symbol or get all recent trades.',508    input_schema: {509      type: 'object',510      properties: {511        symbol: {512          type: 'string',513          description: 'Stock ticker symbol (optional - if not provided, gets recent insider trades across all companies)',514        },515        limit: {516          type: 'number',517          description: 'Maximum number of trades to retrieve (default: 20, max: 20 to avoid context overflow)',518        },519      },520      required: [],521    },522  },523  {524    name: 'get_insider_trade_statistics',525    description: 'Gets aggregated statistics on insider trading for a company (total trades, buy vs sell ratio, average prices, etc.).',526    input_schema: {527      type: 'object',528      properties: {529        symbol: {530          type: 'string',531          description: 'Stock ticker symbol',532        },533      },534      required: ['symbol'],535    },536  },537  {538    name: 'get_earnings_calendar',539    description: 'Gets upcoming earnings announcements with expected dates and estimated EPS. Useful for tracking when companies report earnings.',540    input_schema: {541      type: 'object',542      properties: {543        from: {544          type: 'string',545          description: 'Start date in YYYY-MM-DD format (optional)',546        },547        to: {548          type: 'string',549          description: 'End date in YYYY-MM-DD format (optional)',550        },551      },552      required: [],553    },554  },555  {556    name: 'get_earnings_surprises',557    description: 'Gets historical earnings surprises (actual vs estimated EPS) to analyze company\'s track record of beating/missing estimates.',558    input_schema: {559      type: 'object',560      properties: {561        symbol: {562          type: 'string',563          description: 'Stock ticker symbol',564        },565      },566      required: ['symbol'],567    },568  },569  {570    name: 'get_analyst_estimates',571    description: 'Gets analyst consensus estimates for revenue, earnings, EBITDA, etc. Shows analyst expectations and ranges.',572    input_schema: {573      type: 'object',574      properties: {575        symbol: {576          type: 'string',577          description: 'Stock ticker symbol',578        },579        period: {580          type: 'string',581          description: 'Period type: "annual" or "quarter" (default: annual)',582        },583        limit: {584          type: 'number',585          description: 'Number of periods to retrieve (default: 5)',586        },587      },588      required: ['symbol'],589    },590  },591  {592    name: 'get_forex_quote',593    description: 'Gets real-time forex (currency pair) quote with bid/ask prices and daily changes. Useful for analyzing currency movements.',594    input_schema: {595      type: 'object',596      properties: {597        pair: {598          type: 'string',599          description: 'Currency pair (e.g., "EURUSD", "GBPUSD", "USDJPY")',600        },601      },602      required: ['pair'],603    },604  },605  {606    name: 'get_forex_list',607    description: 'Gets list of all available forex currency pairs that can be queried.',608    input_schema: {609      type: 'object',610      properties: {},611      required: [],612    },613  },614  {615    name: 'get_commodity_quotes',616    description: 'Gets real-time quotes for commodities (gold, silver, oil, natural gas, wheat, etc.). Useful for commodity market analysis.',617    input_schema: {618      type: 'object',619      properties: {},620      required: [],621    },622  },623  {624    name: 'get_cot_report',625    description: 'Gets Commitment of Traders (COT) report showing positions of institutional traders in commodities and futures. Useful for sentiment analysis.',626    input_schema: {627      type: 'object',628      properties: {629        symbol: {630          type: 'string',631          description: 'Commodity or futures symbol',632        },633      },634      required: ['symbol'],635    },636  },637  {638    name: 'get_cot_analysis',639    description: 'Gets analyzed COT data with market situation indicators (bullish/bearish positioning).',640    input_schema: {641      type: 'object',642      properties: {643        symbol: {644          type: 'string',645          description: 'Commodity or futures symbol',646        },647      },648      required: ['symbol'],649    },650  },651  {652    name: 'get_press_releases',653    description: 'Gets official company press releases. More detailed than news articles, directly from the company.',654    input_schema: {655      type: 'object',656      properties: {657        symbol: {658          type: 'string',659          description: 'Stock ticker symbol',660        },661        limit: {662          type: 'number',663          description: 'Maximum number of press releases (default: 20)',664        },665      },666      required: ['symbol'],667    },668  },669  {670    name: 'get_dividend_history',671    description: 'Gets historical dividend payments for a stock. Shows dividend amounts, payment dates, and record dates.',672    input_schema: {673      type: 'object',674      properties: {675        symbol: {676          type: 'string',677          description: 'Stock ticker symbol',678        },679      },680      required: ['symbol'],681    },682  },683  {684    name: 'get_stock_split_history',685    description: 'Gets historical stock splits. Shows split ratios and dates.',686    input_schema: {687      type: 'object',688      properties: {689        symbol: {690          type: 'string',691          description: 'Stock ticker symbol',692        },693      },694      required: ['symbol'],695    },696  },697  {698    name: 'get_ipo_calendar',699    description: 'Gets upcoming IPOs (Initial Public Offerings) with expected dates, price ranges, and details.',700    input_schema: {701      type: 'object',702      properties: {703        from: {704          type: 'string',705          description: 'Start date in YYYY-MM-DD format (optional)',706        },707        to: {708          type: 'string',709          description: 'End date in YYYY-MM-DD format (optional)',710        },711      },712      required: [],713    },714  },715  {716    name: 'get_intraday_price',717    description: 'Gets intraday stock prices with minute-level data. Available intervals: 1min, 5min, 15min, 30min, 1hour, 4hour. Useful for day trading and short-term analysis.',718    input_schema: {719      type: 'object',720      properties: {721        symbol: {722          type: 'string',723          description: 'Stock ticker symbol',724        },725        interval: {726          type: 'string',727          description: 'Time interval: "1min", "5min", "15min", "30min", "1hour", "4hour" (default: 15min)',728        },729      },730      required: ['symbol'],731    },732  },733  {734    name: 'get_price_target',735    description: 'Gets analyst price targets showing consensus target price, high/low estimates, and number of analysts. Useful for understanding market expectations.',736    input_schema: {737      type: 'object',738      properties: {739        symbol: {740          type: 'string',741          description: 'Stock ticker symbol',742        },743      },744      required: ['symbol'],745    },746  },747  {748    name: 'get_price_target_summary',749    description: 'Gets summarized analyst price target consensus with average, median, high, low targets.',750    input_schema: {751      type: 'object',752      properties: {753        symbol: {754          type: 'string',755          description: 'Stock ticker symbol',756        },757      },758      required: ['symbol'],759    },760  },761  {762    name: 'get_upgrades_downgrades',763    description: 'Gets analyst upgrades and downgrades (rating changes like Buy → Sell). Shows analyst firm, old rating, new rating, and date.',764    input_schema: {765      type: 'object',766      properties: {767        symbol: {768          type: 'string',769          description: 'Stock ticker symbol',770        },771      },772      required: ['symbol'],773    },774  },775  {776    name: 'get_institutional_holders',777    description: 'Gets institutional shareholders (mutual funds, pension funds, hedge funds) and their holdings. Shows ownership percentage and changes.',778    input_schema: {779      type: 'object',780      properties: {781        symbol: {782          type: 'string',783          description: 'Stock ticker symbol',784        },785      },786      required: ['symbol'],787    },788  },789  {790    name: 'get_esg_score',791    description: 'Gets ESG (Environmental, Social, Governance) scores and ratings. Important for sustainable investing analysis.',792    input_schema: {793      type: 'object',794      properties: {795        symbol: {796          type: 'string',797          description: 'Stock ticker symbol',798        },799      },800      required: ['symbol'],801    },802  },803  {804    name: 'get_social_sentiment',805    description: 'Gets social media sentiment analysis from Twitter, Reddit, etc. Shows positive/negative sentiment trends.',806    input_schema: {807      type: 'object',808      properties: {809        symbol: {810          type: 'string',811          description: 'Stock ticker symbol',812        },813        limit: {814          type: 'number',815          description: 'Number of sentiment records (default: 10, max: 10 to avoid context overflow)',816        },817      },818      required: ['symbol'],819    },820  },821  {822    name: 'get_congressional_trading',823    description: 'Gets congressional stock trading activity (US Congress members). Useful for tracking political insider activity.',824    input_schema: {825      type: 'object',826      properties: {827        symbol: {828          type: 'string',829          description: 'Stock ticker symbol (optional - if not provided, gets all recent congressional trades)',830        },831      },832      required: [],833    },834  },835  {836    name: 'get_senate_trading',837    description: 'Gets US Senate stock trading activity with detailed disclosure information.',838    input_schema: {839      type: 'object',840      properties: {841        symbol: {842          type: 'string',843          description: 'Stock ticker symbol (optional)',844        },845      },846      required: [],847    },848  },849  {850    name: 'search_by_cik',851    description: 'Search companies by SEC CIK (Central Index Key) number.',852    input_schema: {853      type: 'object',854      properties: {855        cik: {856          type: 'string',857          description: 'SEC CIK number (e.g., "0000320193" for Apple)',858        },859      },860      required: ['cik'],861    },862  },863  {864    name: 'search_by_cusip',865    description: 'Search companies by CUSIP (Committee on Uniform Securities Identification Procedures) identifier.',866    input_schema: {867      type: 'object',868      properties: {869        cusip: {870          type: 'string',871          description: 'CUSIP identifier',872        },873      },874      required: ['cusip'],875    },876  },877  {878    name: 'search_by_isin',879    description: 'Search companies by ISIN (International Securities Identification Number).',880    input_schema: {881      type: 'object',882      properties: {883        isin: {884          type: 'string',885          description: 'ISIN identifier',886        },887      },888      required: ['isin'],889    },890  },891  {892    name: 'get_stock_screener',893    description: 'Screen stocks based on various criteria like market cap, sector, price, volume, beta, etc. Returns list of stocks matching filters.',894    input_schema: {895      type: 'object',896      properties: {897        marketCapMoreThan: {898          type: 'number',899          description: 'Minimum market cap (e.g., 1000000000 for $1B)',900        },901        marketCapLowerThan: {902          type: 'number',903          description: 'Maximum market cap',904        },905        betaMoreThan: {906          type: 'number',907          description: 'Minimum beta',908        },909        betaLowerThan: {910          type: 'number',911          description: 'Maximum beta',912        },913        volumeMoreThan: {914          type: 'number',915          description: 'Minimum volume',916        },917        sector: {918          type: 'string',919          description: 'Sector filter (e.g., "Technology", "Healthcare")',920        },921        industry: {922          type: 'string',923          description: 'Industry filter',924        },925        exchange: {926          type: 'string',927          description: 'Exchange filter (e.g., "NASDAQ", "NYSE")',928        },929        limit: {930          type: 'number',931          description: 'Maximum results (default: 100)',932        },933      },934      required: [],935    },936  },937  {938    name: 'get_market_hours',939    description: 'Gets market trading hours and status (open/closed) for various exchanges.',940    input_schema: {941      type: 'object',942      properties: {},943      required: [],944    },945  },946  {947    name: 'get_etf_holdings',948    description: 'Gets detailed holdings of an ETF including all stocks, weights, and allocations.',949    input_schema: {950      type: 'object',951      properties: {952        symbol: {953          type: 'string',954          description: 'ETF ticker symbol (e.g., "SPY", "QQQ", "VTI")',955        },956      },957      required: ['symbol'],958    },959  },960  {961    name: 'get_etf_sector_weightings',962    description: 'Gets sector allocation breakdown for an ETF.',963    input_schema: {964      type: 'object',965      properties: {966        symbol: {967          type: 'string',968          description: 'ETF ticker symbol',969        },970      },971      required: ['symbol'],972    },973  },974  {975    name: 'get_etf_country_weightings',976    description: 'Gets country/geographic allocation breakdown for an ETF.',977    input_schema: {978      type: 'object',979      properties: {980        symbol: {981          type: 'string',982          description: 'ETF ticker symbol',983        },984      },985      required: ['symbol'],986    },987  },988  {989    name: 'get_financial_growth',990    description: 'Gets year-over-year growth rates for all financial metrics (revenue growth, earnings growth, etc.).',991    input_schema: {992      type: 'object',993      properties: {994        symbol: {995          type: 'string',996          description: 'Stock ticker symbol',997        },998        period: {999          type: 'string',1000          description: 'Period type: "annual" or "quarter" (default: annual)',1001        },1002        limit: {1003          type: 'number',1004          description: 'Number of periods (default: 5)',1005        },1006      },1007      required: ['symbol'],1008    },1009  },1010  {1011    name: 'get_company_outlook',1012    description: 'Gets comprehensive company outlook including profile, metrics, ratios, financials, and recent data in one call.',1013    input_schema: {1014      type: 'object',1015      properties: {1016        symbol: {1017          type: 'string',1018          description: 'Stock ticker symbol',1019        },1020      },1021      required: ['symbol'],1022    },1023  },1024  {1025    name: 'get_stock_news_sentiment',1026    description: 'Gets news articles with AI-generated sentiment scores (bullish/bearish).',1027    input_schema: {1028      type: 'object',1029      properties: {1030        symbol: {1031          type: 'string',1032          description: 'Stock ticker symbol',1033        },1034        limit: {1035          type: 'number',1036          description: 'Number of articles (default: 5, max: 5 to avoid context overflow)',1037        },1038      },1039      required: ['symbol'],1040    },1041  },1042  {1043    name: 'get_crypto_quote',1044    description: 'Gets real-time cryptocurrency price quotes. Supports major cryptocurrencies.',1045    input_schema: {1046      type: 'object',1047      properties: {1048        symbol: {1049          type: 'string',1050          description: 'Crypto symbol (e.g., "BTCUSD", "ETHUSD", "SOLUSD")',1051        },1052      },1053      required: ['symbol'],1054    },1055  },1056  {1057    name: 'get_crypto_list',1058    description: 'Gets list of all available cryptocurrencies that can be queried.',1059    input_schema: {1060      type: 'object',1061      properties: {},1062      required: [],1063    },1064  },1065  {1066    name: 'get_forex_historical',1067    description: 'Gets historical forex price data for currency pairs.',1068    input_schema: {1069      type: 'object',1070      properties: {1071        pair: {1072          type: 'string',1073          description: 'Currency pair (e.g., "EURUSD", "GBPUSD")',1074        },1075        from: {1076          type: 'string',1077          description: 'Start date in YYYY-MM-DD format (optional)',1078        },1079        to: {1080          type: 'string',1081          description: 'End date in YYYY-MM-DD format (optional)',1082        },1083      },1084      required: ['pair'],1085    },1086  },1087  {1088    name: 'get_sec_filings',1089    description: 'Gets SEC filings (10-K, 10-Q, 8-K, etc.) for a company with filing links and dates.',1090    input_schema: {1091      type: 'object',1092      properties: {1093        symbol: {1094          type: 'string',1095          description: 'Stock ticker symbol',1096        },1097        type: {1098          type: 'string',1099          description: 'Filing type filter (e.g., "10-K", "10-Q", "8-K") - optional',1100        },1101        limit: {1102          type: 'number',1103          description: 'Number of filings (default: 20, max: 20 to avoid context overflow)',1104        },1105      },1106      required: ['symbol'],1107    },1108  },1109  {1110    name: 'get_company_notes',1111    description: 'Gets company notes and debt obligations with details on issued bonds and notes.',1112    input_schema: {1113      type: 'object',1114      properties: {1115        symbol: {1116          type: 'string',1117          description: 'Stock ticker symbol',1118        },1119      },1120      required: ['symbol'],1121    },1122  },1123  {1124    name: 'get_earnings_call_transcript',1125    description: 'Gets earnings call transcript text and Q&A for a specific quarter.',1126    input_schema: {1127      type: 'object',1128      properties: {1129        symbol: {1130          type: 'string',1131          description: 'Stock ticker symbol',1132        },1133        year: {1134          type: 'number',1135          description: 'Year (e.g., 2024)',1136        },1137        quarter: {1138          type: 'number',1139          description: 'Quarter (1, 2, 3, or 4)',1140        },1141      },1142      required: ['symbol', 'year', 'quarter'],1143    },1144  },1145  {1146    name: 'web_search_exa',1147    description: 'Search the web using Exa\'s semantic search engine for high-quality, relevant content. Use this to find information from websites, articles, news, research papers, and other web sources. Excellent for finding recent news, industry trends, company information not in financial databases, product details, market analysis from various sources, etc.',1148    input_schema: {1149      type: 'object',1150      properties: {1151        query: {1152          type: 'string',1153          description: 'Natural language search query (e.g., "recent AI developments", "electric vehicle market trends")',1154        },1155        numResults: {1156          type: 'number',1157          description: 'Number of results to return (1-20, default: 10)',1158        },1159        type: {1160          type: 'string',1161          description: 'Search type: "auto" (default), "neural" (semantic), or "keyword" (exact match)',1162        },1163        category: {1164          type: 'string',1165          description: 'Filter by content type: "company", "research_paper", "news_article", "tweet", "github", "pdf"',1166        },1167        includeDomains: {1168          type: 'array',1169          items: { type: 'string' },1170          description: 'Only search within these domains (e.g., ["techcrunch.com", "reuters.com"])',1171        },1172        excludeDomains: {1173          type: 'array',1174          items: { type: 'string' },1175          description: 'Exclude these domains from search',1176        },1177        startPublishedDate: {1178          type: 'string',1179          description: 'Filter results published after this date (ISO 8601 format: YYYY-MM-DD)',1180        },1181        endPublishedDate: {1182          type: 'string',1183          description: 'Filter results published before this date (ISO 8601 format: YYYY-MM-DD)',1184        },1185        includeText: {1186          type: 'boolean',1187          description: 'Include page text content in results (default: true)',1188        },1189      },1190      required: ['query'],1191    },1192  },1193  {1194    name: 'get_contents_exa',1195    description: 'Get full content from specific URLs using Exa\'s web crawler. Use this after finding interesting URLs with web_search_exa to extract complete text, highlights, and summaries. Perfect for deep-diving into specific articles, research papers, or web pages to extract detailed information.',1196    input_schema: {1197      type: 'object',1198      properties: {1199        urls: {1200          type: 'array',1201          items: { type: 'string' },1202          description: 'List of URLs to crawl and extract content from (max 5 URLs)',1203        },1204        includeText: {1205          type: 'boolean',1206          description: 'Include full page text content (default: true)',1207        },1208        maxCharacters: {1209          type: 'number',1210          description: 'Maximum characters to extract per page (default: 3000)',1211        },1212        includeHighlights: {1213          type: 'boolean',1214          description: 'Extract key sentences as highlights (default: false)',1215        },1216        highlightsQuery: {1217          type: 'string',1218          description: 'Query to focus highlights on specific topics',1219        },1220        numSentences: {1221          type: 'number',1222          description: 'Number of highlight sentences per URL (default: 3)',1223        },1224        includeSummary: {1225          type: 'boolean',1226          description: 'Generate AI summary of the content (default: false)',1227        },1228        summaryQuery: {1229          type: 'string',1230          description: 'Query to focus summary on specific aspects',1231        },1232      },1233      required: ['urls'],1234    },1235  },1236  {1237    name: 'execute_custom_python_analysis',1238    description: `Execute custom Python code for financial analysis. Access to: numpy, pandas, matplotlib, scipy, sklearn, statsmodels, yfinance, cvxpy, FMP API via fmp object.12391240🚀 CRITICAL RULE - DO EVERYTHING IN ONE CALL:1241NEVER make multiple tool calls to execute_custom_python_analysis. Do EVERYTHING in a SINGLE Python script: data fetching + analysis + figures. Do NOT make separate calls for "fetch data" then "run analysis". That's SLOW!12421243❌ WRONG (SLOW - multiple calls):1244Call 1: "Fetch NVDA data" → fmp.get_historical_prices("NVDA")1245Call 2: "Run Monte Carlo" → uses the data12461247✅ CORRECT (FAST - one call does everything):1248Single call: Fetch data + Run Monte Carlo + Create figures all in one script12491250⚠️ NEVER HARDCODE DATA:1251NEVER write hardcoded arrays of data (dates, prices, etc.) in your code. ALWAYS fetch data dynamically using fmp API methods like fmp.get_historical_prices(). Writing hardcoded data is SLOW and takes forever to stream to the user. Instead, fetch data with 1-2 lines of API calls.12521253❌ WRONG (SLOW - takes forever to write):1254dates = ['2024-01-01', '2024-01-02', ...] # hundreds of lines1255prices = [150.23, 151.45, ...] # takes forever to stream12561257✅ CORRECT (FAST):1258data = fmp.get_historical_prices("AAPL")1259df = pd.DataFrame(data["historical"])12601261📊 FIGURE CREATION RULES - ALWAYS CREATE SEPARATE FIGURES:1262NEVER use plt.subplots() with multiple rows/columns (like 2x2, 3x1, 4x4 grids).1263ALWAYS create INDIVIDUAL SEPARATE figures using plt.figure() for each visualization.1264This allows each figure to be displayed and commented individually in the response.12651266❌ WRONG (combined figures - hard to comment individually):1267fig, axes = plt.subplots(2, 2, figsize=(12, 10))1268axes[0,0].plot(...)1269axes[0,1].hist(...)1270axes[1,0].plot(...)1271axes[1,1].scatter(...)12721273✅ CORRECT (separate figures - each can be commented):1274plt.figure(figsize=(12, 6))1275plt.plot(df["date"], df["close"])1276plt.title("Price Evolution")1277plt.tight_layout()12781279plt.figure(figsize=(12, 6))1280plt.hist(df["returns"], bins=50, alpha=0.7)1281plt.title("Return Distribution")1282plt.tight_layout()12831284plt.figure(figsize=(12, 6))1285plt.plot(df["date"], df["volume"], color="green")1286plt.title("Volume Analysis")1287plt.tight_layout()12881289📥 EXCEL FILE GENERATION:1290save_excel() generates professionally styled Excel files with title row, teal headers, zebra striping, auto-column-width, freeze panes, auto number formatting, REAL Excel formulas (SUM, AVERAGE, MIN, MAX, COUNT), and conditional formatting.12911292Every Excel file automatically includes:1293- Professional title row (merged, teal 14pt bold) + generated date subtitle1294- Summary formulas at the bottom of each numeric column (SUM, AVERAGE, MIN, MAX, COUNT) — these are REAL Excel formulas, not static values1295- Conditional formatting: green/red color scales for return columns, teal data bars for volume columns, teal gradients for price/value columns1296- Freeze panes on the first data row (A5)12971298Single sheet:1299save_excel(df, "AAPL_prices.xlsx")13001301Multi-sheet workbook (PREFERRED when you have multiple DataFrames):1302save_excel({1303    "Summary": summary_df,1304    "Details": details_df,1305    "Raw Data": raw_df1306}, "full_report.xlsx")13071308Custom title:1309save_excel(df, "report.xlsx", title="Revenue Analysis Q4 2025")13101311Calculated formula columns (PREFERRED over pre-calculating values in Python):1312save_excel(df, "report.xlsx", formulas=[1313    {"col": "Margin", "formula": "=D{row}/B{row}", "format": "0.00%"},1314    {"col": "Total", "formula": "=B{row}+C{row}", "format": "#,##0.00"}1315])1316{row} is replaced by the actual Excel row number. The user sees the formula logic in the formula bar.13171318Opt-out of auto features:1319save_excel(df, "report.xlsx", summary=False, conditional_formatting=False)1320save_excel(df, "report.xlsx", summary=['sum', 'average'])  # Only selected stats13211322⚠️ ALWAYS use multi-sheet format when you have multiple DataFrames — do NOT call save_excel() multiple times to create separate files. One workbook with multiple sheets is cleaner and more professional.1323⚠️ PREFER using formulas= for calculated columns instead of computing values in Python — this lets the user see and modify the calculation logic directly in Excel.13241325📝 WORD DOCUMENT GENERATION:1326save_word() generates branded VQuant Word documents (.docx) with professional styling.13271328From markdown string:1329save_word("# Portfolio Analysis\\n\\n## Summary\\n\\nThe portfolio returned **12.5%**...\\n\\n- Strong performance in tech\\n- Underweight in energy", "portfolio_report.docx")13301331From structured dict (for including tables):1332save_word({1333    "title": "Portfolio Analysis",1334    "sections": [1335        {"heading": "Performance Summary", "body": "The portfolio returned **12.5%** annualized."},1336        {"heading": "Holdings", "table": holdings_df},1337        {"heading": "Risk Metrics", "body": "VaR (95%): -2.3%\\nMax Drawdown: -15.2%", "table": risk_df}1338    ]1339}, "portfolio_report.docx")13401341The download links for both Excel and Word files will be automatically included in the tool result.13421343DISPLAYING FIGURES - CRITICAL:1344When your code creates matplotlib figures, they are saved as PNG files and you will receive markdown image references in the tool result output.13451346⚠️ YOU MUST INCLUDE EVERY ![Figure X](url) IMAGE IN YOUR RESPONSE!1347Do NOT skip or omit the figure references - they MUST appear in your markdown response.13481349For each figure, include it with your analysis like this:13501351"Voici l'évolution des prix:13521353![Figure 1](/figures/fig-12345-0.png)13541355Le graphique montre une tendance haussière sur la période...13561357Analysons maintenant la distribution des rendements:13581359![Figure 2](/figures/fig-12345-1.png)13601361La distribution présente une légère asymétrie..."`,1362    input_schema: {1363      type: 'object',1364      properties: {1365        code: {1366          type: 'string',1367          description: 'Python code. ⚠️ NEVER HARDCODE DATA ARRAYS! Always fetch with fmp API. CRITICAL: fmp.get_historical_prices() returns dict with "historical" key! ALWAYS use: df = pd.DataFrame(data["historical"]). Convert dates: df["date"] = pd.to_datetime(df["date"]). Always .dropna(). ⚠️ ALWAYS CREATE SEPARATE FIGURES with plt.figure() - NEVER use plt.subplots(2,2) or grids! CORRECT PATTERN:\n```python\n# ✅ CORRECT: Fetch data with API (FAST)\ndata = fmp.get_historical_prices("AAPL")\ndf = pd.DataFrame(data["historical"])  # ← MUST use ["historical"]\ndf["date"] = pd.to_datetime(df["date"])\ndf = df.sort_values("date").dropna()\ndf["returns"] = df["close"].pct_change()\nprint(f"Latest: ${df[\'close\'].iloc[-1]:.2f}")\n```\n\n# Figure 1 - Price\nplt.figure(figsize=(12,6))\nplt.plot(df["date"], df["close"])\nplt.title("Price Evolution")\nplt.tight_layout()\n\n# Figure 2 - Returns\nplt.figure(figsize=(12,6))\nplt.hist(df["returns"].dropna(), bins=50)\nplt.title("Return Distribution")\nplt.tight_layout()\n```\n❌ WRONG: plt.subplots(2,2) or dates = [\'2024-01-01\', ...] # No grids! No hardcoded data!\nLIBS: np, pd, plt, sns, scipy, sklearn, statsmodels, ta, cvxpy, numba, networkx, sympy, arch, duckdb\nDATA: fmp (FMP API)',1368        },1369        description: {1370          type: 'string',1371          description: 'Brief description of what this analysis does (shown to user, e.g., "Custom correlation analysis between tech stocks")',1372        },1373        context: {1374          type: 'object',1375          description: 'Optional context variables to inject into the Python environment as global variables. Example: {"symbols": ["AAPL", "MSFT"], "threshold": 0.5}',1376        },1377      },1378      required: ['code'],1379    },1380  },1381  {1382    name: 'get_option_chain',1383    description: 'Gets the option chain for a US stock symbol (real market data via EODHD), returning option contracts (calls and puts) with identifiers, strikes, expiration dates, bid/ask, last price, volume, open interest and implied volatility. This is the starting point for options analysis. Large chains can have 10,000+ contracts and results are capped at 1000 sorted by nearest expiration, so USE THE FILTERS (exp_date_from/to, strike_from/to, option_type) to narrow down to the relevant expirations and strikes. Then use get_option_prices or get_option_greeks for full details on specific contracts.',1384    input_schema: {1385      type: 'object',1386      properties: {1387        symbol: {1388          type: 'string',1389          description: 'US stock ticker symbol (e.g., "AAPL", "MSFT", "TSLA").',1390        },1391        exp_date_from: {1392          type: 'string',1393          description: 'Only contracts expiring on or after this date, YYYY-MM-DD (optional, recommended)',1394        },1395        exp_date_to: {1396          type: 'string',1397          description: 'Only contracts expiring on or before this date, YYYY-MM-DD (optional, recommended)',1398        },1399        strike_from: {1400          type: 'number',1401          description: 'Minimum strike price (optional)',1402        },1403        strike_to: {1404          type: 'number',1405          description: 'Maximum strike price (optional)',1406        },1407        option_type: {1408          type: 'string',1409          enum: ['call', 'put'],1410          description: 'Only calls or only puts (optional, default both)',1411        },1412        limit: {1413          type: 'number',1414          description: 'Max contracts to return, up to 1000 (default 1000)',1415        },1416      },1417      required: ['symbol'],1418    },1419  },1420  {1421    name: 'get_option_prices',1422    description: 'Gets detailed pricing information for a specific option contract (via EODHD): last price, bid/ask with sizes, volume, open interest, implied volatility, moneyness, theoretical price, midpoint, days to expiration — plus Greeks (delta, gamma, theta, vega, rho). Use this after getting the option chain to analyze specific contracts. The identifier is obtained from get_option_chain results.',1423    input_schema: {1424      type: 'object',1425      properties: {1426        identifier: {1427          type: 'string',1428          description: 'Option contract identifier from the option chain (e.g., "MSFT250417C00400000"). Format: SYMBOL + YYMMDD (expiration) + C/P (call/put) + Strike price * 1000 padded to 8 digits. Example: MSFT250417C00400000 = MSFT call expiring April 17, 2025 with $400 strike.',1429        },1430      },1431      required: ['identifier'],1432    },1433  },1434  {1435    name: 'get_option_greeks',1436    description: 'Gets option Greeks (Delta, Gamma, Theta, Vega, Rho) plus implied volatility and quote data for a specific option contract (via EODHD). Greeks measure different dimensions of risk and price sensitivity in options trading. Delta: price sensitivity to underlying, Gamma: delta sensitivity, Theta: time decay, Vega: volatility sensitivity, Rho: interest rate sensitivity. Essential for options risk management and hedging strategies.',1437    input_schema: {1438      type: 'object',1439      properties: {1440        identifier: {1441          type: 'string',1442          description: 'Option contract identifier from the option chain (e.g., "MSFT250417C00400000"). Same format as get_option_prices.',1443        },1444      },1445      required: ['identifier'],1446    },1447  },1448  {1449    name: 'download_fmp_data',1450    description: 'Downloads financial data from FMP API and exports it to a file in the specified format (CSV, XLSX, JSON, or TXT). This tool allows users to obtain complete datasets from any available FMP data type and provides a download link. Use this when users want to export data for their own analysis, save data locally, or work with data in Excel/spreadsheet applications. Available data types include: company_profile, income_statement, balance_sheet, cash_flow, key_metrics, financial_ratios, financial_growth, stock_quote, historical_price, intraday_price, technical indicators (rsi, macd, ema, sma, adx, williams_r, cci, stochastic), financial_news, earnings_calendar, earnings_surprises, analyst_estimates, price_target, upgrades_downgrades, dividend_history, stock_splits, insider_trading, institutional_holders, congressional_trading, esg_score, treasury_rates, economic_calendar, forex_quote, commodity_quotes, and more.',1451    input_schema: {1452      type: 'object',1453      properties: {1454        data_type: {1455          type: 'string',1456          description: 'Type of data to download. Examples: "company_profile", "income_statement", "balance_sheet", "cash_flow", "key_metrics", "financial_ratios", "financial_growth", "stock_quote", "historical_price", "intraday_price", "rsi", "macd", "ema", "sma", "adx", "williams_r", "cci", "stochastic", "financial_news", "earnings_calendar", "earnings_surprises", "analyst_estimates", "price_target", "upgrades_downgrades", "dividend_history", "stock_splits", "insider_trading", "institutional_holders", "congressional_trading", "esg_score", "treasury_rates", "economic_calendar", "forex_quote", "commodity_quotes"',1457        },1458        symbol: {1459          type: 'string',1460          description: 'Stock ticker symbol (required for most data types, e.g., "AAPL", "MSFT", "TSLA")',1461        },1462        format: {1463          type: 'string',1464          description: 'Output file format: "csv" (Comma-Separated Values - best for Excel and data analysis), "xlsx" (Excel format), "json" (JSON format - best for programmatic access), or "txt" (Plain text table format)',1465          enum: ['csv', 'xlsx', 'json', 'txt']1466        },1467        period: {1468          type: 'string',1469          description: 'Period type for financial statements: "annual" or "quarter". Default: "annual"',1470          enum: ['annual', 'quarter']1471        },1472        limit: {1473          type: 'number',1474          description: 'Number of records to retrieve. Default: 10',1475        },1476        from_date: {1477          type: 'string',1478          description: 'Start date for historical data in YYYY-MM-DD format (e.g., "2023-01-01")',1479        },1480        to_date: {1481          type: 'string',1482          description: 'End date for historical data in YYYY-MM-DD format (e.g., "2024-01-01")',1483        },1484        indicator_period: {1485          type: 'number',1486          description: 'Period for technical indicators (e.g., 14 for RSI, 50 for moving averages)',1487        },1488        time_period: {1489          type: 'string',1490          description: 'Time period for technical indicators: "daily", "weekly", or "monthly". Default: "daily"',1491        },1492        interval: {1493          type: 'string',1494          description: 'Interval for intraday data: "1min", "5min", "15min", "30min", "1hour", "4hour". Default: "15min"',1495        },1496        news_limit: {1497          type: 'number',1498          description: 'Number of news articles to retrieve. Default: 20',1499        },1500        pair: {1501          type: 'string',1502          description: 'Forex pair for forex data (e.g., "EURUSD", "GBPUSD")',1503        },1504      },1505      required: ['data_type', 'format'],1506    },1507  },1508  // ==================== FIRECRAWL WEB NAVIGATION & EXTRACTION TOOLS ====================1509  {1510    name: 'firecrawl_scrape',1511    description: 'Extract complete content from a single URL. Supports HTML pages, PDFs, Word docs, and more. Perfect for extracting financial reports, company filings, research papers, and documentation. Returns clean markdown with automatic PDF summarization for long documents.',1512    input_schema: {1513      type: 'object',1514      properties: {1515        url: {1516          type: 'string',1517          description: 'URL to scrape (HTTP/HTTPS). Supports PDFs, HTML, Word docs, etc.',1518        },1519        formats: {1520          type: 'array',1521          items: { type: 'string' },1522          description: 'Output formats: ["markdown", "html", "rawHtml", "links", "screenshot"]. Default: ["markdown"]',1523        },1524        onlyMainContent: {1525          type: 'boolean',1526          description: 'Extract only main content, removing navigation/ads/footers. Default: true',1527        },1528        parsers: {1529          type: 'array',1530          items: { type: 'string' },1531          description: 'Parsers to enable. Default: ["pdf"] for PDF extraction',1532        },1533        includeTags: {1534          type: 'array',1535          items: { type: 'string' },1536          description: 'HTML tags to include (e.g., ["article", "main"])',1537        },1538        excludeTags: {1539          type: 'array',1540          items: { type: 'string' },1541          description: 'HTML tags to exclude (e.g., ["nav", "footer", "aside"])',1542        },1543        waitFor: {1544          type: 'number',1545          description: 'Wait milliseconds before scraping (for dynamic content). Default: 0',1546        },1547        mobile: {1548          type: 'boolean',1549          description: 'Emulate mobile device. Default: false',1550        },1551        blockAds: {1552          type: 'boolean',1553          description: 'Block ads and cookie popups. Default: true',1554        },1555        timeout: {1556          type: 'number',1557          description: 'Request timeout in milliseconds. Default: 30000',1558        },1559      },1560      required: ['url'],1561    },1562  },1563  {1564    name: 'firecrawl_search',1565    description: 'Search the web and automatically scrape matching results. Perfect for finding recent news, research papers (PDFs), financial reports, or specific information across multiple sources. Can filter by categories (github, research, pdf) and sources (web, images, news).',1566    input_schema: {1567      type: 'object',1568      properties: {1569        query: {1570          type: 'string',1571          description: 'Search query (e.g., "NVDA Q4 2024 earnings report PDF", "climate change research papers")',1572        },1573        limit: {1574          type: 'number',1575          description: 'Number of results to return (1-50). Default: 20',1576        },1577        sources: {1578          type: 'array',1579          items: { type: 'string', enum: ['web', 'images', 'news'] },1580          description: 'Sources to search. Default: ["web"]. Options: "web", "images", "news"',1581        },1582        categories: {1583          type: 'array',1584          items: { type: 'string', enum: ['github', 'research', 'pdf'] },1585          description: 'Categories to filter results. Options: "github" (repos), "research" (papers), "pdf" (documents)',1586        },1587        country: {1588          type: 'string',1589          description: 'Country code for geo-targeting (e.g., "US", "FR", "UK"). Default: "US"',1590        },1591        tbs: {1592          type: 'string',1593          description: 'Time-based search parameter (e.g., "qdr:d" = past day, "qdr:w" = past week, "qdr:m" = past month)',1594        },1595        onlyMainContent: {1596          type: 'boolean',1597          description: 'Extract only main content from scraped results. Default: false',1598        },1599      },1600      required: ['query'],1601    },1602  },1603  {1604    name: 'firecrawl_crawl',1605    description: 'Crawl and extract content from multiple pages of a website. Follows internal links to map entire documentation sites, corporate websites, or knowledge bases. Can use natural language prompts to guide crawling or use regex patterns for precise control.',1606    input_schema: {1607      type: 'object',1608      properties: {1609        url: {1610          type: 'string',1611          description: 'Root URL to start crawling (e.g., "https://example.com/docs")',1612        },1613        prompt: {1614          type: 'string',1615          description: 'Natural language prompt to guide what to crawl (e.g., "crawl all product documentation pages")',1616        },1617        limit: {1618          type: 'number',1619          description: 'Maximum pages to crawl (1-20). Default: 10',1620        },1621        includePaths: {1622          type: 'array',1623          items: { type: 'string' },1624          description: 'Regex patterns for URLs to include (e.g., ["/docs/.*", "/blog/.*"])',1625        },1626        excludePaths: {1627          type: 'array',1628          items: { type: 'string' },1629          description: 'Regex patterns for URLs to exclude (e.g., ["/admin/.*", "/login"])',1630        },1631        maxDiscoveryDepth: {1632          type: 'number',1633          description: 'Maximum link depth to follow from root URL',1634        },1635        sitemap: {1636          type: 'string',1637          enum: ['skip', 'include'],1638          description: 'Sitemap handling. Default: "include"',1639        },1640        crawlEntireDomain: {1641          type: 'boolean',1642          description: 'Allow crawling parent/sibling URLs. Default: false',1643        },1644        allowSubdomains: {1645          type: 'boolean',1646          description: 'Allow following subdomain links. Default: false',1647        },1648        ignoreQueryParameters: {1649          type: 'boolean',1650          description: 'Treat URLs with different query params as same page. Default: false',1651        },1652        onlyMainContent: {1653          type: 'boolean',1654          description: 'Extract only main content from each page. Default: false',1655        },1656      },1657      required: ['url'],1658    },1659  },1660  {1661    name: 'firecrawl_extract',1662    description: 'Extract structured data from websites using AI. Define a schema and let Firecrawl intelligently extract matching data across multiple pages. Perfect for extracting product catalogs, company directories, financial metrics, or any structured information from websites.',1663    input_schema: {1664      type: 'object',1665      properties: {1666        urls: {1667          type: 'array',1668          items: { type: 'string' },1669          description: 'URLs to extract data from (1-10 URLs recommended)',1670        },1671        prompt: {1672          type: 'string',1673          description: 'Prompt describing what data to extract (e.g., "Extract all product names, prices, and descriptions")',1674        },1675        schema: {1676          type: 'object',1677          description: 'JSON schema defining the structure of data to extract. Example: {type: "object", properties: {products: {type: "array", items: {type: "object", properties: {name: {type: "string"}, price: {type: "number"}}}}}}',1678        },1679        enableWebSearch: {1680          type: 'boolean',1681          description: 'Use web search to find additional data. Default: false',1682        },1683        includeSubdomains: {1684          type: 'boolean',1685          description: 'Also extract from subdomains. Default: true',1686        },1687        showSources: {1688          type: 'boolean',1689          description: 'Include source URLs in response. Default: false',1690        },1691      },1692      required: ['urls'],1693    },1694  },1695  {1696    name: 'firecrawl_map',1697    description: 'Map all URLs from a website without crawling content. Fast way to discover site structure, find all pages, or generate a sitemap. Can filter by search relevance and handle sitemaps intelligently.',1698    input_schema: {1699      type: 'object',1700      properties: {1701        url: {1702          type: 'string',1703          description: 'Website URL to map',1704        },1705        search: {1706          type: 'string',1707          description: 'Search query to rank results by relevance (e.g., "pricing" to find pricing pages)',1708        },1709        sitemap: {1710          type: 'string',1711          enum: ['skip', 'include', 'only'],1712          description: 'Sitemap mode. "only" = only sitemap URLs, "include" = sitemap + discovered, "skip" = no sitemap. Default: "include"',1713        },1714        includeSubdomains: {1715          type: 'boolean',1716          description: 'Include subdomain URLs. Default: true',1717        },1718        ignoreQueryParameters: {1719          type: 'boolean',1720          description: 'Ignore query parameters in URLs. Default: true',1721        },1722        limit: {1723          type: 'number',1724          description: 'Maximum links to return. Default: 5000',1725        },1726      },1727      required: ['url'],1728    },1729  },1730  {1731    name: 'firecrawl_agent',1732    description: 'Autonomous AI agent for complex data extraction tasks. Give it a natural language prompt and optional URLs, and it will intelligently navigate, search, and extract the data you need. Uses advanced reasoning to understand your requirements and gather comprehensive information.',1733    input_schema: {1734      type: 'object',1735      properties: {1736        prompt: {1737          type: 'string',1738          description: 'Detailed prompt describing what data to extract (e.g., "Find and extract all executive compensation data from the latest 10-K filings of FAANG companies")',1739        },1740        urls: {1741          type: 'array',1742          items: { type: 'string' },1743          description: 'Optional: Constrain agent to specific URLs (agent will only visit these)',1744        },1745        schema: {1746          type: 'object',1747          description: 'Optional: JSON schema to structure extracted data',1748        },1749        maxCredits: {1750          type: 'number',1751          description: 'Maximum credits to spend on this task',1752        },1753        strictConstrainToURLs: {1754          type: 'boolean',1755          description: 'If true, agent only visits provided URLs. Default: false',1756        },1757        model: {1758          type: 'string',1759          enum: ['spark-1-mini', 'spark-1-pro'],1760          description: 'Agent model: "spark-1-mini" (fast, cheap) or "spark-1-pro" (powerful, accurate). Default: "spark-1-mini"',1761        },1762      },1763      required: ['prompt'],1764    },1765  },1766  {1767    name: 'firecrawl_batch_scrape',1768    description: 'Scrape multiple URLs in batch with high concurrency. Perfect for efficiently extracting content from many pages simultaneously (e.g., scraping multiple financial reports, news articles, or product pages at once).',1769    input_schema: {1770      type: 'object',1771      properties: {1772        urls: {1773          type: 'array',1774          items: { type: 'string' },1775          description: 'URLs to scrape in batch (recommended: 5-50 URLs)',1776        },1777        maxConcurrency: {1778          type: 'number',1779          description: 'Number of simultaneous scrapes. Default: system optimized',1780        },1781        onlyMainContent: {1782          type: 'boolean',1783          description: 'Extract only main content. Default: true',1784        },1785        parsers: {1786          type: 'array',1787          items: { type: 'string' },1788          description: 'Parsers to enable (e.g., ["pdf"]). Default: ["pdf"]',1789        },1790        formats: {1791          type: 'array',1792          items: { type: 'string' },1793          description: 'Output formats. Default: ["markdown"]',1794        },1795        timeout: {1796          type: 'number',1797          description: 'Timeout per URL in milliseconds. Default: 30000',1798        },1799        blockAds: {1800          type: 'boolean',1801          description: 'Block ads and popups. Default: true',1802        },1803      },1804      required: ['urls'],1805    },1806  },1807  // ==================== TAVILY WEB RESEARCH & SEARCH TOOLS ====================1808  {1809    name: 'tavily_search',1810    description: 'Advanced web search using Tavily AI. Perfect for real-time research with AI-generated answers, time-filtered results, and topic-specific searches (general, news, finance). Supports advanced search depth for more comprehensive results and can include images, raw content, and more.',1811    input_schema: {1812      type: 'object',1813      properties: {1814        query: {1815          type: 'string',1816          description: 'Search query (e.g., "latest developments in quantum computing", "NVDA earnings analysis")',1817        },1818        search_depth: {1819          type: 'string',1820          enum: ['advanced', 'basic', 'fast', 'ultra-fast'],1821          description: 'Search depth. "advanced" = most comprehensive (slower), "ultra-fast" = quickest. Default: "basic"',1822        },1823        max_results: {1824          type: 'number',1825          description: 'Maximum number of results to return (1-20). Default: 5',1826        },1827        topic: {1828          type: 'string',1829          enum: ['general', 'news', 'finance'],1830          description: 'Search topic category. "finance" optimizes for financial content. Default: "general"',1831        },1832        time_range: {1833          type: 'string',1834          enum: ['day', 'week', 'month', 'year', 'd', 'w', 'm', 'y'],1835          description: 'Filter by time range. "day" = last 24h, "week" = last 7 days, "month" = last 30 days, "year" = last 12 months',1836        },1837        start_date: {1838          type: 'string',1839          description: 'Filter results from this date onwards (YYYY-MM-DD format)',1840        },1841        end_date: {1842          type: 'string',1843          description: 'Filter results up to this date (YYYY-MM-DD format)',1844        },1845        include_answer: {1846          description: 'Include AI-generated answer. true/"basic" = quick answer, "advanced" = comprehensive answer. Default: false',1847        },1848        include_raw_content: {1849          description: 'Include full page content. true/"text" = plain text, "markdown" = formatted. Default: false',1850        },1851        include_images: {1852          type: 'boolean',1853          description: 'Include image results. Default: false',1854        },1855        include_domains: {1856          type: 'array',1857          items: { type: 'string' },1858          description: 'Only search these domains (e.g., ["reuters.com", "bloomberg.com"])',1859        },1860        exclude_domains: {1861          type: 'array',1862          items: { type: 'string' },1863          description: 'Exclude these domains from search',1864        },1865        country: {1866          type: 'string',1867          description: 'Boost results from specific country (e.g., "US", "FR", "UK")',1868        },1869      },1870      required: ['query'],1871    },1872  },1873  {1874    name: 'tavily_extract',1875    description: 'Extract and rank content from specific URLs. Uses AI to find the most relevant chunks based on optional query. Perfect for extracting key information from known URLs like financial reports, articles, or documentation.',1876    input_schema: {1877      type: 'object',1878      properties: {1879        urls: {1880          description: 'URL or array of URLs to extract from (1-10 URLs recommended)',1881        },1882        query: {1883          type: 'string',1884          description: 'Query to rank/filter extracted content chunks (e.g., "revenue growth" to find relevant sections)',1885        },1886        chunks_per_source: {1887          type: 'number',1888          description: 'Max relevant chunks per URL. Default: 3',1889        },1890        extract_depth: {1891          type: 'string',1892          enum: ['basic', 'advanced'],1893          description: 'Extraction depth. "advanced" = more thorough. Default: "basic"',1894        },1895        include_images: {1896          type: 'boolean',1897          description: 'Include images from pages. Default: false',1898        },1899        format: {1900          type: 'string',1901          enum: ['markdown', 'text'],1902          description: 'Content format. Default: "markdown"',1903        },1904        timeout: {1905          type: 'number',1906          description: 'Timeout in seconds per URL. Default: system optimized',1907        },1908      },1909      required: ['urls'],1910    },1911  },1912  {1913    name: 'tavily_crawl',1914    description: 'Graph-based intelligent website crawling with content extraction. Explores multiple paths in parallel using AI-guided discovery. Perfect for extracting comprehensive data from documentation sites, blogs, or knowledge bases.',1915    input_schema: {1916      type: 'object',1917      properties: {1918        url: {1919          type: 'string',1920          description: 'Root URL to start crawling',1921        },1922        instructions: {1923          type: 'string',1924          description: 'Natural language instructions to guide the crawl (e.g., "focus on product documentation pages")',1925        },1926        max_depth: {1927          type: 'number',1928          description: 'Maximum link depth from root. Default: 1',1929        },1930        max_breadth: {1931          type: 'number',1932          description: 'Max links to follow per level. Default: 20',1933        },1934        limit: {1935          type: 'number',1936          description: 'Total URLs to process before stopping. Default: 50',1937        },1938        select_paths: {1939          type: 'array',1940          items: { type: 'string' },1941          description: 'Regex patterns for URLs to include (e.g., ["/docs/.*", "/api/.*"])',1942        },1943        exclude_paths: {1944          type: 'array',1945          items: { type: 'string' },1946          description: 'Regex patterns for URLs to exclude',1947        },1948        select_domains: {1949          type: 'array',1950          items: { type: 'string' },1951          description: 'Regex patterns for domains to include',1952        },1953        exclude_domains: {1954          type: 'array',1955          items: { type: 'string' },1956          description: 'Regex patterns for domains to exclude',1957        },1958        allow_external: {1959          type: 'boolean',1960          description: 'Allow external domain links in results. Default: true',1961        },1962        extract_depth: {1963          type: 'string',1964          enum: ['basic', 'advanced'],1965          description: 'Content extraction depth. Default: "basic"',1966        },1967        format: {1968          type: 'string',1969          enum: ['markdown', 'text'],1970          description: 'Content format. Default: "markdown"',1971        },1972        timeout: {1973          type: 'number',1974          description: 'Total timeout in seconds. Default: 150',1975        },1976      },1977      required: ['url'],1978    },1979  },1980  {1981    name: 'tavily_map',1982    description: 'Fast site mapping to discover all URLs without extracting content. Explores website structure in parallel using graph traversal. Perfect for discovering site architecture, finding specific page patterns, or generating sitemaps.',1983    input_schema: {1984      type: 'object',1985      properties: {1986        url: {1987          type: 'string',1988          description: 'Website URL to map',1989        },1990        instructions: {1991          type: 'string',1992          description: 'Natural language instructions for mapping (e.g., "find all product pages")',1993        },1994        max_depth: {1995          type: 'number',1996          description: 'Maximum depth to traverse. Default: 1',1997        },1998        max_breadth: {1999          type: 'number',2000          description: 'Max links per level. Default: 20',2001        },2002        limit: {2003          type: 'number',2004          description: 'Total links to process. Default: 50',2005        },2006        select_paths: {2007          type: 'array',2008          items: { type: 'string' },2009          description: 'Regex patterns for paths to include',2010        },2011        exclude_paths: {2012          type: 'array',2013          items: { type: 'string' },2014          description: 'Regex patterns for paths to exclude',2015        },2016        allow_external: {2017          type: 'boolean',2018          description: 'Include external links. Default: true',2019        },2020        timeout: {2021          type: 'number',2022          description: 'Timeout in seconds. Default: 150',2023        },2024      },2025      required: ['url'],2026    },2027  },2028  {2029    name: 'tavily_research',2030    description: 'Autonomous AI research agent that conducts comprehensive research on any topic. Performs multiple searches, analyzes sources, synthesizes information, and generates a detailed research report with citations. Perfect for in-depth research tasks, competitive analysis, market research, or academic inquiries.',2031    input_schema: {2032      type: 'object',2033      properties: {2034        input: {2035          type: 'string',2036          description: 'Research question or topic (e.g., "What are the latest trends in renewable energy investment?", "Comprehensive analysis of AI chip market")',2037        },2038        model: {2039          type: 'string',2040          enum: ['mini', 'pro', 'auto'],2041          description: 'Research model. "mini" = fast & cost-effective, "pro" = most thorough, "auto" = adaptive. Default: "auto"',2042        },2043        output_schema: {2044          type: 'object',2045          description: 'JSON schema to structure research output (e.g., {type: "object", properties: {summary: {type: "string"}, key_findings: {type: "array"}}})',2046        },2047        citation_format: {2048          type: 'string',2049          enum: ['numbered', 'mla', 'apa', 'chicago'],2050          description: 'Citation format for sources. Default: "numbered"',2051        },2052      },2053      required: ['input'],2054    },2055  },2056  // ==================== NEW SEARCH & DISCOVERY TOOLS ====================2057  {2058    name: 'search_symbol',2059    description: 'Search for stock ticker symbols across multiple exchanges using FMP Stock Symbol Search API.',2060    input_schema: {2061      type: 'object',2062      properties: {2063        query: {2064          type: 'string',2065          description: 'Symbol to search for (e.g., "AAPL", "MSFT")',2066        },2067      },2068      required: ['query'],2069    },2070  },2071  {2072    name: 'search_name',2073    description: 'Search for companies by name to find their ticker symbols. Useful when you know the company name but not the symbol.',2074    input_schema: {2075      type: 'object',2076      properties: {2077        query: {2078          type: 'string',2079          description: 'Company name to search for (e.g., "Apple", "Microsoft")',2080        },2081      },2082      required: ['query'],2083    },2084  },2085  {2086    name: 'search_exchange_variants',2087    description: 'Find all exchanges where a stock symbol is listed (e.g., Apple on NASDAQ, European exchanges, etc.).',2088    input_schema: {2089      type: 'object',2090      properties: {2091        symbol: {2092          type: 'string',2093          description: 'Stock ticker symbol',2094        },2095      },2096      required: ['symbol'],2097    },2098  },2099  {2100    name: 'get_stock_list',2101    description: 'Get comprehensive list of all available stocks across all exchanges.',2102    input_schema: {2103      type: 'object',2104      properties: {},2105      required: [],2106    },2107  },2108  {2109    name: 'get_financial_statement_symbol_list',2110    description: 'Get list of companies with available financial statements.',2111    input_schema: {2112      type: 'object',2113      properties: {},2114      required: [],2115    },2116  },2117  {2118    name: 'get_cik_list',2119    description: 'Get list of SEC CIK (Central Index Key) numbers for all registered entities.',2120    input_schema: {2121      type: 'object',2122      properties: {2123        page: {2124          type: 'number',2125          description: 'Page number for pagination (default: 0)',2126        },2127        limit: {2128          type: 'number',2129          description: 'Number of results per page (default: 1000)',2130        },2131      },2132      required: [],2133    },2134  },2135  {2136    name: 'get_symbol_change',2137    description: 'Track stock symbol changes due to mergers, acquisitions, or rebranding.',2138    input_schema: {2139      type: 'object',2140      properties: {},2141      required: [],2142    },2143  },2144  {2145    name: 'get_etf_list',2146    description: 'Get complete list of all Exchange Traded Funds (ETFs).',2147    input_schema: {2148      type: 'object',2149      properties: {},2150      required: [],2151    },2152  },2153  {2154    name: 'get_actively_trading_list',2155    description: 'Get list of all actively trading companies and instruments.',2156    input_schema: {2157      type: 'object',2158      properties: {},2159      required: [],2160    },2161  },2162  {2163    name: 'get_earnings_transcript_list',2164    description: 'Get list of companies with available earnings call transcripts.',2165    input_schema: {2166      type: 'object',2167      properties: {},2168      required: [],2169    },2170  },2171  {2172    name: 'get_available_exchanges',2173    description: 'Get list of all supported stock exchanges worldwide.',2174    input_schema: {2175      type: 'object',2176      properties: {},2177      required: [],2178    },2179  },2180  {2181    name: 'get_available_sectors',2182    description: 'Get list of all industry sectors for stock categorization.',2183    input_schema: {2184      type: 'object',2185      properties: {},2186      required: [],2187    },2188  },2189  {2190    name: 'get_available_industries',2191    description: 'Get list of all industries where stock symbols are available.',2192    input_schema: {2193      type: 'object',2194      properties: {},2195      required: [],2196    },2197  },2198  {2199    name: 'get_available_countries',2200    description: 'Get list of all countries where stock symbols are available.',2201    input_schema: {2202      type: 'object',2203      properties: {},2204      required: [],2205    },2206  },2207  // ==================== ADVANCED COMPANY DATA TOOLS ====================2208  {2209    name: 'get_profile_by_cik',2210    description: 'Get company profile using SEC CIK (Central Index Key) number instead of ticker symbol.',2211    input_schema: {2212      type: 'object',2213      properties: {2214        cik: {2215          type: 'string',2216          description: 'SEC CIK number (e.g., "320193" for Apple)',2217        },2218      },2219      required: ['cik'],2220    },2221  },2222  {2223    name: 'get_delisted_companies',2224    description: 'Get list of companies that have been delisted from exchanges.',2225    input_schema: {2226      type: 'object',2227      properties: {2228        page: {2229          type: 'number',2230          description: 'Page number (default: 0)',2231        },2232        limit: {2233          type: 'number',2234          description: 'Results per page (default: 100)',2235        },2236      },2237      required: [],2238    },2239  },2240  {2241    name: 'get_employee_count',2242    description: 'Get current employee count for a company from SEC filings.',2243    input_schema: {2244      type: 'object',2245      properties: {2246        symbol: {2247          type: 'string',2248          description: 'Stock ticker symbol',2249        },2250      },2251      required: ['symbol'],2252    },2253  },2254  {2255    name: 'get_historical_employee_count',2256    description: 'Get historical employee count data to track workforce changes over time.',2257    input_schema: {2258      type: 'object',2259      properties: {2260        symbol: {2261          type: 'string',2262          description: 'Stock ticker symbol',2263        },2264      },2265      required: ['symbol'],2266    },2267  },2268  {2269    name: 'get_market_capitalization',2270    description: 'Get current market capitalization for a company.',2271    input_schema: {2272      type: 'object',2273      properties: {2274        symbol: {2275          type: 'string',2276          description: 'Stock ticker symbol',2277        },2278      },2279      required: ['symbol'],2280    },2281  },2282  {2283    name: 'get_batch_market_capitalization',2284    description: 'Get market cap for multiple companies at once for comparison.',2285    input_schema: {2286      type: 'object',2287      properties: {2288        symbols: {2289          type: 'string',2290          description: 'Comma-separated list of symbols (e.g., "AAPL,MSFT,GOOGL")',2291        },2292      },2293      required: ['symbols'],2294    },2295  },2296  {2297    name: 'get_historical_market_capitalization',2298    description: 'Get historical market cap data to track company valuation changes.',2299    input_schema: {2300      type: 'object',2301      properties: {2302        symbol: {2303          type: 'string',2304          description: 'Stock ticker symbol',2305        },2306        limit: {2307          type: 'number',2308          description: 'Number of historical records (default: 100)',2309        },2310      },2311      required: ['symbol'],2312    },2313  },2314  {2315    name: 'get_shares_float',2316    description: 'Get share float data (publicly traded shares) for liquidity analysis.',2317    input_schema: {2318      type: 'object',2319      properties: {2320        symbol: {2321          type: 'string',2322          description: 'Stock ticker symbol',2323        },2324      },2325      required: ['symbol'],2326    },2327  },2328  {2329    name: 'get_all_shares_float',2330    description: 'Get share float data for all companies for comprehensive screening.',2331    input_schema: {2332      type: 'object',2333      properties: {2334        page: {2335          type: 'number',2336          description: 'Page number (default: 0)',2337        },2338        limit: {2339          type: 'number',2340          description: 'Results per page (default: 1000)',2341        },2342      },2343      required: [],2344    },2345  },2346  {2347    name: 'get_latest_mergers_acquisitions',2348    description: 'Get latest merger and acquisition activity across all companies.',2349    input_schema: {2350      type: 'object',2351      properties: {2352        page: {2353          type: 'number',2354          description: 'Page number (default: 0)',2355        },2356        limit: {2357          type: 'number',2358          description: 'Results per page (default: 100)',2359        },2360      },2361      required: [],2362    },2363  },2364  {2365    name: 'search_mergers_acquisitions',2366    description: 'Search for specific M&A activity by company name.',2367    input_schema: {2368      type: 'object',2369      properties: {2370        name: {2371          type: 'string',2372          description: 'Company name to search for',2373        },2374      },2375      required: ['name'],2376    },2377  },2378  {2379    name: 'get_key_executives',2380    description: 'Get information about company executives including names, titles, and compensation.',2381    input_schema: {2382      type: 'object',2383      properties: {2384        symbol: {2385          type: 'string',2386          description: 'Stock ticker symbol',2387        },2388      },2389      required: ['symbol'],2390    },2391  },2392  {2393    name: 'get_executive_compensation',2394    description: 'Get detailed executive compensation data including salaries, stock awards, and total comp.',2395    input_schema: {2396      type: 'object',2397      properties: {2398        symbol: {2399          type: 'string',2400          description: 'Stock ticker symbol',2401        },2402      },2403      required: ['symbol'],2404    },2405  },2406  {2407    name: 'get_executive_compensation_benchmark',2408    description: 'Get average executive compensation benchmarks by industry for comparison.',2409    input_schema: {2410      type: 'object',2411      properties: {2412        year: {2413          type: 'number',2414          description: 'Year for benchmark data (optional)',2415        },2416      },2417      required: [],2418    },2419  },2420  // ==================== QUOTES & MARKET DATA TOOLS ====================2421  {2422    name: 'get_quote_short',2423    description: 'Get quick snapshot of stock quote with only essential data (price, volume).',2424    input_schema: {2425      type: 'object',2426      properties: {2427        symbol: {2428          type: 'string',2429          description: 'Stock ticker symbol',2430        },2431      },2432      required: ['symbol'],2433    },2434  },2435  {2436    name: 'get_aftermarket_trade',2437    description: 'Get after-hours trading activity with prices and sizes.',2438    input_schema: {2439      type: 'object',2440      properties: {2441        symbol: {2442          type: 'string',2443          description: 'Stock ticker symbol',2444        },2445      },2446      required: ['symbol'],2447    },2448  },2449  {2450    name: 'get_aftermarket_quote',2451    description: 'Get after-hours bid/ask quotes for extended trading analysis.',2452    input_schema: {2453      type: 'object',2454      properties: {2455        symbol: {2456          type: 'string',2457          description: 'Stock ticker symbol',2458        },2459      },2460      required: ['symbol'],2461    },2462  },2463  {2464    name: 'get_stock_price_change',2465    description: 'Get stock price changes across multiple timeframes (1D, 5D, 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y, 10Y, max).',2466    input_schema: {2467      type: 'object',2468      properties: {2469        symbol: {2470          type: 'string',2471          description: 'Stock ticker symbol',2472        },2473      },2474      required: ['symbol'],2475    },2476  },2477  {2478    name: 'get_batch_quote',2479    description: 'Get real-time quotes for multiple stocks in a single request.',2480    input_schema: {2481      type: 'object',2482      properties: {2483        symbols: {2484          type: 'string',2485          description: 'Comma-separated symbols (e.g., "AAPL,MSFT,GOOGL")',2486        },2487      },2488      required: ['symbols'],2489    },2490  },2491  {2492    name: 'get_batch_quote_short',2493    description: 'Get quick quotes for multiple stocks with essential data only.',2494    input_schema: {2495      type: 'object',2496      properties: {2497        symbols: {2498          type: 'string',2499          description: 'Comma-separated symbols',2500        },2501      },2502      required: ['symbols'],2503    },2504  },2505  {2506    name: 'get_batch_exchange_quote',2507    description: 'Get quotes for all stocks trading on a specific exchange.',2508    input_schema: {2509      type: 'object',2510      properties: {2511        exchange: {2512          type: 'string',2513          description: 'Exchange name (e.g., "NASDAQ", "NYSE")',2514        },2515      },2516      required: ['exchange'],2517    },2518  },2519  {2520    name: 'get_batch_mutualfund_quotes',2521    description: 'Get quotes for all mutual funds.',2522    input_schema: {2523      type: 'object',2524      properties: {},2525      required: [],2526    },2527  },2528  {2529    name: 'get_batch_etf_quotes',2530    description: 'Get quotes for all ETFs.',2531    input_schema: {2532      type: 'object',2533      properties: {},2534      required: [],2535    },2536  },2537  {2538    name: 'get_batch_commodity_quotes',2539    description: 'Get quotes for all commodities (gold, silver, oil, etc.).',2540    input_schema: {2541      type: 'object',2542      properties: {},2543      required: [],2544    },2545  },2546  {2547    name: 'get_batch_crypto_quotes',2548    description: 'Get quotes for all cryptocurrencies.',2549    input_schema: {2550      type: 'object',2551      properties: {},2552      required: [],2553    },2554  },2555  {2556    name: 'get_batch_forex_quotes',2557    description: 'Get quotes for all forex currency pairs.',2558    input_schema: {2559      type: 'object',2560      properties: {},2561      required: [],2562    },2563  },2564  {2565    name: 'get_batch_index_quotes',2566    description: 'Get quotes for all major market indices.',2567    input_schema: {2568      type: 'object',2569      properties: {},2570      required: [],2571    },2572  },2573  // ==================== FINANCIAL STATEMENTS - ADVANCED TOOLS ====================2574  {2575    name: 'get_latest_financial_statements',2576    description: 'Get list of companies with latest financial statement updates.',2577    input_schema: {2578      type: 'object',2579      properties: {2580        page: {2581          type: 'number',2582          description: 'Page number (default: 0)',2583        },2584        limit: {2585          type: 'number',2586          description: 'Results per page (default: 250)',2587        },2588      },2589      required: [],2590    },2591  },2592  {2593    name: 'get_income_statement_ttm',2594    description: 'Get trailing twelve months (TTM) income statement data.',2595    input_schema: {2596      type: 'object',2597      properties: {2598        symbol: {2599          type: 'string',2600          description: 'Stock ticker symbol',2601        },2602      },2603      required: ['symbol'],2604    },2605  },2606  {2607    name: 'get_balance_sheet_ttm',2608    description: 'Get TTM balance sheet data.',2609    input_schema: {2610      type: 'object',2611      properties: {2612        symbol: {2613          type: 'string',2614          description: 'Stock ticker symbol',2615        },2616      },2617      required: ['symbol'],2618    },2619  },2620  {2621    name: 'get_cashflow_statement_ttm',2622    description: 'Get TTM cash flow statement data.',2623    input_schema: {2624      type: 'object',2625      properties: {2626        symbol: {2627          type: 'string',2628          description: 'Stock ticker symbol',2629        },2630      },2631      required: ['symbol'],2632    },2633  },2634  {2635    name: 'get_key_metrics_ttm',2636    description: 'Get TTM key financial metrics.',2637    input_schema: {2638      type: 'object',2639      properties: {2640        symbol: {2641          type: 'string',2642          description: 'Stock ticker symbol',2643        },2644      },2645      required: ['symbol'],2646    },2647  },2648  {2649    name: 'get_ratios_ttm',2650    description: 'Get TTM financial ratios.',2651    input_schema: {2652      type: 'object',2653      properties: {2654        symbol: {2655          type: 'string',2656          description: 'Stock ticker symbol',2657        },2658      },2659      required: ['symbol'],2660    },2661  },2662  {2663    name: 'get_financial_scores',2664    description: 'Get financial health scores including Altman Z-Score and Piotroski Score.',2665    input_schema: {2666      type: 'object',2667      properties: {2668        symbol: {2669          type: 'string',2670          description: 'Stock ticker symbol',2671        },2672      },2673      required: ['symbol'],2674    },2675  },2676  {2677    name: 'get_owner_earnings',2678    description: 'Get owner earnings (cash available to shareholders after capital expenditures).',2679    input_schema: {2680      type: 'object',2681      properties: {2682        symbol: {2683          type: 'string',2684          description: 'Stock ticker symbol',2685        },2686      },2687      required: ['symbol'],2688    },2689  },2690  {2691    name: 'get_enterprise_values',2692    description: 'Get enterprise value (market cap + debt - cash) for valuation.',2693    input_schema: {2694      type: 'object',2695      properties: {2696        symbol: {2697          type: 'string',2698          description: 'Stock ticker symbol',2699        },2700        period: {2701          type: 'string',2702          description: 'Period: "annual" or "quarter" (default: annual)',2703        },2704        limit: {2705          type: 'number',2706          description: 'Number of periods (default: 5)',2707        },2708      },2709      required: ['symbol'],2710    },2711  },2712  {2713    name: 'get_revenue_product_segmentation',2714    description: 'Get revenue breakdown by product lines.',2715    input_schema: {2716      type: 'object',2717      properties: {2718        symbol: {2719          type: 'string',2720          description: 'Stock ticker symbol',2721        },2722        period: {2723          type: 'string',2724          description: 'Period: "annual" or "quarter" (default: annual)',2725        },2726      },2727      required: ['symbol'],2728    },2729  },2730  {2731    name: 'get_revenue_geographic_segmentation',2732    description: 'Get revenue breakdown by geographic regions.',2733    input_schema: {2734      type: 'object',2735      properties: {2736        symbol: {2737          type: 'string',2738          description: 'Stock ticker symbol',2739        },2740        period: {2741          type: 'string',2742          description: 'Period: "annual" or "quarter" (default: annual)',2743        },2744      },2745      required: ['symbol'],2746    },2747  },2748  // ==================== ECONOMIC & DIVIDEND TOOLS ====================2749  {2750    name: 'get_market_risk_premium',2751    description: 'Get market risk premium for different countries for investment analysis.',2752    input_schema: {2753      type: 'object',2754      properties: {2755        country: {2756          type: 'string',2757          description: 'Country name (optional - gets all if not specified)',2758        },2759      },2760      required: [],2761    },2762  },2763  {2764    name: 'get_dividends_company',2765    description: 'Get complete dividend history for a company.',2766    input_schema: {2767      type: 'object',2768      properties: {2769        symbol: {2770          type: 'string',2771          description: 'Stock ticker symbol',2772        },2773      },2774      required: ['symbol'],2775    },2776  },2777  {2778    name: 'get_dividends_calendar',2779    description: 'Get upcoming dividend payment calendar across all stocks.',2780    input_schema: {2781      type: 'object',2782      properties: {2783        from: {2784          type: 'string',2785          description: 'Start date (YYYY-MM-DD) - optional',2786        },2787        to: {2788          type: 'string',2789          description: 'End date (YYYY-MM-DD) - optional',2790        },2791      },2792      required: [],2793    },2794  },2795  {2796    name: 'get_earnings_report',2797    description: 'Get earnings report data with EPS and revenue for a company.',2798    input_schema: {2799      type: 'object',2800      properties: {2801        symbol: {2802          type: 'string',2803          description: 'Stock ticker symbol',2804        },2805      },2806      required: ['symbol'],2807    },2808  },2809  {2810    name: 'get_ipo_disclosures',2811    description: 'Get IPO disclosure filings and dates.',2812    input_schema: {2813      type: 'object',2814      properties: {2815        from: {2816          type: 'string',2817          description: 'Start date (YYYY-MM-DD) - optional',2818        },2819        to: {2820          type: 'string',2821          description: 'End date (YYYY-MM-DD) - optional',2822        },2823      },2824      required: [],2825    },2826  },2827  {2828    name: 'get_ipo_prospectus',2829    description: 'Get IPO prospectus data with offering prices and proceeds.',2830    input_schema: {2831      type: 'object',2832      properties: {2833        from: {2834          type: 'string',2835          description: 'Start date (YYYY-MM-DD) - optional',2836        },2837        to: {2838          type: 'string',2839          description: 'End date (YYYY-MM-DD) - optional',2840        },2841      },2842      required: [],2843    },2844  },2845  {2846    name: 'get_splits',2847    description: 'Get stock split history for a company.',2848    input_schema: {2849      type: 'object',2850      properties: {2851        symbol: {2852          type: 'string',2853          description: 'Stock ticker symbol',2854        },2855      },2856      required: ['symbol'],2857    },2858  },2859  {2860    name: 'get_splits_calendar',2861    description: 'Get upcoming stock splits calendar.',2862    input_schema: {2863      type: 'object',2864      properties: {2865        from: {2866          type: 'string',2867          description: 'Start date (YYYY-MM-DD) - optional',2868        },2869        to: {2870          type: 'string',2871          description: 'End date (YYYY-MM-DD) - optional',2872        },2873      },2874      required: [],2875    },2876  },2877  // ==================== NEWS & TRANSCRIPTS TOOLS ====================2878  {2879    name: 'get_latest_earning_transcripts',2880    description: 'Get list of latest available earning call transcripts.',2881    input_schema: {2882      type: 'object',2883      properties: {},2884      required: [],2885    },2886  },2887  {2888    name: 'get_earning_call_transcript_dates',2889    description: 'Get available dates for earning call transcripts for a specific company.',2890    input_schema: {2891      type: 'object',2892      properties: {2893        symbol: {2894          type: 'string',2895          description: 'Stock ticker symbol',2896        },2897      },2898      required: ['symbol'],2899    },2900  },2901  {2902    name: 'get_fmp_articles',2903    description: 'Get latest articles from Financial Modeling Prep.',2904    input_schema: {2905      type: 'object',2906      properties: {2907        page: {2908          type: 'number',2909          description: 'Page number (default: 0)',2910        },2911        limit: {2912          type: 'number',2913          description: 'Results per page (default: 20)',2914        },2915      },2916      required: [],2917    },2918  },2919  {2920    name: 'get_general_news',2921    description: 'Get latest general financial news from various sources.',2922    input_schema: {2923      type: 'object',2924      properties: {2925        page: {2926          type: 'number',2927          description: 'Page number (default: 0)',2928        },2929        limit: {2930          type: 'number',2931          description: 'Results per page (default: 20)',2932        },2933      },2934      required: [],2935    },2936  },2937  {2938    name: 'get_press_releases_latest',2939    description: 'Get latest press releases from companies.',2940    input_schema: {2941      type: 'object',2942      properties: {2943        page: {2944          type: 'number',2945          description: 'Page number (default: 0)',2946        },2947        limit: {2948          type: 'number',2949          description: 'Results per page (default: 20)',2950        },2951      },2952      required: [],2953    },2954  },2955  {2956    name: 'get_stock_news_latest',2957    description: 'Get latest stock-specific news articles.',2958    input_schema: {2959      type: 'object',2960      properties: {2961        page: {2962          type: 'number',2963          description: 'Page number (default: 0)',2964        },2965        limit: {2966          type: 'number',2967          description: 'Results per page (default: 20)',2968        },2969      },2970      required: [],2971    },2972  },2973  {2974    name: 'get_crypto_news',2975    description: 'Get latest cryptocurrency news.',2976    input_schema: {2977      type: 'object',2978      properties: {2979        page: {2980          type: 'number',2981          description: 'Page number (default: 0)',2982        },2983        limit: {2984          type: 'number',2985          description: 'Results per page (default: 20)',2986        },2987      },2988      required: [],2989    },2990  },2991  {2992    name: 'get_forex_news',2993    description: 'Get latest forex market news.',2994    input_schema: {2995      type: 'object',2996      properties: {2997        page: {2998          type: 'number',2999          description: 'Page number (default: 0)',3000        },3001        limit: {3002          type: 'number',3003          description: 'Results per page (default: 20)',3004        },3005      },3006      required: [],3007    },3008  },3009  {3010    name: 'search_press_releases_new',3011    description: 'Search press releases by stock symbols.',3012    input_schema: {3013      type: 'object',3014      properties: {3015        symbols: {3016          type: 'string',3017          description: 'Comma-separated symbols',3018        },3019      },3020      required: ['symbols'],3021    },3022  },3023  {3024    name: 'search_stock_news',3025    description: 'Search stock news by symbols.',3026    input_schema: {3027      type: 'object',3028      properties: {3029        symbols: {3030          type: 'string',3031          description: 'Comma-separated symbols',3032        },3033      },3034      required: ['symbols'],3035    },3036  },3037  {3038    name: 'search_crypto_news',3039    description: 'Search crypto news by symbols.',3040    input_schema: {3041      type: 'object',3042      properties: {3043        symbols: {3044          type: 'string',3045          description: 'Crypto symbols',3046        },3047      },3048      required: ['symbols'],3049    },3050  },3051  {3052    name: 'search_forex_news',3053    description: 'Search forex news by currency pairs.',3054    input_schema: {3055      type: 'object',3056      properties: {3057        symbols: {3058          type: 'string',3059          description: 'Currency pairs',3060        },3061      },3062      required: ['symbols'],3063    },3064  },3065  // ==================== FORM 13F & INSTITUTIONAL OWNERSHIP ====================3066  {3067    name: 'get_institutional_ownership_filings',3068    description: 'Get latest Form 13F institutional ownership filings.',3069    input_schema: {3070      type: 'object',3071      properties: {3072        page: {3073          type: 'number',3074          description: 'Page number (default: 0)',3075        },3076        limit: {3077          type: 'number',3078          description: 'Results per page (default: 100)',3079        },3080      },3081      required: [],3082    },3083  },3084  {3085    name: 'extract_sec_filings',3086    description: 'Extract detailed data from SEC 13F filings by CIK and period.',3087    input_schema: {3088      type: 'object',3089      properties: {3090        cik: {3091          type: 'string',3092          description: 'SEC CIK number',3093        },3094        year: {3095          type: 'number',3096          description: 'Year',3097        },3098        quarter: {3099          type: 'number',3100          description: 'Quarter (1-4)',3101        },3102      },3103      required: ['cik', 'year', 'quarter'],3104    },3105  },3106  {3107    name: 'get_form_13f_filings_dates',3108    description: 'Get available Form 13F filing dates for an institutional holder.',3109    input_schema: {3110      type: 'object',3111      properties: {3112        cik: {3113          type: 'string',3114          description: 'SEC CIK number',3115        },3116      },3117      required: ['cik'],3118    },3119  },3120  {3121    name: 'get_filings_extract_with_analytics',3122    description: 'Get 13F filings with analytical insights for a specific stock.',3123    input_schema: {3124      type: 'object',3125      properties: {3126        symbol: {3127          type: 'string',3128          description: 'Stock ticker symbol',3129        },3130        year: {3131          type: 'number',3132          description: 'Year',3133        },3134        quarter: {3135          type: 'number',3136          description: 'Quarter (1-4)',3137        },3138        page: {3139          type: 'number',3140          description: 'Page number (default: 0)',3141        },3142        limit: {3143          type: 'number',3144          description: 'Results per page (default: 10)',3145        },3146      },3147      required: ['symbol', 'year', 'quarter'],3148    },3149  },3150  {3151    name: 'get_holder_performance_summary',3152    description: 'Get performance summary for institutional holders.',3153    input_schema: {3154      type: 'object',3155      properties: {3156        cik: {3157          type: 'string',3158          description: 'SEC CIK number',3159        },3160        page: {3161          type: 'number',3162          description: 'Page number (default: 0)',3163        },3164      },3165      required: ['cik'],3166    },3167  },3168  {3169    name: 'get_holders_industry_breakdown',3170    description: 'Get industry breakdown of institutional holder portfolios.',3171    input_schema: {3172      type: 'object',3173      properties: {3174        cik: {3175          type: 'string',3176          description: 'SEC CIK number',3177        },3178        year: {3179          type: 'number',3180          description: 'Year',3181        },3182        quarter: {3183          type: 'number',3184          description: 'Quarter (1-4)',3185        },3186      },3187      required: ['cik', 'year', 'quarter'],3188    },3189  },3190  {3191    name: 'get_positions_summary',3192    description: 'Get summary of institutional positions for a specific stock.',3193    input_schema: {3194      type: 'object',3195      properties: {3196        symbol: {3197          type: 'string',3198          description: 'Stock ticker symbol',3199        },3200        year: {3201          type: 'number',3202          description: 'Year',3203        },3204        quarter: {3205          type: 'number',3206          description: 'Quarter (1-4)',3207        },3208      },3209      required: ['symbol', 'year', 'quarter'],3210    },3211  },3212  {3213    name: 'get_industry_performance_summary',3214    description: 'Get performance summary by industry sector.',3215    input_schema: {3216      type: 'object',3217      properties: {3218        year: {3219          type: 'number',3220          description: 'Year',3221        },3222        quarter: {3223          type: 'number',3224          description: 'Quarter (1-4)',3225        },3226      },3227      required: ['year', 'quarter'],3228    },3229  },3230  // ==================== ANALYST RATINGS & ESTIMATES ====================3231  {3232    name: 'get_ratings_snapshot',3233    description: 'Get current analyst ratings and scores snapshot.',3234    input_schema: {3235      type: 'object',3236      properties: {3237        symbol: {3238          type: 'string',3239          description: 'Stock ticker symbol',3240        },3241      },3242      required: ['symbol'],3243    },3244  },3245  {3246    name: 'get_historical_ratings',3247    description: 'Get historical analyst ratings and rating changes.',3248    input_schema: {3249      type: 'object',3250      properties: {3251        symbol: {3252          type: 'string',3253          description: 'Stock ticker symbol',3254        },3255        limit: {3256          type: 'number',3257          description: 'Number of records (default: 100)',3258        },3259      },3260      required: ['symbol'],3261    },3262  },3263  {3264    name: 'get_price_target_consensus',3265    description: 'Get consensus price target (high, low, median, consensus).',3266    input_schema: {3267      type: 'object',3268      properties: {3269        symbol: {3270          type: 'string',3271          description: 'Stock ticker symbol',3272        },3273      },3274      required: ['symbol'],3275    },3276  },3277  {3278    name: 'get_grades',3279    description: 'Get analyst grades (Buy, Hold, Sell ratings) for a stock.',3280    input_schema: {3281      type: 'object',3282      properties: {3283        symbol: {3284          type: 'string',3285          description: 'Stock ticker symbol',3286        },3287        limit: {3288          type: 'number',3289          description: 'Number of grades (default: 100)',3290        },3291      },3292      required: ['symbol'],3293    },3294  },3295  {3296    name: 'get_historical_grades',3297    description: 'Get historical analyst grade changes.',3298    input_schema: {3299      type: 'object',3300      properties: {3301        symbol: {3302          type: 'string',3303          description: 'Stock ticker symbol',3304        },3305        limit: {3306          type: 'number',3307          description: 'Number of records (default: 100)',3308        },3309      },3310      required: ['symbol'],3311    },3312  },3313  {3314    name: 'get_grades_summary',3315    description: 'Get summary of analyst grades (count by rating type).',3316    input_schema: {3317      type: 'object',3318      properties: {3319        symbol: {3320          type: 'string',3321          description: 'Stock ticker symbol',3322        },3323      },3324      required: ['symbol'],3325    },3326  },3327  // ==================== MARKET PERFORMANCE & SECTORS ====================3328  {3329    name: 'get_market_sector_performance_snapshot',3330    description: 'Get current performance snapshot across all market sectors.',3331    input_schema: {3332      type: 'object',3333      properties: {3334        date: {3335          type: 'string',3336          description: 'Date (YYYY-MM-DD) - optional',3337        },3338      },3339      required: [],3340    },3341  },3342  {3343    name: 'get_industry_performance_snapshot',3344    description: 'Get current performance snapshot across all industries.',3345    input_schema: {3346      type: 'object',3347      properties: {3348        date: {3349          type: 'string',3350          description: 'Date (YYYY-MM-DD) - optional',3351        },3352      },3353      required: [],3354    },3355  },3356  {3357    name: 'get_historical_sector_performance',3358    description: 'Get historical performance data for a sector.',3359    input_schema: {3360      type: 'object',3361      properties: {3362        sector: {3363          type: 'string',3364          description: 'Sector name',3365        },3366        limit: {3367          type: 'number',3368          description: 'Number of records (default: 100)',3369        },3370      },3371      required: ['sector'],3372    },3373  },3374  {3375    name: 'get_historical_industry_performance',3376    description: 'Get historical performance data for an industry.',3377    input_schema: {3378      type: 'object',3379      properties: {3380        industry: {3381          type: 'string',3382          description: 'Industry name',3383        },3384        limit: {3385          type: 'number',3386          description: 'Number of records (default: 100)',3387        },3388      },3389      required: ['industry'],3390    },3391  },3392  {3393    name: 'get_sector_pe_snapshot',3394    description: 'Get P/E ratio snapshot for all sectors.',3395    input_schema: {3396      type: 'object',3397      properties: {3398        date: {3399          type: 'string',3400          description: 'Date (YYYY-MM-DD) - optional',3401        },3402      },3403      required: [],3404    },3405  },3406  {3407    name: 'get_industry_pe_snapshot',3408    description: 'Get P/E ratio snapshot for all industries.',3409    input_schema: {3410      type: 'object',3411      properties: {3412        date: {3413          type: 'string',3414          description: 'Date (YYYY-MM-DD) - optional',3415        },3416      },3417      required: [],3418    },3419  },3420  {3421    name: 'get_historical_sector_pe',3422    description: 'Get historical P/E ratios for a sector.',3423    input_schema: {3424      type: 'object',3425      properties: {3426        sector: {3427          type: 'string',3428          description: 'Sector name',3429        },3430        limit: {3431          type: 'number',3432          description: 'Number of records (default: 100)',3433        },3434      },3435      required: ['sector'],3436    },3437  },3438  {3439    name: 'get_historical_industry_pe',3440    description: 'Get historical P/E ratios for an industry.',3441    input_schema: {3442      type: 'object',3443      properties: {3444        industry: {3445          type: 'string',3446          description: 'Industry name',3447        },3448        limit: {3449          type: 'number',3450          description: 'Number of records (default: 100)',3451        },3452      },3453      required: ['industry'],3454    },3455  },3456  // ==================== ADDITIONAL TECHNICAL INDICATORS ====================3457  {3458    name: 'get_wma',3459    description: 'Get Weighted Moving Average (WMA) - weighted average giving more importance to recent prices.',3460    input_schema: {3461      type: 'object',3462      properties: {3463        symbol: {3464          type: 'string',3465          description: 'Stock ticker symbol',3466        },3467        periodLength: {3468          type: 'number',3469          description: 'Period length (default: 10)',3470        },3471        timeframe: {3472          type: 'string',3473          description: 'Timeframe: "1day", "1week", "1month" (default: 1day)',3474        },3475      },3476      required: ['symbol'],3477    },3478  },3479  {3480    name: 'get_dema',3481    description: 'Get Double Exponential Moving Average (DEMA) - reduces lag of traditional moving averages.',3482    input_schema: {3483      type: 'object',3484      properties: {3485        symbol: {3486          type: 'string',3487          description: 'Stock ticker symbol',3488        },3489        periodLength: {3490          type: 'number',3491          description: 'Period length (default: 10)',3492        },3493        timeframe: {3494          type: 'string',3495          description: 'Timeframe: "1day", "1week", "1month" (default: 1day)',3496        },3497      },3498      required: ['symbol'],3499    },3500  },3501  {3502    name: 'get_tema',3503    description: 'Get Triple Exponential Moving Average (TEMA) - minimizes lag even further than DEMA.',3504    input_schema: {3505      type: 'object',3506      properties: {3507        symbol: {3508          type: 'string',3509          description: 'Stock ticker symbol',3510        },3511        periodLength: {3512          type: 'number',3513          description: 'Period length (default: 10)',3514        },3515        timeframe: {3516          type: 'string',3517          description: 'Timeframe: "1day", "1week", "1month" (default: 1day)',3518        },3519      },3520      required: ['symbol'],3521    },3522  },3523  {3524    name: 'get_standard_deviation',3525    description: 'Get Standard Deviation - measures volatility and price dispersion.',3526    input_schema: {3527      type: 'object',3528      properties: {3529        symbol: {3530          type: 'string',3531          description: 'Stock ticker symbol',3532        },3533        periodLength: {3534          type: 'number',3535          description: 'Period length (default: 10)',3536        },3537        timeframe: {3538          type: 'string',3539          description: 'Timeframe: "1day", "1week", "1month" (default: 1day)',3540        },3541      },3542      required: ['symbol'],3543    },3544  },3545  // ==================== ETF & MUTUAL FUNDS ====================3546  {3547    name: 'get_etf_asset_exposure',3548    description: 'Get which ETFs hold a specific stock and their exposure.',3549    input_schema: {3550      type: 'object',3551      properties: {3552        symbol: {3553          type: 'string',3554          description: 'Stock ticker symbol',3555        },3556      },3557      required: ['symbol'],3558    },3559  },3560  {3561    name: 'get_mutual_fund_disclosure_latest',3562    description: 'Get latest mutual fund disclosure filings.',3563    input_schema: {3564      type: 'object',3565      properties: {3566        symbol: {3567          type: 'string',3568          description: 'Fund symbol',3569        },3570      },3571      required: ['symbol'],3572    },3573  },3574  {3575    name: 'get_mutual_fund_disclosure',3576    description: 'Get specific mutual fund disclosure by period.',3577    input_schema: {3578      type: 'object',3579      properties: {3580        symbol: {3581          type: 'string',3582          description: 'Fund symbol',3583        },3584        year: {3585          type: 'number',3586          description: 'Year',3587        },3588        quarter: {3589          type: 'number',3590          description: 'Quarter (1-4)',3591        },3592      },3593      required: ['symbol', 'year', 'quarter'],3594    },3595  },3596  {3597    name: 'get_mutual_fund_disclosure_search',3598    description: 'Search mutual fund disclosures by name.',3599    input_schema: {3600      type: 'object',3601      properties: {3602        name: {3603          type: 'string',3604          description: 'Fund name to search',3605        },3606      },3607      required: ['name'],3608    },3609  },3610  {3611    name: 'get_mutual_fund_disclosure_dates',3612    description: 'Get available disclosure dates for a mutual fund.',3613    input_schema: {3614      type: 'object',3615      properties: {3616        symbol: {3617          type: 'string',3618          description: 'Fund symbol',3619        },3620      },3621      required: ['symbol'],3622    },3623  },3624  // ==================== SEC FILINGS - ADVANCED ====================3625  {3626    name: 'get_latest_8k_sec_filings',3627    description: 'Get latest 8-K SEC filings (material corporate events).',3628    input_schema: {3629      type: 'object',3630      properties: {3631        from: {3632          type: 'string',3633          description: 'Start date (YYYY-MM-DD)',3634        },3635        to: {3636          type: 'string',3637          description: 'End date (YYYY-MM-DD)',3638        },3639        page: {3640          type: 'number',3641          description: 'Page number (default: 0)',3642        },3643        limit: {3644          type: 'number',3645          description: 'Results per page (default: 100)',3646        },3647      },3648      required: [],3649    },3650  },3651  {3652    name: 'get_latest_sec_filings',3653    description: 'Get latest SEC financial filings (10-K, 10-Q, etc.).',3654    input_schema: {3655      type: 'object',3656      properties: {3657        from: {3658          type: 'string',3659          description: 'Start date (YYYY-MM-DD)',3660        },3661        to: {3662          type: 'string',3663          description: 'End date (YYYY-MM-DD)',3664        },3665        page: {3666          type: 'number',3667          description: 'Page number (default: 0)',3668        },3669        limit: {3670          type: 'number',3671          description: 'Results per page (default: 100)',3672        },3673      },3674      required: [],3675    },3676  },3677  {3678    name: 'get_sec_filings_by_form_type',3679    description: 'Search SEC filings by form type (10-K, 10-Q, 8-K, etc.).',3680    input_schema: {3681      type: 'object',3682      properties: {3683        formType: {3684          type: 'string',3685          description: 'Form type (e.g., "10-K", "10-Q", "8-K")',3686        },3687        from: {3688          type: 'string',3689          description: 'Start date (YYYY-MM-DD)',3690        },3691        to: {3692          type: 'string',3693          description: 'End date (YYYY-MM-DD)',3694        },3695        page: {3696          type: 'number',3697          description: 'Page number (default: 0)',3698        },3699        limit: {3700          type: 'number',3701          description: 'Results per page (default: 100)',3702        },3703      },3704      required: ['formType'],3705    },3706  },3707  {3708    name: 'get_sec_filings_by_symbol',3709    description: 'Get all SEC filings for a specific company.',3710    input_schema: {3711      type: 'object',3712      properties: {3713        symbol: {3714          type: 'string',3715          description: 'Stock ticker symbol',3716        },3717        from: {3718          type: 'string',3719          description: 'Start date (YYYY-MM-DD)',3720        },3721        to: {3722          type: 'string',3723          description: 'End date (YYYY-MM-DD)',3724        },3725        page: {3726          type: 'number',3727          description: 'Page number (default: 0)',3728        },3729        limit: {3730          type: 'number',3731          description: 'Results per page (default: 100)',3732        },3733      },3734      required: ['symbol'],3735    },3736  },3737  {3738    name: 'get_sec_filings_by_cik',3739    description: 'Get SEC filings by CIK number.',3740    input_schema: {3741      type: 'object',3742      properties: {3743        cik: {3744          type: 'string',3745          description: 'SEC CIK number',3746        },3747        from: {3748          type: 'string',3749          description: 'Start date (YYYY-MM-DD)',3750        },3751        to: {3752          type: 'string',3753          description: 'End date (YYYY-MM-DD)',3754        },3755        page: {3756          type: 'number',3757          description: 'Page number (default: 0)',3758        },3759        limit: {3760          type: 'number',3761          description: 'Results per page (default: 100)',3762        },3763      },3764      required: ['cik'],3765    },3766  },3767  {3768    name: 'get_sec_filings_by_name',3769    description: 'Search companies by name for SEC filings.',3770    input_schema: {3771      type: 'object',3772      properties: {3773        company: {3774          type: 'string',3775          description: 'Company name',3776        },3777      },3778      required: ['company'],3779    },3780  },3781  {3782    name: 'get_sec_filings_company_search_by_symbol',3783    description: 'Find company SEC filing information by ticker symbol.',3784    input_schema: {3785      type: 'object',3786      properties: {3787        symbol: {3788          type: 'string',3789          description: 'Stock ticker symbol',3790        },3791      },3792      required: ['symbol'],3793    },3794  },3795  {3796    name: 'get_sec_filings_company_search_by_cik',3797    description: 'Find company information by CIK for SEC filings.',3798    input_schema: {3799      type: 'object',3800      properties: {3801        cik: {3802          type: 'string',3803          description: 'SEC CIK number',3804        },3805      },3806      required: ['cik'],3807    },3808  },3809  {3810    name: 'get_sec_company_full_profile',3811    description: 'Get comprehensive SEC company profile with all details.',3812    input_schema: {3813      type: 'object',3814      properties: {3815        symbol: {3816          type: 'string',3817          description: 'Stock ticker symbol',3818        },3819      },3820      required: ['symbol'],3821    },3822  },3823  {3824    name: 'get_industry_classification_list',3825    description: 'Get list of SIC (Standard Industrial Classification) codes.',3826    input_schema: {3827      type: 'object',3828      properties: {},3829      required: [],3830    },3831  },3832  {3833    name: 'search_industry_classification',3834    description: 'Search industry classifications by title or SIC code.',3835    input_schema: {3836      type: 'object',3837      properties: {3838        industryTitle: {3839          type: 'string',3840          description: 'Industry title to search',3841        },3842        sicCode: {3843          type: 'string',3844          description: 'SIC code to search',3845        },3846      },3847      required: [],3848    },3849  },3850  {3851    name: 'get_all_industry_classification',3852    description: 'Get complete industry classification data.',3853    input_schema: {3854      type: 'object',3855      properties: {},3856      required: [],3857    },3858  },3859  // ==================== INSIDER TRADES - ADVANCED ====================3860  {3861    name: 'get_latest_insider_trading',3862    description: 'Get latest insider trading transactions across all companies.',3863    input_schema: {3864      type: 'object',3865      properties: {3866        page: {3867          type: 'number',3868          description: 'Page number (default: 0)',3869        },3870        limit: {3871          type: 'number',3872          description: 'Results per page (default: 100)',3873        },3874      },3875      required: [],3876    },3877  },3878  {3879    name: 'search_insider_trades',3880    description: 'Search insider trades by symbol, company name, or reporting name.',3881    input_schema: {3882      type: 'object',3883      properties: {3884        symbol: {3885          type: 'string',3886          description: 'Stock ticker symbol',3887        },3888        companyName: {3889          type: 'string',3890          description: 'Company name',3891        },3892        reportingName: {3893          type: 'string',3894          description: 'Insider name',3895        },3896        page: {3897          type: 'number',3898          description: 'Page number (default: 0)',3899        },3900        limit: {3901          type: 'number',3902          description: 'Results per page (default: 100)',3903        },3904      },3905      required: [],3906    },3907  },3908  {3909    name: 'search_insider_trades_by_name',3910    description: 'Search insider trades by specific reporting person name.',3911    input_schema: {3912      type: 'object',3913      properties: {3914        name: {3915          type: 'string',3916          description: 'Reporting person name',3917        },3918      },3919      required: ['name'],3920    },3921  },3922  {3923    name: 'get_all_insider_transaction_types',3924    description: 'Get list of all insider transaction types with descriptions.',3925    input_schema: {3926      type: 'object',3927      properties: {},3928      required: [],3929    },3930  },3931  {3932    name: 'get_acquisition_of_beneficial_ownership',3933    description: 'Get beneficial ownership acquisitions and changes for a stock.',3934    input_schema: {3935      type: 'object',3936      properties: {3937        symbol: {3938          type: 'string',3939          description: 'Stock ticker symbol',3940        },3941      },3942      required: ['symbol'],3943    },3944  },3945  // ==================== INDEXES ====================3946  {3947    name: 'get_index_list',3948    description: 'Get list of all stock market indexes.',3949    input_schema: {3950      type: 'object',3951      properties: {},3952      required: [],3953    },3954  },3955  {3956    name: 'get_sp500_constituent',3957    description: 'Get current S&P 500 constituent companies.',3958    input_schema: {3959      type: 'object',3960      properties: {},3961      required: [],3962    },3963  },3964  {3965    name: 'get_nasdaq_constituent',3966    description: 'Get current NASDAQ composite constituent companies.',3967    input_schema: {3968      type: 'object',3969      properties: {},3970      required: [],3971    },3972  },3973  {3974    name: 'get_dow_jones_constituent',3975    description: 'Get current Dow Jones Industrial Average constituent companies.',3976    input_schema: {3977      type: 'object',3978      properties: {},3979      required: [],3980    },3981  },3982  {3983    name: 'get_historical_sp500_constituent',3984    description: 'Get historical S&P 500 constituent changes (additions/removals).',3985    input_schema: {3986      type: 'object',3987      properties: {},3988      required: [],3989    },3990  },3991  {3992    name: 'get_historical_nasdaq_constituent',3993    description: 'Get historical NASDAQ constituent changes.',3994    input_schema: {3995      type: 'object',3996      properties: {},3997      required: [],3998    },3999  },4000  {4001    name: 'get_historical_dow_jones_constituent',4002    description: 'Get historical Dow Jones constituent changes.',4003    input_schema: {4004      type: 'object',4005      properties: {},4006      required: [],4007    },4008  },4009  {4010    name: 'get_exchange_market_hours',4011    description: 'Get trading hours for a specific exchange.',4012    input_schema: {4013      type: 'object',4014      properties: {4015        exchange: {4016          type: 'string',4017          description: 'Exchange name (e.g., "NASDAQ", "NYSE")',4018        },4019      },4020      required: ['exchange'],4021    },4022  },4023  {4024    name: 'get_holidays_by_exchange',4025    description: 'Get holiday schedule for an exchange.',4026    input_schema: {4027      type: 'object',4028      properties: {4029        exchange: {4030          type: 'string',4031          description: 'Exchange name',4032        },4033      },4034      required: ['exchange'],4035    },4036  },4037  {4038    name: 'get_all_exchange_market_hours',4039    description: 'Get trading hours for all exchanges.',4040    input_schema: {4041      type: 'object',4042      properties: {},4043      required: [],4044    },4045  },4046  // ==================== COMMODITIES ====================4047  {4048    name: 'get_commodities_list',4049    description: 'Get list of all available commodities.',4050    input_schema: {4051      type: 'object',4052      properties: {},4053      required: [],4054    },4055  },4056  // ==================== DCF VALUATION ====================4057  {4058    name: 'get_dcf_valuation',4059    description: 'Get Discounted Cash Flow (DCF) valuation for a stock.',4060    input_schema: {4061      type: 'object',4062      properties: {4063        symbol: {4064          type: 'string',4065          description: 'Stock ticker symbol',4066        },4067      },4068      required: ['symbol'],4069    },4070  },4071  {4072    name: 'get_levered_dcf',4073    description: 'Get Levered DCF valuation (accounts for debt).',4074    input_schema: {4075      type: 'object',4076      properties: {4077        symbol: {4078          type: 'string',4079          description: 'Stock ticker symbol',4080        },4081      },4082      required: ['symbol'],4083    },4084  },4085  {4086    name: 'get_custom_dcf',4087    description: 'Get custom DCF valuation with user-defined parameters.',4088    input_schema: {4089      type: 'object',4090      properties: {4091        symbol: {4092          type: 'string',4093          description: 'Stock ticker symbol',4094        },4095        years: {4096          type: 'number',4097          description: 'Projection years',4098        },4099        growthRate: {4100          type: 'number',4101          description: 'Growth rate',4102        },4103        discountRate: {4104          type: 'number',4105          description: 'Discount rate',4106        },4107      },4108      required: ['symbol'],4109    },4110  },4111  {4112    name: 'get_custom_levered_dcf',4113    description: 'Get custom levered DCF with user-defined parameters.',4114    input_schema: {4115      type: 'object',4116      properties: {4117        symbol: {4118          type: 'string',4119          description: 'Stock ticker symbol',4120        },4121        years: {4122          type: 'number',4123          description: 'Projection years',4124        },4125        growthRate: {4126          type: 'number',4127          description: 'Growth rate',4128        },4129        discountRate: {4130          type: 'number',4131          description: 'Discount rate',4132        },4133      },4134      required: ['symbol'],4135    },4136  },4137  // ==================== FOREX ====================4138  {4139    name: 'get_forex_currency_pairs',4140    description: 'Get list of all available forex currency pairs.',4141    input_schema: {4142      type: 'object',4143      properties: {},4144      required: [],4145    },4146  },4147  // ==================== SENATE & HOUSE TRADING ====================4148  {4149    name: 'get_latest_senate_disclosures',4150    description: 'Get latest US Senate stock trading disclosures.',4151    input_schema: {4152      type: 'object',4153      properties: {4154        page: {4155          type: 'number',4156          description: 'Page number (default: 0)',4157        },4158        limit: {4159          type: 'number',4160          description: 'Results per page (default: 100)',4161        },4162      },4163      required: [],4164    },4165  },4166  {4167    name: 'get_latest_house_disclosures',4168    description: 'Get latest US House of Representatives stock trading disclosures.',4169    input_schema: {4170      type: 'object',4171      properties: {4172        page: {4173          type: 'number',4174          description: 'Page number (default: 0)',4175        },4176        limit: {4177          type: 'number',4178          description: 'Results per page (default: 100)',4179        },4180      },4181      required: [],4182    },4183  },4184  {4185    name: 'get_senate_trades_symbol',4186    description: 'Get Senate trading activity for a specific stock.',4187    input_schema: {4188      type: 'object',4189      properties: {4190        symbol: {4191          type: 'string',4192          description: 'Stock ticker symbol',4193        },4194      },4195      required: ['symbol'],4196    },4197  },4198  {4199    name: 'get_senate_trades_by_name',4200    description: 'Get Senate trading activity by senator name.',4201    input_schema: {4202      type: 'object',4203      properties: {4204        name: {4205          type: 'string',4206          description: 'Senator name',4207        },4208      },4209      required: ['name'],4210    },4211  },4212  {4213    name: 'get_house_trades_symbol',4214    description: 'Get House trading activity for a specific stock.',4215    input_schema: {4216      type: 'object',4217      properties: {4218        symbol: {4219          type: 'string',4220          description: 'Stock ticker symbol',4221        },4222      },4223      required: ['symbol'],4224    },4225  },4226  {4227    name: 'get_house_trades_by_name',4228    description: 'Get House trading activity by representative name.',4229    input_schema: {4230      type: 'object',4231      properties: {4232        name: {4233          type: 'string',4234          description: 'Representative name',4235        },4236      },4237      required: ['name'],4238    },4239  },4240  // ==================== ESG ====================4241  {4242    name: 'get_esg_disclosures',4243    description: 'Get ESG disclosures and detailed ESG data.',4244    input_schema: {4245      type: 'object',4246      properties: {4247        symbol: {4248          type: 'string',4249          description: 'Stock ticker symbol',4250        },4251      },4252      required: ['symbol'],4253    },4254  },4255  {4256    name: 'get_esg_ratings',4257    description: 'Get ESG ratings (Environmental, Social, Governance scores).',4258    input_schema: {4259      type: 'object',4260      properties: {4261        symbol: {4262          type: 'string',4263          description: 'Stock ticker symbol',4264        },4265      },4266      required: ['symbol'],4267    },4268  },4269  {4270    name: 'get_esg_benchmark',4271    description: 'Get ESG benchmark data for comparison.',4272    input_schema: {4273      type: 'object',4274      properties: {4275        year: {4276          type: 'number',4277          description: 'Year for benchmark',4278        },4279      },4280      required: [],4281    },4282  },4283  // ==================== COT ====================4284  {4285    name: 'get_cot_list',4286    description: 'Get list of available Commitment of Traders (COT) reports.',4287    input_schema: {4288      type: 'object',4289      properties: {},4290      required: [],4291    },4292  },4293  // ==================== CROWDFUNDING & EQUITY OFFERINGS ====================4294  {4295    name: 'get_latest_crowdfunding_campaigns',4296    description: 'Get latest crowdfunding campaigns and offerings.',4297    input_schema: {4298      type: 'object',4299      properties: {4300        page: {4301          type: 'number',4302          description: 'Page number (default: 0)',4303        },4304        limit: {4305          type: 'number',4306          description: 'Results per page (default: 100)',4307        },4308      },4309      required: [],4310    },4311  },4312  {4313    name: 'search_crowdfunding_campaigns',4314    description: 'Search crowdfunding campaigns by name.',4315    input_schema: {4316      type: 'object',4317      properties: {4318        name: {4319          type: 'string',4320          description: 'Campaign name to search',4321        },4322      },4323      required: ['name'],4324    },4325  },4326  {4327    name: 'get_crowdfunding_by_cik',4328    description: 'Get crowdfunding campaigns by company CIK.',4329    input_schema: {4330      type: 'object',4331      properties: {4332        cik: {4333          type: 'string',4334          description: 'SEC CIK number',4335        },4336      },4337      required: ['cik'],4338    },4339  },4340  {4341    name: 'get_equity_offering_updates',4342    description: 'Get latest equity offering updates.',4343    input_schema: {4344      type: 'object',4345      properties: {4346        page: {4347          type: 'number',4348          description: 'Page number (default: 0)',4349        },4350        limit: {4351          type: 'number',4352          description: 'Results per page (default: 10)',4353        },4354      },4355      required: [],4356    },4357  },4358  {4359    name: 'search_equity_offerings',4360    description: 'Search equity offerings by company name.',4361    input_schema: {4362      type: 'object',4363      properties: {4364        name: {4365          type: 'string',4366          description: 'Company name',4367        },4368      },4369      required: ['name'],4370    },4371  },4372  {4373    name: 'get_company_equity_offerings_by_cik',4374    description: 'Get equity offerings by company CIK.',4375    input_schema: {4376      type: 'object',4377      properties: {4378        cik: {4379          type: 'string',4380          description: 'SEC CIK number',4381        },4382      },4383      required: ['cik'],4384    },4385  },4386  // ==================== BULK APIs (for large-scale data) ====================4387  {4388    name: 'get_gainers',4389    description: 'Get biggest stock price gainers of the day.',4390    input_schema: {4391      type: 'object',4392      properties: {},4393      required: [],4394    },4395  },4396  {4397    name: 'get_losers',4398    description: 'Get biggest stock price losers of the day.',4399    input_schema: {4400      type: 'object',4401      properties: {},4402      required: [],4403    },4404  },4405  {4406    name: 'get_actives',4407    description: 'Get most actively traded stocks by volume.',4408    input_schema: {4409      type: 'object',4410      properties: {},4411      required: [],4412    },4413  },4414  {4415    name: 'get_eodhd_historical',4416    description: 'Gets end-of-day historical OHLCV prices (with adjusted close) from EODHD for stocks, ETFs, indices, forex and crypto on 70+ exchanges worldwide. Complements FMP with much broader international coverage. Symbols use EODHD format TICKER.EXCHANGE (e.g., "AAPL.US", "AIR.PA" for Airbus on Euronext Paris, "BMW.XETRA" for BMW on Xetra, "EURUSD.FOREX" for forex, "BTC-USD.CC" for Bitcoin, "GSPC.INDX" for S&P 500 index). Bare tickers default to .US.',4417    input_schema: {4418      type: 'object',4419      properties: {4420        symbol: {4421          type: 'string',4422          description: 'Ticker in EODHD format TICKER.EXCHANGE (e.g., "AAPL.US", "AIR.PA", "BMW.XETRA", "BTC-USD.CC"). Bare tickers like "AAPL" default to the US exchange.',4423        },4424        from: {4425          type: 'string',4426          description: 'Start date in YYYY-MM-DD format (optional)',4427        },4428        to: {4429          type: 'string',4430          description: 'End date in YYYY-MM-DD format (optional)',4431        },4432        period: {4433          type: 'string',4434          enum: ['d', 'w', 'm'],4435          description: 'Bar period: "d" daily (default), "w" weekly, "m" monthly',4436        },4437      },4438      required: ['symbol'],4439    },4440  },4441  {4442    name: 'get_eodhd_quote',4443    description: 'Gets a live (delayed ~15min) quote from EODHD for one or more instruments: current price, open/high/low, volume, previous close and change. Works for international stocks, indices, forex and crypto using TICKER.EXCHANGE format.',4444    input_schema: {4445      type: 'object',4446      properties: {4447        symbol: {4448          type: 'string',4449          description: 'Primary ticker in EODHD format (e.g., "AAPL.US", "AIR.PA", "EURUSD.FOREX")',4450        },4451        additional_symbols: {4452          type: 'array',4453          items: { type: 'string' },4454          description: 'Optional list of extra tickers to quote in the same call',4455        },4456      },4457      required: ['symbol'],4458    },4459  },4460  {4461    name: 'get_eodhd_intraday',4462    description: 'Gets intraday historical OHLCV bars from EODHD at 1-minute, 5-minute or 1-hour resolution. Useful for fine-grained price analysis, intraday volatility and international instruments not covered by FMP.',4463    input_schema: {4464      type: 'object',4465      properties: {4466        symbol: {4467          type: 'string',4468          description: 'Ticker in EODHD format (e.g., "AAPL.US")',4469        },4470        interval: {4471          type: 'string',4472          enum: ['1m', '5m', '1h'],4473          description: 'Bar interval: "1m", "5m" (default) or "1h"',4474        },4475        from: {4476          type: 'number',4477          description: 'Start as Unix timestamp in seconds (optional)',4478        },4479        to: {4480          type: 'number',4481          description: 'End as Unix timestamp in seconds (optional)',4482        },4483      },4484      required: ['symbol'],4485    },4486  },4487  {4488    name: 'get_eodhd_fundamentals',4489    description: 'Gets company/ETF fundamentals from EODHD: general info, highlights (market cap, P/E, EPS, margins), valuation ratios, shares statistics, technicals and dividend/split info. Covers international companies beyond US markets. Use the filter parameter for specific sections or deep paths (e.g., "Financials::Balance_Sheet::yearly", "Earnings", "ETF_Data"); pass "full" for the complete payload (large).',4490    input_schema: {4491      type: 'object',4492      properties: {4493        symbol: {4494          type: 'string',4495          description: 'Ticker in EODHD format (e.g., "AAPL.US", "AIR.PA")',4496        },4497        filter: {4498          type: 'string',4499          description: 'Comma-separated sections or deep path (e.g., "General,Highlights,Valuation", "Financials::Income_Statement::yearly", "Earnings"). Default: General,Highlights,Valuation,SharesStats,Technicals,SplitsDividends. Pass "full" for everything.',4500        },4501      },4502      required: ['symbol'],4503    },4504  },4505  {4506    name: 'get_eodhd_dividends',4507    description: 'Gets historical dividend payments from EODHD for an instrument, including ex-date, record/payment dates, amount and currency. Good international coverage.',4508    input_schema: {4509      type: 'object',4510      properties: {4511        symbol: {4512          type: 'string',4513          description: 'Ticker in EODHD format (e.g., "AAPL.US")',4514        },4515        from: {4516          type: 'string',4517          description: 'Start date YYYY-MM-DD (optional)',4518        },4519        to: {4520          type: 'string',4521          description: 'End date YYYY-MM-DD (optional)',4522        },4523      },4524      required: ['symbol'],4525    },4526  },4527  {4528    name: 'get_eodhd_splits',4529    description: 'Gets historical stock splits from EODHD for an instrument (date and split ratio like "4.000000/1.000000").',4530    input_schema: {4531      type: 'object',4532      properties: {4533        symbol: {4534          type: 'string',4535          description: 'Ticker in EODHD format (e.g., "AAPL.US")',4536        },4537        from: {4538          type: 'string',4539          description: 'Start date YYYY-MM-DD (optional)',4540        },4541        to: {4542          type: 'string',4543          description: 'End date YYYY-MM-DD (optional)',4544        },4545      },4546      required: ['symbol'],4547    },4548  },4549  {4550    name: 'search_eodhd',4551    description: 'Searches stocks, ETFs, funds, indices and crypto by ticker or company name across all exchanges covered by EODHD (70+ worldwide). Returns the EODHD symbol (Code + Exchange), name, type, country and currency. Use this to find the correct TICKER.EXCHANGE symbol for international instruments before calling other EODHD tools.',4552    input_schema: {4553      type: 'object',4554      properties: {4555        query: {4556          type: 'string',4557          description: 'Ticker or company name to search for (e.g., "Airbus", "Toyota", "LVMH")',4558        },4559        limit: {4560          type: 'number',4561          description: 'Maximum number of results (default 15)',4562        },4563      },4564      required: ['query'],4565    },4566  },4567  {4568    name: 'get_eodhd_news',4569    description: 'Gets financial news from EODHD for a ticker or a topic tag, with sentiment scores per article. Provide at least a symbol or a tag.',4570    input_schema: {4571      type: 'object',4572      properties: {4573        symbol: {4574          type: 'string',4575          description: 'Ticker in EODHD format (e.g., "AAPL.US"). Optional if tag is provided.',4576        },4577        tag: {4578          type: 'string',4579          description: 'Topic tag (e.g., "mergers and acquisitions", "earnings", "interest rates"). Optional if symbol is provided.',4580        },4581        limit: {4582          type: 'number',4583          description: 'Number of articles to return (default 10)',4584        },4585        from: {4586          type: 'string',4587          description: 'Start date YYYY-MM-DD (optional)',4588        },4589        to: {4590          type: 'string',4591          description: 'End date YYYY-MM-DD (optional)',4592        },4593      },4594      required: [],4595    },4596  },4597];45984599export { AVAILABLE_TOOLS };4600