Skip to main content
Glama

analyze_sentiment

Analyze text sentiment using FinBERT to determine polarity, confidence, and classification for news headlines or articles in quantitative finance contexts.

Instructions

Analyzes the sentiment of a given text using FinBERT on Modal (via Public Endpoint). Args: text: Text to analyze (e.g., news headline, article). Returns: Dictionary with polarity, confidence, and classification.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYes

Implementation Reference

  • The core handler function that analyzes sentiment of input text using FinBERT model via Modal endpoint. Posts text to MODAL_ENDPOINT_URL, processes response to polarity and classification.
    def analyze_sentiment(text: str) -> Dict[str, Any]: """ Analyzes the sentiment of a given text using FinBERT on Modal (via Public Endpoint). Args: text: Text to analyze (e.g., news headline, article). Returns: Dictionary with polarity, confidence, and classification. """ # Try Modal first try: # Check if URL is configured if "replace-me" in MODAL_ENDPOINT_URL: raise ValueError("Modal URL not configured") response = requests.post(MODAL_ENDPOINT_URL, json={"text": text}, timeout=15) response.raise_for_status() result = response.json() # FinBERT returns {'label': 'positive'/'negative'/'neutral', 'score': float} label = result['label'].upper() score = result['score'] # Map to polarity-like score for compatibility (-1 to 1) if label == "POSITIVE": polarity = score elif label == "NEGATIVE": polarity = -score else: polarity = 0.0 return { "text": text[:100] + "..." if len(text) > 100 else text, "polarity": round(polarity, 3), "subjectivity": 0.0, # FinBERT doesn't give subjectivity "classification": label, "model": "FinBERT (Modal Public)" } except Exception as e: logger.error(f"Modal FinBERT failed: {e}") return {"error": f"Error analyzing sentiment: {str(e)}"}
  • server.py:405-408 (registration)
    Registers the analyze_sentiment tool (along with related news tools) with the MCP server using the register_tools helper function.
    register_tools( [get_news, analyze_sentiment, get_symbol_sentiment], "News & Sentiment" )
  • app.py:293-293 (registration)
    Includes analyze_sentiment in the tools_map dictionary under 'News & Sentiment' category, used for Gradio UI toolbox and potentially MCP exposure via Gradio's mcp_server=True.
    "News & Sentiment": [get_news, analyze_sentiment, get_symbol_sentiment, get_news_resource],

Latest Blog Posts

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/N-lia/MonteWalk'

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