diff --git a/pyproject.toml b/pyproject.toml index 88769c3..7b840cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.10" dependencies = [ "mcp[cli]>=1.9.3", - "polygon-api-client>=1.14.5", + "polygon-api-client>=1.15.3", ] [[project.authors]] name = "Polygon" diff --git a/src/mcp_polygon/server.py b/src/mcp_polygon/server.py index ed0663b..509053a 100644 --- a/src/mcp_polygon/server.py +++ b/src/mcp_polygon/server.py @@ -934,6 +934,698 @@ async def list_treasury_yields( return {"error": str(e)} +@poly_mcp.tool() +async def list_benzinga_analyst_insights( + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + firm: Optional[str] = None, + firm_any_of: Optional[str] = None, + firm_gt: Optional[str] = None, + firm_gte: Optional[str] = None, + firm_lt: Optional[str] = None, + firm_lte: Optional[str] = None, + rating_action: Optional[str] = None, + rating_action_any_of: Optional[str] = None, + rating_action_gt: Optional[str] = None, + rating_action_gte: Optional[str] = None, + rating_action_lt: Optional[str] = None, + rating_action_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + benzinga_rating_id: Optional[str] = None, + benzinga_rating_id_any_of: Optional[str] = None, + benzinga_rating_id_gt: Optional[str] = None, + benzinga_rating_id_gte: Optional[str] = None, + benzinga_rating_id_lt: Optional[str] = None, + benzinga_rating_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga analyst insights. + """ + try: + results = polygon_client.list_benzinga_analyst_insights( + date=date, + date_any_of=date_any_of, + date_gt=date_gt, + date_gte=date_gte, + date_lt=date_lt, + date_lte=date_lte, + ticker=ticker, + ticker_any_of=ticker_any_of, + ticker_gt=ticker_gt, + ticker_gte=ticker_gte, + ticker_lt=ticker_lt, + ticker_lte=ticker_lte, + last_updated=last_updated, + last_updated_any_of=last_updated_any_of, + last_updated_gt=last_updated_gt, + last_updated_gte=last_updated_gte, + last_updated_lt=last_updated_lt, + last_updated_lte=last_updated_lte, + firm=firm, + firm_any_of=firm_any_of, + firm_gt=firm_gt, + firm_gte=firm_gte, + firm_lt=firm_lt, + firm_lte=firm_lte, + rating_action=rating_action, + rating_action_any_of=rating_action_any_of, + rating_action_gt=rating_action_gt, + rating_action_gte=rating_action_gte, + rating_action_lt=rating_action_lt, + rating_action_lte=rating_action_lte, + benzinga_firm_id=benzinga_firm_id, + benzinga_firm_id_any_of=benzinga_firm_id_any_of, + benzinga_firm_id_gt=benzinga_firm_id_gt, + benzinga_firm_id_gte=benzinga_firm_id_gte, + benzinga_firm_id_lt=benzinga_firm_id_lt, + benzinga_firm_id_lte=benzinga_firm_id_lte, + benzinga_rating_id=benzinga_rating_id, + benzinga_rating_id_any_of=benzinga_rating_id_any_of, + benzinga_rating_id_gt=benzinga_rating_id_gt, + benzinga_rating_id_gte=benzinga_rating_id_gte, + benzinga_rating_id_lt=benzinga_rating_id_lt, + benzinga_rating_id_lte=benzinga_rating_id_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_analysts( + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + firm_name: Optional[str] = None, + firm_name_any_of: Optional[str] = None, + firm_name_gt: Optional[str] = None, + firm_name_gte: Optional[str] = None, + firm_name_lt: Optional[str] = None, + firm_name_lte: Optional[str] = None, + full_name: Optional[str] = None, + full_name_any_of: Optional[str] = None, + full_name_gt: Optional[str] = None, + full_name_gte: Optional[str] = None, + full_name_lt: Optional[str] = None, + full_name_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga analysts. + """ + try: + results = polygon_client.list_benzinga_analysts( + benzinga_id=benzinga_id, + benzinga_id_any_of=benzinga_id_any_of, + benzinga_id_gt=benzinga_id_gt, + benzinga_id_gte=benzinga_id_gte, + benzinga_id_lt=benzinga_id_lt, + benzinga_id_lte=benzinga_id_lte, + benzinga_firm_id=benzinga_firm_id, + benzinga_firm_id_any_of=benzinga_firm_id_any_of, + benzinga_firm_id_gt=benzinga_firm_id_gt, + benzinga_firm_id_gte=benzinga_firm_id_gte, + benzinga_firm_id_lt=benzinga_firm_id_lt, + benzinga_firm_id_lte=benzinga_firm_id_lte, + firm_name=firm_name, + firm_name_any_of=firm_name_any_of, + firm_name_gt=firm_name_gt, + firm_name_gte=firm_name_gte, + firm_name_lt=firm_name_lt, + firm_name_lte=firm_name_lte, + full_name=full_name, + full_name_any_of=full_name_any_of, + full_name_gt=full_name_gt, + full_name_gte=full_name_gte, + full_name_lt=full_name_lt, + full_name_lte=full_name_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_consensus_ratings( + ticker: str, + date: Optional[Union[str, date]] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + limit: Optional[int] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga consensus ratings for a ticker. + """ + try: + results = polygon_client.list_benzinga_consensus_ratings( + ticker=ticker, + date=date, + date_gt=date_gt, + date_gte=date_gte, + date_lt=date_lt, + date_lte=date_lte, + limit=limit, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_earnings( + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + date_status: Optional[str] = None, + date_status_any_of: Optional[str] = None, + date_status_gt: Optional[str] = None, + date_status_gte: Optional[str] = None, + date_status_lt: Optional[str] = None, + date_status_lte: Optional[str] = None, + eps_surprise_percent: Optional[float] = None, + eps_surprise_percent_any_of: Optional[str] = None, + eps_surprise_percent_gt: Optional[float] = None, + eps_surprise_percent_gte: Optional[float] = None, + eps_surprise_percent_lt: Optional[float] = None, + eps_surprise_percent_lte: Optional[float] = None, + revenue_surprise_percent: Optional[float] = None, + revenue_surprise_percent_any_of: Optional[str] = None, + revenue_surprise_percent_gt: Optional[float] = None, + revenue_surprise_percent_gte: Optional[float] = None, + revenue_surprise_percent_lt: Optional[float] = None, + revenue_surprise_percent_lte: Optional[float] = None, + fiscal_year: Optional[int] = None, + fiscal_year_any_of: Optional[str] = None, + fiscal_year_gt: Optional[int] = None, + fiscal_year_gte: Optional[int] = None, + fiscal_year_lt: Optional[int] = None, + fiscal_year_lte: Optional[int] = None, + fiscal_period: Optional[str] = None, + fiscal_period_any_of: Optional[str] = None, + fiscal_period_gt: Optional[str] = None, + fiscal_period_gte: Optional[str] = None, + fiscal_period_lt: Optional[str] = None, + fiscal_period_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga earnings. + """ + try: + results = polygon_client.list_benzinga_earnings( + date=date, + date_any_of=date_any_of, + date_gt=date_gt, + date_gte=date_gte, + date_lt=date_lt, + date_lte=date_lte, + ticker=ticker, + ticker_any_of=ticker_any_of, + ticker_gt=ticker_gt, + ticker_gte=ticker_gte, + ticker_lt=ticker_lt, + ticker_lte=ticker_lte, + importance=importance, + importance_any_of=importance_any_of, + importance_gt=importance_gt, + importance_gte=importance_gte, + importance_lt=importance_lt, + importance_lte=importance_lte, + last_updated=last_updated, + last_updated_any_of=last_updated_any_of, + last_updated_gt=last_updated_gt, + last_updated_gte=last_updated_gte, + last_updated_lt=last_updated_lt, + last_updated_lte=last_updated_lte, + date_status=date_status, + date_status_any_of=date_status_any_of, + date_status_gt=date_status_gt, + date_status_gte=date_status_gte, + date_status_lt=date_status_lt, + date_status_lte=date_status_lte, + eps_surprise_percent=eps_surprise_percent, + eps_surprise_percent_any_of=eps_surprise_percent_any_of, + eps_surprise_percent_gt=eps_surprise_percent_gt, + eps_surprise_percent_gte=eps_surprise_percent_gte, + eps_surprise_percent_lt=eps_surprise_percent_lt, + eps_surprise_percent_lte=eps_surprise_percent_lte, + revenue_surprise_percent=revenue_surprise_percent, + revenue_surprise_percent_any_of=revenue_surprise_percent_any_of, + revenue_surprise_percent_gt=revenue_surprise_percent_gt, + revenue_surprise_percent_gte=revenue_surprise_percent_gte, + revenue_surprise_percent_lt=revenue_surprise_percent_lt, + revenue_surprise_percent_lte=revenue_surprise_percent_lte, + fiscal_year=fiscal_year, + fiscal_year_any_of=fiscal_year_any_of, + fiscal_year_gt=fiscal_year_gt, + fiscal_year_gte=fiscal_year_gte, + fiscal_year_lt=fiscal_year_lt, + fiscal_year_lte=fiscal_year_lte, + fiscal_period=fiscal_period, + fiscal_period_any_of=fiscal_period_any_of, + fiscal_period_gt=fiscal_period_gt, + fiscal_period_gte=fiscal_period_gte, + fiscal_period_lt=fiscal_period_lt, + fiscal_period_lte=fiscal_period_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_firms( + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga firms. + """ + try: + results = polygon_client.list_benzinga_firms( + benzinga_id=benzinga_id, + benzinga_id_any_of=benzinga_id_any_of, + benzinga_id_gt=benzinga_id_gt, + benzinga_id_gte=benzinga_id_gte, + benzinga_id_lt=benzinga_id_lt, + benzinga_id_lte=benzinga_id_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_guidance( + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + positioning: Optional[str] = None, + positioning_any_of: Optional[str] = None, + positioning_gt: Optional[str] = None, + positioning_gte: Optional[str] = None, + positioning_lt: Optional[str] = None, + positioning_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + fiscal_year: Optional[int] = None, + fiscal_year_any_of: Optional[str] = None, + fiscal_year_gt: Optional[int] = None, + fiscal_year_gte: Optional[int] = None, + fiscal_year_lt: Optional[int] = None, + fiscal_year_lte: Optional[int] = None, + fiscal_period: Optional[str] = None, + fiscal_period_any_of: Optional[str] = None, + fiscal_period_gt: Optional[str] = None, + fiscal_period_gte: Optional[str] = None, + fiscal_period_lt: Optional[str] = None, + fiscal_period_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga guidance. + """ + try: + results = polygon_client.list_benzinga_guidance( + date=date, + date_any_of=date_any_of, + date_gt=date_gt, + date_gte=date_gte, + date_lt=date_lt, + date_lte=date_lte, + ticker=ticker, + ticker_any_of=ticker_any_of, + ticker_gt=ticker_gt, + ticker_gte=ticker_gte, + ticker_lt=ticker_lt, + ticker_lte=ticker_lte, + positioning=positioning, + positioning_any_of=positioning_any_of, + positioning_gt=positioning_gt, + positioning_gte=positioning_gte, + positioning_lt=positioning_lt, + positioning_lte=positioning_lte, + importance=importance, + importance_any_of=importance_any_of, + importance_gt=importance_gt, + importance_gte=importance_gte, + importance_lt=importance_lt, + importance_lte=importance_lte, + last_updated=last_updated, + last_updated_any_of=last_updated_any_of, + last_updated_gt=last_updated_gt, + last_updated_gte=last_updated_gte, + last_updated_lt=last_updated_lt, + last_updated_lte=last_updated_lte, + fiscal_year=fiscal_year, + fiscal_year_any_of=fiscal_year_any_of, + fiscal_year_gt=fiscal_year_gt, + fiscal_year_gte=fiscal_year_gte, + fiscal_year_lt=fiscal_year_lt, + fiscal_year_lte=fiscal_year_lte, + fiscal_period=fiscal_period, + fiscal_period_any_of=fiscal_period_any_of, + fiscal_period_gt=fiscal_period_gt, + fiscal_period_gte=fiscal_period_gte, + fiscal_period_lt=fiscal_period_lt, + fiscal_period_lte=fiscal_period_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_news( + published: Optional[str] = None, + published_any_of: Optional[str] = None, + published_gt: Optional[str] = None, + published_gte: Optional[str] = None, + published_lt: Optional[str] = None, + published_lte: Optional[str] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + tickers: Optional[str] = None, + tickers_all_of: Optional[str] = None, + tickers_any_of: Optional[str] = None, + channels: Optional[str] = None, + channels_all_of: Optional[str] = None, + channels_any_of: Optional[str] = None, + tags: Optional[str] = None, + tags_all_of: Optional[str] = None, + tags_any_of: Optional[str] = None, + author: Optional[str] = None, + author_any_of: Optional[str] = None, + author_gt: Optional[str] = None, + author_gte: Optional[str] = None, + author_lt: Optional[str] = None, + author_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga news. + """ + try: + results = polygon_client.list_benzinga_news( + published=published, + published_any_of=published_any_of, + published_gt=published_gt, + published_gte=published_gte, + published_lt=published_lt, + published_lte=published_lte, + last_updated=last_updated, + last_updated_any_of=last_updated_any_of, + last_updated_gt=last_updated_gt, + last_updated_gte=last_updated_gte, + last_updated_lt=last_updated_lt, + last_updated_lte=last_updated_lte, + tickers=tickers, + tickers_all_of=tickers_all_of, + tickers_any_of=tickers_any_of, + channels=channels, + channels_all_of=channels_all_of, + channels_any_of=channels_any_of, + tags=tags, + tags_all_of=tags_all_of, + tags_any_of=tags_any_of, + author=author, + author_any_of=author_any_of, + author_gt=author_gt, + author_gte=author_gte, + author_lt=author_lt, + author_lte=author_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + +@poly_mcp.tool() +async def list_benzinga_ratings( + date: Optional[Union[str, date]] = None, + date_any_of: Optional[str] = None, + date_gt: Optional[Union[str, date]] = None, + date_gte: Optional[Union[str, date]] = None, + date_lt: Optional[Union[str, date]] = None, + date_lte: Optional[Union[str, date]] = None, + ticker: Optional[str] = None, + ticker_any_of: Optional[str] = None, + ticker_gt: Optional[str] = None, + ticker_gte: Optional[str] = None, + ticker_lt: Optional[str] = None, + ticker_lte: Optional[str] = None, + importance: Optional[int] = None, + importance_any_of: Optional[str] = None, + importance_gt: Optional[int] = None, + importance_gte: Optional[int] = None, + importance_lt: Optional[int] = None, + importance_lte: Optional[int] = None, + last_updated: Optional[str] = None, + last_updated_any_of: Optional[str] = None, + last_updated_gt: Optional[str] = None, + last_updated_gte: Optional[str] = None, + last_updated_lt: Optional[str] = None, + last_updated_lte: Optional[str] = None, + rating_action: Optional[str] = None, + rating_action_any_of: Optional[str] = None, + rating_action_gt: Optional[str] = None, + rating_action_gte: Optional[str] = None, + rating_action_lt: Optional[str] = None, + rating_action_lte: Optional[str] = None, + price_target_action: Optional[str] = None, + price_target_action_any_of: Optional[str] = None, + price_target_action_gt: Optional[str] = None, + price_target_action_gte: Optional[str] = None, + price_target_action_lt: Optional[str] = None, + price_target_action_lte: Optional[str] = None, + benzinga_id: Optional[str] = None, + benzinga_id_any_of: Optional[str] = None, + benzinga_id_gt: Optional[str] = None, + benzinga_id_gte: Optional[str] = None, + benzinga_id_lt: Optional[str] = None, + benzinga_id_lte: Optional[str] = None, + benzinga_analyst_id: Optional[str] = None, + benzinga_analyst_id_any_of: Optional[str] = None, + benzinga_analyst_id_gt: Optional[str] = None, + benzinga_analyst_id_gte: Optional[str] = None, + benzinga_analyst_id_lt: Optional[str] = None, + benzinga_analyst_id_lte: Optional[str] = None, + benzinga_firm_id: Optional[str] = None, + benzinga_firm_id_any_of: Optional[str] = None, + benzinga_firm_id_gt: Optional[str] = None, + benzinga_firm_id_gte: Optional[str] = None, + benzinga_firm_id_lt: Optional[str] = None, + benzinga_firm_id_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """ + List Benzinga ratings. + """ + try: + results = polygon_client.list_benzinga_ratings( + date=date, + date_any_of=date_any_of, + date_gt=date_gt, + date_gte=date_gte, + date_lt=date_lt, + date_lte=date_lte, + ticker=ticker, + ticker_any_of=ticker_any_of, + ticker_gt=ticker_gt, + ticker_gte=ticker_gte, + ticker_lt=ticker_lt, + ticker_lte=ticker_lte, + importance=importance, + importance_any_of=importance_any_of, + importance_gt=importance_gt, + importance_gte=importance_gte, + importance_lt=importance_lt, + importance_lte=importance_lte, + last_updated=last_updated, + last_updated_any_of=last_updated_any_of, + last_updated_gt=last_updated_gt, + last_updated_gte=last_updated_gte, + last_updated_lt=last_updated_lt, + last_updated_lte=last_updated_lte, + rating_action=rating_action, + rating_action_any_of=rating_action_any_of, + rating_action_gt=rating_action_gt, + rating_action_gte=rating_action_gte, + rating_action_lt=rating_action_lt, + rating_action_lte=rating_action_lte, + price_target_action=price_target_action, + price_target_action_any_of=price_target_action_any_of, + price_target_action_gt=price_target_action_gt, + price_target_action_gte=price_target_action_gte, + price_target_action_lt=price_target_action_lt, + price_target_action_lte=price_target_action_lte, + benzinga_id=benzinga_id, + benzinga_id_any_of=benzinga_id_any_of, + benzinga_id_gt=benzinga_id_gt, + benzinga_id_gte=benzinga_id_gte, + benzinga_id_lt=benzinga_id_lt, + benzinga_id_lte=benzinga_id_lte, + benzinga_analyst_id=benzinga_analyst_id, + benzinga_analyst_id_any_of=benzinga_analyst_id_any_of, + benzinga_analyst_id_gt=benzinga_analyst_id_gt, + benzinga_analyst_id_gte=benzinga_analyst_id_gte, + benzinga_analyst_id_lt=benzinga_analyst_id_lt, + benzinga_analyst_id_lte=benzinga_analyst_id_lte, + benzinga_firm_id=benzinga_firm_id, + benzinga_firm_id_any_of=benzinga_firm_id_any_of, + benzinga_firm_id_gt=benzinga_firm_id_gt, + benzinga_firm_id_gte=benzinga_firm_id_gte, + benzinga_firm_id_lt=benzinga_firm_id_lt, + benzinga_firm_id_lte=benzinga_firm_id_lte, + limit=limit, + sort=sort, + params=params, + raw=True, + ) + + data_str = results.data.decode("utf-8") + return json.loads(data_str) + except Exception as e: + return {"error": str(e)} + + # Directly expose the MCP server object # It will be run from entrypoint.py diff --git a/uv.lock b/uv.lock index e2052d2..7d3ce2c 100644 --- a/uv.lock +++ b/uv.lock @@ -178,7 +178,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "mcp", extras = ["cli"], specifier = ">=1.9.3" }, - { name = "polygon-api-client", specifier = ">=1.14.5" }, + { name = "polygon-api-client", specifier = ">=1.15.3" }, ] [package.metadata.requires-dev] @@ -195,16 +195,16 @@ wheels = [ [[package]] name = "polygon-api-client" -version = "1.14.6" +version = "1.15.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "urllib3" }, { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/ba/9a20534f09c029127b2fe8dafc25e2765a605bba22b20b471b0e5ae569e4/polygon_api_client-1.14.6.tar.gz", hash = "sha256:6ed518a43db05de544b5a86b8d1aed8ab390df0c59b8e49f656b6a638ce3c1ce", size = 30957 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/87/da00179018cbbe5201e835b1b08b1006bccbac23d29c07db77fd93832447/polygon_api_client-1.15.3.tar.gz", hash = "sha256:6f802bf845cce6004fc2f7921b6fe2e7941caf6539216033415cbea2194f8a48", size = 37976 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/42/afb74666ee99195a7a0a18cd51dcc834f35078b857133b1e2155431ad305/polygon_api_client-1.14.6-py3-none-any.whl", hash = "sha256:7f29d028f712da3a31ca1283a47e4ccd6f145bd355f35f33f638d8675f9d22a9", size = 44201 }, + { url = "https://files.pythonhosted.org/packages/d5/b2/4a51232a3017dce2a74cd3e9bda16d118a95cc20e7c75969710ca9839dc0/polygon_api_client-1.15.3-py3-none-any.whl", hash = "sha256:a6a3b36cfb4a021c4fd89d782e5950d2e6b20554afb463c1217f3cc138c0d2d3", size = 54553 }, ] [[package]]