Skip to main content
Glama

Weather & Stock MCP Server

by Jeetinida
screener.js10.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = screener; const typebox_1 = require("@sinclair/typebox"); const yahooFinanceTypes_js_1 = require("../lib/yahooFinanceTypes.js"); const ScreenerCriterum = typebox_1.Type.Object({ field: typebox_1.Type.String(), operators: typebox_1.Type.Array(typebox_1.Type.String()), values: typebox_1.Type.Array(yahooFinanceTypes_js_1.YahooNumber), labelsSelected: typebox_1.Type.Array(yahooFinanceTypes_js_1.YahooNumber), dependentValues: typebox_1.Type.Array(typebox_1.Type.Any()), }, { title: "ScreenerCriterum", }); const ScreenerCriteriaMeta = typebox_1.Type.Object({ size: yahooFinanceTypes_js_1.YahooNumber, offset: yahooFinanceTypes_js_1.YahooNumber, sortField: typebox_1.Type.String(), sortType: typebox_1.Type.String(), quoteType: typebox_1.Type.String(), criteria: typebox_1.Type.Array(ScreenerCriterum), topOperator: typebox_1.Type.String(), }, { title: "ScreenerCriteriaMeta", }); const ScreenerQuote = typebox_1.Type.Object({ language: typebox_1.Type.String(), region: typebox_1.Type.String(), quoteType: typebox_1.Type.String(), typeDisp: typebox_1.Type.String(), quoteSourceName: typebox_1.Type.String(), triggerable: typebox_1.Type.Boolean(), customPriceAlertConfidence: typebox_1.Type.String(), lastCloseTevEbitLtm: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), lastClosePriceToNNWCPerShare: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), firstTradeDateMilliseconds: yahooFinanceTypes_js_1.YahooNumber, priceHint: yahooFinanceTypes_js_1.YahooNumber, postMarketChangePercent: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), postMarketTime: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), postMarketPrice: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), postMarketChange: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), regularMarketChange: yahooFinanceTypes_js_1.YahooNumber, regularMarketTime: yahooFinanceTypes_js_1.YahooNumber, regularMarketPrice: yahooFinanceTypes_js_1.YahooNumber, regularMarketDayHigh: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), regularMarketDayRange: yahooFinanceTypes_js_1.YahooTwoNumberRange, currency: typebox_1.Type.String(), regularMarketDayLow: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), regularMarketVolume: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), regularMarketPreviousClose: yahooFinanceTypes_js_1.YahooNumber, bid: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), ask: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), bidSize: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), askSize: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), market: typebox_1.Type.String(), messageBoardId: typebox_1.Type.String(), fullExchangeName: typebox_1.Type.String(), longName: typebox_1.Type.String(), financialCurrency: typebox_1.Type.Optional(typebox_1.Type.String()), regularMarketOpen: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), averageDailyVolume3Month: yahooFinanceTypes_js_1.YahooNumber, averageDailyVolume10Day: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekLowChange: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekLowChangePercent: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekRange: yahooFinanceTypes_js_1.YahooTwoNumberRange, fiftyTwoWeekHighChange: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekHighChangePercent: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekChangePercent: yahooFinanceTypes_js_1.YahooNumber, earningsTimestamp: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), earningsTimestampStart: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), earningsTimestampEnd: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), trailingAnnualDividendRate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), trailingAnnualDividendYield: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), marketState: typebox_1.Type.String(), epsTrailingTwelveMonths: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), epsForward: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), epsCurrentYear: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), priceEpsCurrentYear: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), sharesOutstanding: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), bookValue: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), fiftyDayAverage: yahooFinanceTypes_js_1.YahooNumber, fiftyDayAverageChange: yahooFinanceTypes_js_1.YahooNumber, fiftyDayAverageChangePercent: yahooFinanceTypes_js_1.YahooNumber, twoHundredDayAverage: yahooFinanceTypes_js_1.YahooNumber, twoHundredDayAverageChange: yahooFinanceTypes_js_1.YahooNumber, twoHundredDayAverageChangePercent: yahooFinanceTypes_js_1.YahooNumber, marketCap: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), forwardPE: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), priceToBook: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), sourceInterval: yahooFinanceTypes_js_1.YahooNumber, exchangeDataDelayedBy: yahooFinanceTypes_js_1.YahooNumber, exchangeTimezoneName: typebox_1.Type.String(), exchangeTimezoneShortName: typebox_1.Type.String(), gmtOffSetMilliseconds: yahooFinanceTypes_js_1.YahooNumber, esgPopulated: typebox_1.Type.Boolean(), tradeable: typebox_1.Type.Boolean(), cryptoTradeable: typebox_1.Type.Boolean(), exchange: typebox_1.Type.String(), fiftyTwoWeekLow: yahooFinanceTypes_js_1.YahooNumber, fiftyTwoWeekHigh: yahooFinanceTypes_js_1.YahooNumber, shortName: typebox_1.Type.String(), averageAnalystRating: typebox_1.Type.Optional(typebox_1.Type.String()), regularMarketChangePercent: yahooFinanceTypes_js_1.YahooNumber, symbol: typebox_1.Type.String(), dividendDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooFinanceDate), displayName: typebox_1.Type.Optional(typebox_1.Type.String()), trailingPE: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), prevName: typebox_1.Type.Optional(typebox_1.Type.String()), nameChangeDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooFinanceDate), ipoExpectedDate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooFinanceDate), dividendYield: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), dividendRate: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), yieldTTM: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), peTTM: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), annualReturnNavY3: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), annualReturnNavY5: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), ytdReturn: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), trailingThreeMonthReturns: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), netAssets: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), netExpenseRatio: typebox_1.Type.Optional(yahooFinanceTypes_js_1.YahooNumber), }, { title: "ScreenerQuote", }); const ScreenerResult = typebox_1.Type.Object({ id: typebox_1.Type.String(), title: typebox_1.Type.String(), description: typebox_1.Type.String(), canonicalName: typebox_1.Type.String(), criteriaMeta: ScreenerCriteriaMeta, rawCriteria: typebox_1.Type.String(), start: yahooFinanceTypes_js_1.YahooNumber, count: yahooFinanceTypes_js_1.YahooNumber, total: yahooFinanceTypes_js_1.YahooNumber, quotes: typebox_1.Type.Array(ScreenerQuote), useRecords: typebox_1.Type.Boolean(), predefinedScr: typebox_1.Type.Boolean(), versionId: yahooFinanceTypes_js_1.YahooNumber, creationDate: yahooFinanceTypes_js_1.YahooFinanceDate, lastUpdated: yahooFinanceTypes_js_1.YahooFinanceDate, isPremium: typebox_1.Type.Boolean(), iconUrl: typebox_1.Type.String(), }, { title: "ScreenerResult", }); const PredefinedScreenerModules = typebox_1.Type.Union([ typebox_1.Type.Literal("aggressive_small_caps"), typebox_1.Type.Literal("conservative_foreign_funds"), typebox_1.Type.Literal("day_gainers"), typebox_1.Type.Literal("day_losers"), typebox_1.Type.Literal("growth_technology_stocks"), typebox_1.Type.Literal("high_yield_bond"), typebox_1.Type.Literal("most_actives"), typebox_1.Type.Literal("most_shorted_stocks"), typebox_1.Type.Literal("portfolio_anchors"), typebox_1.Type.Literal("small_cap_gainers"), typebox_1.Type.Literal("solid_large_growth_funds"), typebox_1.Type.Literal("solid_midcap_growth_funds"), typebox_1.Type.Literal("top_mutual_funds"), typebox_1.Type.Literal("undervalued_growth_stocks"), typebox_1.Type.Literal("undervalued_large_caps"), ], { title: "ScreenerPredefinedScreenerModules", }); const queryOptionsDefaults = { lang: "en-US", region: "US", scrIds: "day_gainers", count: 5, }; const ScreenerOptions = typebox_1.Type.Object({ lang: typebox_1.Type.Optional(typebox_1.Type.String()), region: typebox_1.Type.Optional(typebox_1.Type.String()), scrIds: PredefinedScreenerModules, count: typebox_1.Type.Optional(typebox_1.Type.Number()), }); function screener(queryOptionsOverrides, moduleOptions) { return this._moduleExec({ moduleName: "screener", query: { url: "https://${YF_QUERY_HOST}/v1/finance/screener/predefined/saved", schema: ScreenerOptions, defaults: queryOptionsDefaults, overrides: queryOptionsOverrides, needsCrumb: true, }, result: { schema: ScreenerResult, transformWith(result) { // console.log(result); if (!result.finance) throw new Error("Unexpected result: " + JSON.stringify(result)); return result.finance.result[0]; }, }, moduleOptions, }); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jeetinida/stocknews-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server