alphaIntelligence_newsSentiments
Analyze and retrieve market news sentiment and data for specific tickers, topics, and timeframes using Alpha Vantage integration for informed financial decision-making.
Instructions
Fetches market news and sentiment data from Alpha Vantage.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1-1000). | |
| sort | No | Sort order for results. | LATEST |
| tickersList | No | List of stock/crypto/forex symbols (e.g., ["AAPL", "GOOGL"]). | |
| time_from | No | Start time for news articles (YYYYMMDDTHHMM format). | |
| time_to | No | End time for news articles (YYYYMMDDTHHMM format). | |
| topics | No | Specific topics to filter news for (e.g., "technology", "earnings"). |
Input Schema (JSON Schema)
{
"additionalProperties": false,
"description": "Parameters for fetching market news and sentiment data.",
"properties": {
"limit": {
"default": 50,
"description": "Number of results to return (1-1000).",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"sort": {
"default": "LATEST",
"description": "Sort order for results.",
"enum": [
"LATEST",
"EARLIEST",
"RELEVANCE"
],
"type": "string"
},
"tickersList": {
"description": "List of stock/crypto/forex symbols (e.g., [\"AAPL\", \"GOOGL\"]).",
"items": {
"type": "string"
},
"type": "array"
},
"time_from": {
"description": "Start time for news articles (YYYYMMDDTHHMM format).",
"type": "string"
},
"time_to": {
"description": "End time for news articles (YYYYMMDDTHHMM format).",
"type": "string"
},
"topics": {
"description": "Specific topics to filter news for (e.g., \"technology\", \"earnings\").",
"type": "string"
}
},
"type": "object"
}
Implementation Reference
- src/index.ts:121-136 (registration)Registration of the 'alphaIntelligence_newsSentiments' tool using server.addTool, including name, description, input schema reference, and execute handler.// --- Alpha Intelligence Tools --- server.addTool({ name: "alphaIntelligence_newsSentiments", description: "Fetches market news and sentiment data from Alpha Vantage.", parameters: schemas.NewsSentimentsParamsSchema, execute: ( args, context // Let type be inferred ) => executeAvantageTool( "alphaIntelligence_newsSentiments", args, context, (av, params) => av.alphaIntelligence.newsSentiments(params) ), });
- src/schemas.ts:12-19 (schema)Zod schema defining the input parameters (tickersList, topics, time_from, time_to, sort, limit) for the newsSentiments tool.export const NewsSentimentsParamsSchema = z.object({ tickersList: z.array(z.string()).optional().describe('List of stock/crypto/forex symbols (e.g., ["AAPL", "GOOGL"]).'), topics: z.string().optional().describe('Specific topics to filter news for (e.g., "technology", "earnings").'), time_from: z.string().optional().describe('Start time for news articles (YYYYMMDDTHHMM format).'), time_to: z.string().optional().describe('End time for news articles (YYYYMMDDTHHMM format).'), sort: z.enum(['LATEST', 'EARLIEST', 'RELEVANCE']).default('LATEST').optional().describe('Sort order for results.'), limit: z.number().int().min(1).max(1000).default(50).optional().describe('Number of results to return (1-1000).'), }).describe('Parameters for fetching market news and sentiment data.')
- src/index.ts:126-134 (handler)Tool-specific execute handler that calls the generic executeAvantageTool with the Alpha Vantage library method for news sentiments.execute: ( args, context // Let type be inferred ) => executeAvantageTool( "alphaIntelligence_newsSentiments", args, context, (av, params) => av.alphaIntelligence.newsSentiments(params)
- src/index.ts:38-115 (helper)Generic helper function shared by all tools: manages API key, AVantage instance via resourceManager, executes the library method, handles responses and errors.async function executeAvantageTool<TArgs, TResult>( toolName: string, args: TArgs, context: Context<Record<string, unknown> | undefined>, // Use the imported Context type directly avantageMethod: ( av: AVantage, args: TArgs ) => Promise<{ error?: boolean; reason?: string; data?: TResult }> ): Promise<string> { logger.info(`Executing '${toolName}' tool for request ID: ${context}`); logger.debug(`Args for ${toolName}: ${JSON.stringify(args)}`); // --- Authentication & Resource Management --- // Access extraArgs safely - it might be null or undefined const extraArgsApiKey = context.extraArgs?.apiKey as string | undefined; const apiKey = extraArgsApiKey || config.apiKey; if (!apiKey) { logger.error(`'${toolName}' failed: Alpha Vantage API key missing.`); throw new UserError(apiKeyErrorMessage); } logger.debug( `Using AV API key (source: ${extraArgsApiKey ? "extraArgs" : "environment"}) for ${toolName}` ); try { // Get or create AVantage instance managed by ResourceManager const av = await resourceManager.getResource<AVantage>( apiKey, // Cache key is the resolved API key "avantage_client", // Type identifier for logging async (key) => { // Factory Function logger.info( `Creating new AVantage instance for key ending ...${key.slice(-4)}` ); // AVantage library reads AV_PREMIUM from process.env internally return new AVantage(key); }, async (avInstance) => { // Cleanup Function (no-op needed for AVantage) logger.debug(`Destroying AVantage instance (no-op)`); } ); // --- Library Call --- const result = await avantageMethod(av, args); // --- Response Handling --- if (result.error) { logger.warn( `'${toolName}' failed. Reason from avantage: ${result.reason}` ); throw new UserError(result.reason || `Tool '${toolName}' failed.`); } if (result.data === undefined || result.data === null) { logger.warn(`'${toolName}' completed successfully but returned no data.`); return "null"; // Return string "null" for empty data } logger.info(`'${toolName}' completed successfully.`); // Stringify the data part of the response return JSON.stringify(result.data); } catch (error: any) { logger.error( `Error during execution of '${toolName}': ${error.message}`, error ); // If it's already a UserError, rethrow it if (error instanceof UserError) { throw error; } // Otherwise, wrap it in a UserError throw new UserError( `An unexpected error occurred while executing tool '${toolName}': ${error.message}` ); } }