MCP.so
Sign In
D

Defeatbeta Api

@defeat-beta

About Defeatbeta Api

No overview available yet

Basic information

Category

Developer Tools

Transports

stdio

Publisher

defeat-beta

Submitted by

博文 郑

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "defeatbeta-api": {
      "command": "uvx",
      "args": [
        "--refresh",
        "git+https://github.com/defeat-beta/defeatbeta-api.git#subdirectory=mcp"
      ]
    }
  }
}

Tools

58

Get the latest data update date of the defeatbeta dataset. This is the most recent date for which historical price data is available in the defeatbeta dataset (typically the last date when the entire dataset was refreshed with new trading data). This is NOT the real-time server date, and NOT necessarily today's date. All available stock prices are up to and including trading days on or before this data date. Use this date as the reference point ("today" in data terms) when handling relative time queries such as "last 10 days", "past month", "year-to-date", etc. Returns: A dictionary containing the latest data date in YYYY-MM-DD format.

Retrieve the basic company profile information for a given stock symbol. Args: symbol (str): The stock ticker symbol, e.g., "TSLA" or "tsla" (will be automatically converted to uppercase). Returns: dict: A dictionary containing the company's basic profile information. Common keys include: - symbol: Stock ticker symbol - address: Company headquarters address - city: City where the company is headquartered - country: Country of headquarters - phone: Company phone number - zip: Postal/ZIP code - industry: Industry classification - sector: Sector classification - long_business_summary: Detailed business description/summary - full_time_employees: Number of full-time employees - web_site: Official company website URL - report_date: Date of the data report or last update Example (for TSLA): { 'symbol': 'TSLA', 'address': '1 Tesla Road', 'city': 'Austin', 'country': 'United States', 'phone': '512 516 8177', 'zip': '78725', 'industry': 'Auto Manufacturers', 'sector': 'Consumer Cyclical', 'long_business_summary': 'Tesla, Inc. designs, develops, manufactures, l...', 'full_time_employees': 125665, 'web_site': 'https://www.tesla.com', 'report_date': '2025-04-12' } Notes: - The underlying data is returned as a single-row pandas DataFrame from the ticker details. - The function converts the first row to a dictionary for easier handling. - If no data is available (empty DataFrame), an empty dictionary is returned.

Retrieve historical stock price data for the specified symbol and optional date range. Args: symbol: Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date: Optional start date in YYYY-MM-DD format (e.g., "2015-12-30"). If None, data starts from the earliest available date. end_date: Optional end date in YYYY-MM-DD format (e.g., "2025-12-24"). If None, data goes up to the most recent trading day. Returns: A dictionary with: - symbol - date_range (actual dates covered) - rows_returned (number of rows in this response) - truncated (True if data was limited by MAX_ROWS) - latest_close - data (list of daily records) Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve key executive officers and senior management information for a given publicly traded company. This tool returns a list of company officers, including executives and senior leaders, along with their titles, age, compensation, and equity-related information when available. Args: symbol (str): Stock ticker symbol (e.g., "TSLA", "AAPL"). Case-insensitive and will be converted to uppercase. Returns: dict: A dictionary with the following structure: { "symbol": "TSLA", "rows_returned": 10, "officers": [ { "name": "Mr. Elon R. Musk", "title": "Co-Founder, Technoking of Tesla, CEO & Director", "age": 53, "born": 1971, "pay": null, "exercised": 0, "unexercised": 0 }, ... ] } Notes: - Data is sourced from the defeatbeta dataset via `ticker.officers()`. - Missing or unavailable numeric values are returned as `null`. - Equity-related fields: - exercised: Number of stock options exercised - unexercised: Number of stock options unexercised - The list may include both executive officers and senior managers, depending on company disclosure. - If no officer data is available, an empty list is returned.

Retrieve a list of available earnings call transcripts for a company. This tool returns metadata for all available earnings call transcripts, including fiscal year, fiscal quarter, and report date. It does NOT return the full transcript content. Use this tool to: - Discover which earnings calls are available - Identify the most recent fiscal quarter - Select a specific period for detailed transcript retrieval Args: symbol (str): Stock ticker symbol (e.g., "TSLA", "AAPL"). Case-insensitive and will be converted to uppercase. Returns: dict: A dictionary with the following structure: { "symbol": "TSLA", "rows_returned": 25, "transcripts": [ { "fiscal_year": 2024, "fiscal_quarter": 4, "report_date": "2025-01-29" }, ... ] } Important notes on fiscal periods: - "fiscal_year" and "fiscal_quarter" follow the company's fiscal calendar, which may differ from the calendar year and calendar quarters. - Fiscal periods are determined by the company's accounting calendar, not by the current date. Example: A company may report earnings in December 2025 that are labeled as: fiscal_year = 2026 fiscal_quarter = 2 This means the earnings belong to the company's FY 2026 Q2, even though the calendar year is still 2025. Notes: - This tool provides metadata only. - Use `get_earning_call_transcript` to retrieve the full transcript for a specific fiscal year and quarter.

Retrieve the full earnings call transcript for a specific fiscal period. This tool returns the complete transcript content for a given fiscal year and quarter, including speaker attribution and paragraph order. Args: symbol (str): Stock ticker symbol (e.g., "TSLA"). fiscal_year (int): Fiscal year (e.g., 2024). fiscal_quarter (int): Fiscal quarter (1–4). Returns: dict: A dictionary with the following structure: { "symbol": "TSLA", "fiscal_year": 2024, "fiscal_quarter": 4, "paragraphs": [ { "paragraph_number": 1, "speaker": "Operator", "content": "Good afternoon, everyone and welcome to..." }, ... ] } Important notes on fiscal periods: - "fiscal_year" and "fiscal_quarter" follow the company's fiscal calendar, which may differ from the calendar year and calendar quarters. - Fiscal periods are determined by the company's accounting calendar, not by the current date. Example: A company may report earnings in December 2025 that are labeled as: fiscal_year = 2026 fiscal_quarter = 2 This means the earnings belong to the company's FY 2026 Q2, even though the calendar year is still 2025. Notes: - Transcript content can be large and may consume many tokens. - Intended for summarization, Q&A, or qualitative analysis of management commentary.

Retrieve historical news data for the specified symbol and optional date range, including full content. Args: symbol (str): Stock ticker symbol (e.g., "AMD", "AAPL", "TSLA"). Case-insensitive; will be converted to uppercase. start_date (str, optional): Filter news on or after this date (YYYY-MM-DD). end_date (str, optional): Filter news on or before this date (YYYY-MM-DD). max_rows (int, optional): Maximum number of news items to return (default 50). Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool limits the maximum number of news items returned using the `max_rows` parameter (default: 50). When the number of news articles matching the requested date range exceeds `max_rows`, only the most recent news items are returned, and "truncated": true is set in the response. If you need more or older news: - Increase the `max_rows` value (with caution) - Or make multiple calls with narrower date ranges (e.g., split by week or month) Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions. Returns: dict: { "symbol": str, "date_range": str, # actual date range covered "rows_returned": int, "truncated": bool, "news": [ { "uuid": str, "report_date": str, "title": str, "publisher": str, "type": str, "link": str, "related_symbols": list[str], "paragraphs": [ { "paragraph_number": int, "paragraph": str, "highlight": str # optional }, ... ] }, ... ] }

Retrieve the quarterly income statement for a given stock symbol. This tool returns income statement data structured by quarter, with each quarter represented as a record containing standardized income statement line items. Returns: dict: { "currency": "USD", "period_type": "quarterly", "periods": list[str], # e.g. ["2024-12-31", "2024-09-30", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # quarter end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve the annual income statement for a given stock symbol. This tool returns income statement data structured by year, with each year represented as a record containing standardized income statement line items. Returns: dict: { "currency": "USD", "period_type": "annual", "periods": list[str], # e.g. ["2024-12-31", "2023-12-31", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # year-end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve the quarterly balance sheet for a given stock symbol. This tool returns balance sheet data structured by quarter, with each quarter represented as a record containing standardized balance sheet line items. Returns: dict: { "currency": "USD", "period_type": "quarterly", "periods": list[str], # e.g. ["2024-12-31", "2024-09-30", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # quarter end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve the annual balance sheet for a given stock symbol. This tool returns balance sheet data structured by year, with each year represented as a record containing standardized balance sheet line items. Returns: dict: { "currency": "USD", "period_type": "annual", "periods": list[str], # e.g. ["2024-12-31", "2023-12-31", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # year-end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve the quarterly cash flow for a given stock symbol. This tool returns cash flow data structured by quarter, with each quarter represented as a record containing standardized cash flow line items. Returns: dict: { "currency": "USD", "period_type": "quarterly", "periods": list[str], # e.g. ["2024-12-31", "2024-09-30", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # quarter end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve the annual cash flow for a given stock symbol. This tool returns cash flow data structured by year, with each year represented as a record containing standardized cash flow line items. Returns: dict: { "currency": "USD", "period_type": "annual", "periods": list[str], # e.g. ["2024-12-31", "2023-12-31", ...] "rows_returned": int, # number of periods "statement": [ { "period": str, # year-end date "items": { "<breakdown_name>": float | None, ... } }, ... ] }

Retrieve quarterly revenue breakdown by business segment for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "period_type": "quarterly", "periods": list[str], # e.g. ["2024-09-30", "2024-12-31", ...] "segments": list[str], # e.g. ["Online Marketing Services", "Transaction Services"] "rows_returned": int, "data": [ { "period": str, "revenue": { "<segment>": float | None, ... }, "currency": "usd" }, ... ] }

Retrieve quarterly revenue breakdown by geography for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "period_type": "quarterly", "periods": list[str], # e.g. ["2024-09-30", "2024-12-31", ...] "regions": list[str], # e.g. ["China", "United States", "Other"] "rows_returned": int, "data": [ { "period": str, "revenue": { "<region>": float | None, ... }, "currency": "usd" }, ... ] }

Retrieve quarterly gross margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "gross_profit": decimal | None, "total_revenue": decimal | None, "gross_margin": decimal | None }, ... ] }

Retrieve annual gross margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "annual", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "gross_profit": decimal | None, "total_revenue": decimal | None, "gross_margin": decimal | None }, ... ] }

Retrieve quarterly operating margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "operating_income": decimal | None, "total_revenue": decimal | None, "operating_margin": decimal | None }, ... ] }

Retrieve annual operating margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "annual", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "operating_income": decimal | None, "total_revenue": decimal | None, "operating_margin": decimal | None }, ... ] }

Retrieve quarterly net margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "net_income_common_stockholders": decimal | None, "total_revenue": decimal | None, "net_margin": decimal | None }, ... ] }

Retrieve annual net margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "annual", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "net_income_common_stockholders": decimal | None, "total_revenue": decimal | None, "net_margin": decimal | None }, ... ] }

Retrieve quarterly ebitda margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "ebitda": decimal | None, "total_revenue": decimal | None, "ebitda_margin": decimal | None }, ... ] }

Retrieve annual ebitda margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "annual", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "ebitda": decimal | None, "total_revenue": decimal | None, "ebitda_margin": decimal | None }, ... ] }

Retrieve quarterly fcf margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "free_cash_flow": decimal | None, "total_revenue": decimal | None, "fcf_margin": decimal | None }, ... ] }

Retrieve annual fcf margin data for a given stock symbol. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "period_type": "annual", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "free_cash_flow": decimal | None, "total_revenue": decimal | None, "fcf_margin": decimal | None }, ... ] }

Retrieve quarterly gross margin for the industry that the given stock symbol belongs to. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "industry": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "total_gross_profit": float | None, "total_revenue": float | None, "industry_gross_margin": float | None }, ... ] }

Retrieve quarterly net margin for the industry that the given stock symbol belongs to. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "industry": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "total_net_income": float | None, "total_revenue": float | None, "industry_net_margin": float | None }, ... ] }

Retrieve quarterly ebitda margin for the industry that the given stock symbol belongs to. Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "industry": str, "currency": "USD", "period_type": "quarterly", "periods": list[str], # report dates (oldest -> newest) "rows_returned": int, "data": [ { "period": str, "total_ebitda": float | None, "total_revenue": float | None, "industry_ebitda_margin": float | None }, ... ] }

Retrieve quarterly EPS and trailing twelve months (TTM) EPS for a given stock symbol. This function returns a time-series dataset where each record represents a fiscal quarter, including: - EPS for the quarter - TTM EPS calculated up to that quarter Args: symbol (str): Stock ticker symbol (e.g. "TSLA", "AMD", "NVDA"). Returns: dict: { "symbol": str, "currency": "USD", "rows_returned": int, "data": [ { "report_date": str, # e.g. "2024-12-31" "eps": decimal | None, # quarterly EPS "ttm_eps": decimal | None # Trailing Twelve Months EPS }, ... ] }

Retrieve historical TTM P/E (price-to-earnings) ratio for a given stock symbol. Args: symbol: Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date: Optional start date in YYYY-MM-DD format (e.g., "2015-12-30"). If None, data starts from the earliest available date. end_date: Optional end date in YYYY-MM-DD format (e.g., "2025-12-24"). If None, data goes up to the most recent trading day. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Date of stock price observation - eps_report_date (str): # The fiscal quarter-end date of the latest earnings used to compute TTM EPS - close_price (decimal): # Stock closing price on report_date - ttm_diluted_eps (decimal | None): # Most recent four-quarter Diluted EPS - ttm_pe (decimal | None): # P/E ratio = close_price / ttm_diluted_eps } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical market capitalization data for a given stock symbol. Args: symbol: Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date: Optional start date in YYYY-MM-DD format (e.g., "2015-12-30"). If None, data starts from the earliest available date. end_date: Optional end date in YYYY-MM-DD format (e.g., "2025-12-24"). If None, data goes up to the most recent trading day. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Date of stock price observation - shares_report_date (str): # Reporting date of shares outstanding - close_price (decimal): # Stock closing price on report_date - shares_outstanding (decimal): # Total shares outstanding as of shares_report_date - market_capitalization (decimal): # Market cap = close_price × shares_outstanding } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical Price-to-Sales (P/S) ratio for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent trading day. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Date of stock price observation - fiscal_quarter (str): # Fiscal quarter-end date of the latest financial report used to compute TTM revenue. - market_capitalization (decimal): # Total equity market value on report_date. - ttm_revenue_usd (decimal): # Trailing Twelve Months (TTM) revenue in USD = Trailing Twelve Months (TTM) revenue / Exchange Rate - ps_ratio (decimal): # ps_ratio = market_capitalization / ttm_revenue_usd } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical Price-to-Book (P/B) ratio for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent trading day. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Date of stock price observation - fiscal_quarter (str): # Fiscal quarter-end date of the latest financial report used to compute TTM revenue. - market_capitalization (decimal): # Total equity market value on report_date. - book_value_of_equity_usd (decimal): # Book value of equity in USD = Stockholders' Equity / Exchange Rate - pb_ratio (decimal): # pb_ratio = market_capitalization / book_value_of_equity_usd } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical Price-to-Earnings Growth (PEG) ratios for a given stock symbol, based on both earnings growth and revenue growth. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent trading day. Returns: dict: { "symbol": str, "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Date of stock price observation - fiscal_quarter (str): # Fiscal quarter-end date of the latest financial report - ttm_pe (decimal | None): # Trailing Twelve Months P/E ratio, based on diluted EPS - eps_yoy_growth (decimal | None): # Year-over-year growth rate of TTM diluted EPS - peg_ratio_by_eps (decimal | None): # PEG based on earnings growth = ttm_pe / eps_yoy_growth - revenue_yoy_growth (decimal | None): # Year-over-year growth rate of TTM revenue - peg_ratio_by_revenue (decimal | None): # PEG based on revenue growth = ttm_pe / revenue_yoy_growth } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical Return on Equity (ROE) data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # ROE is reported on quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - net_income_common_stockholders (decimal): # Net income attributable to common stockholders - beginning_stockholders_equity (decimal): # Stockholders' equity at the beginning of the period (i.e., prior period ending equity) - ending_stockholders_equity (decimal): # Stockholders' equity at the end of the current period - avg_equity (decimal): # Average stockholders' equity = (beginning_stockholders_equity + ending_stockholders_equity) / 2 - roe (decimal): # Return on Equity = net_income_common_stockholders / avg_equity }

Retrieve historical Return on Assert (ROA) data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # ROA is reported on quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - net_income_common_stockholders (decimal): # Net income attributable to common stockholders - beginning_total_assets (decimal): # Total assets at the beginning of the quarter (i.e., total assets from the prior quarter). - ending_total_assets (decimal): # Total assets at the end of the current quarter. - avg_assets (decimal): # Average total assets = (beginning_total_assets + ending_total_assets) / 2 - roa (decimal): # Return on Assert = net_income_common_stockholders / avg_assets }

Retrieve historical Return on Invested Capital (ROIC) data for a given stock symbol. [!WARN] ROIC is generally NOT applicable to banks and other financial institutions, due to their fundamentally different balance sheet structures. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # ROIC is reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - ebit (decimal): # Earnings Before Interest and Taxes (operating income) - tax_rate_for_calcs (decimal): # Effective tax rate used for ROIC calculation - nopat (decimal): # Net Operating Profit After Tax = ebit * (1 - tax_rate_for_calcs) - beginning_invested_capital (decimal): # Invested capital at the beginning of the quarter (i.e., invested capital from the prior quarter) - ending_invested_capital (decimal): # Invested capital at the end of the current quarter - avg_invested_capital (decimal): # Average invested capital = (beginning_invested_capital + ending_invested_capital) / 2 - roic (decimal): # Return on Invested Capital = nopat / avg_invested_capital }

Retrieve historical Equity Multiplier data for a given stock symbol. [!WARN] Equity Multiplier does not apply to banks or other financial institutions, as their balance sheet structures and leverage dynamics are fundamentally different from non-financial companies. In DuPont Analysis, the Equity Multiplier can be derived from ROE and ROA: Equity Multiplier = ROE / ROA Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "period_type": "quarterly", # Equity Multiplier is reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - roe (decimal): # Return on Equity (ROE) - roa (decimal): # Return on Assets (ROA) - equity_multiplier (decimal): # Financial leverage measure }

Retrieve historical Assert Turnover data for a given stock symbol. In DuPont Analysis, the Assert Turnover can be derived from ROA and Net Margin: Assert Turnover = ROA / Net Margin Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "period_type": "quarterly", # Equity Multiplier is reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - roa (decimal): # Return on Assets (ROA) - net_margin (decimal): # Net Income Margin - asset_turnover (decimal): # Asset Turnover }

Retrieve historical industry-level TTM Price-to-Earnings (P/E) ratio for the industry to which a given stock symbol belongs. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Used to identify the corresponding industry. start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent available date. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows returned "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Observation date (YYYY-MM-DD) - industry (str): # Industry name - total_market_cap (decimal): # Sum of market capitalization of all companies in the industry - total_ttm_net_income (decimal): # Sum of TTM net income of all companies in the industry - industry_ttm_pe (decimal | None) # Industry TTM P/E ratio = total_market_cap / total_ttm_net_income } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical industry-level Price-to-Sales (P/S) ratio for the industry to which a given stock symbol belongs. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Used to identify the corresponding industry. start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent available date. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows returned "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Observation date (YYYY-MM-DD) - industry (str): # Industry name - total_market_cap (decimal): # Sum of market capitalization of all companies in the industry - total_ttm_revenue (decimal): # Sum of trailing twelve months (TTM) revenue of all companies - industry_ps_ratio (decimal): # Industry-level Price-to-Sales ratio = total_market_cap / total_ttm_revenue } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical industry-level Price-to-Book (P/B) ratio for the industry to which a given stock symbol belongs. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Used to identify the corresponding industry. start_date (str, optional): Start date in YYYY-MM-DD format. Filters data where report_date >= start_date. If None, data starts from the earliest available date. end_date (str, optional): End date in YYYY-MM-DD format. Filters data where report_date <= end_date. If None, data goes up to the most recent available date. Returns: dict: { "symbol": str, "currency": "USD", "date_range": str, # Actual date range returned "rows_returned": int, # Number of rows returned "truncated": bool, # True if rows were truncated due to MAX_ROWS "data": list[dict], # List of records with: - report_date (str): # Observation date (YYYY-MM-DD) - industry (str): # Industry name - total_market_cap (decimal): # Sum of market capitalization of all stocks in the industry (in USD) - total_bve (decimal): # Sum of the book value of equity of all stocks in the industry (in USD) - industry_pb_ratio (decimal): # Industry-level Price-to-Book ratio = total_market_cap / total_book_value_of_equity } Important note on data limits: To prevent responses from becoming too large for the language model to process (which can cause errors or token limit exceeded issues), this tool caps the maximum number of rows returned at 1000 (MAX_ROWS = 1000). When the requested range contains more than 1000 rows, only the most recent 1000 trading days are returned, and "truncated": true is set. If you need data further back: - Make multiple calls with different (earlier) date ranges - Or call with a narrower start_date/end_date to stay under the limit Note: Unless explicitly stated otherwise, this tool operates on data that is current up to the latest data update date returned by `get_latest_data_update_date`. Use that date as the authoritative reference point ("today") when interpreting date ranges or relative time expressions.

Retrieve historical industry-level Return on Equity (ROE) data for the industry to which a given stock symbol belongs. Args: symbol (str): Stock ticker symbol used to identify the corresponding industry, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Industry ROE is reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - industry (str): # Industry name - total_net_income_common_stockholders (decimal): # Sum of net income attributable to common stockholders across all stocks in the industry - total_avg_equity (decimal): # For each stock, compute its average shareholders' equity as avg_equity(symbol), then calculate total_avg_equity = Σ avg_equity(symbol). - industry_roe (decimal): # Industry ROE = total_net_income_common_stockholders / total_avg_equity }

Retrieve historical industry-level Return on Assets (ROA) data for the industry corresponding to a given stock symbol. Args: symbol (str): Stock ticker symbol used to identify the industry (e.g., "TSLA", "AAPL"). Case-insensitive. Returns: dict: { "symbol": str, # Input stock symbol "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Industry ROA is reported quarterly "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - industry (str): # Industry name - total_net_income_common_stockholders (decimal): # Sum of net income attributable to common stockholders across all stocks in the industry - total_avg_asserts (decimal): # For each stock, compute its average assets as avg_asserts(symbol), then calculate total_avg_asserts = Σ avg_asserts(symbol). - industry_roa (decimal): # Industry Return on Assets }

Retrieve historical industry-level Equity Multiplier data for the industry to which a given stock symbol belongs. In DuPont Analysis, the Equity Multiplier can be derived from ROE and ROA: Industry Equity Multiplier = Industry ROE / Industry ROA Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Industry metrics are reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - industry (str): # Industry name - industry_roe (decimal): # Industry Return on Equity - industry_roa (decimal): # Industry Return on Assets - industry_equity_multiplier (decimal): # Industry Equity Multiplier, derived from DuPont Analysis }

Retrieve historical industry-level Assert Turnover data for the industry to which a given stock symbol belongs. In DuPont Analysis, the Assert Turnover can be derived from ROA and Net Margin: Industry Assert Turnover = Industry ROA / Industry Net Margin Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "period_type": "quarterly", # Equity Multiplier is reported on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - industry(str) # Industry name - industry_roa (decimal): # Return on Assets (ROA) - industry_net_margin (decimal): # Net Income Margin - industry_asset_turnover (decimal): # Asset Turnover }

Retrieve historical quarterly Year-over-Year (YoY) revenue growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Revenue growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - revenue (decimal | None): # Revenue for the current quarter - prev_year_revenue (decimal | None): # Revenue from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year revenue growth rate }

Retrieve historical annual Year-over-Year (YoY) revenue growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "annual", # Revenue growth is measured on a annual basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - revenue (decimal | None): # Revenue for the current quarter - prev_year_revenue (decimal | None): # Revenue from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year revenue growth rate }

Retrieve historical quarterly Year-over-Year (YoY) operating income growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Operating income growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - operating_income (decimal | None): # Operating income for the current quarter - prev_year_operating_income (decimal | None): # Operating income from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Operating income growth rate }

Retrieve historical annual Year-over-Year (YoY) operating income growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "annual", # Operating income growth is measured on a annual basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - operating_income (decimal | None): # Operating income for the current quarter - prev_year_operating_income (decimal | None): # Operating income from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Operating income growth rate }

Retrieve historical quarterly Year-over-Year (YoY) EBITDA growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # EBITDA growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - ebitda (decimal | None): # EBITDA for the current quarter - prev_year_ebitda (decimal | None): # EBITDA from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year EBITDA growth rate }

Retrieve historical annual Year-over-Year (YoY) EBITDA growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "annual", # EBITDA growth is measured on a annual basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - ebitda (decimal | None): # EBITDA for the current quarter - prev_year_ebitda (decimal | None): # EBITDA from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year EBITDA growth rate }

Retrieve historical quarterly Year-over-Year (YoY) Net Income growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Net Income growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - net_income_common_stockholders (decimal | None): # Net Income for the current quarter - prev_year_net_income_common_stockholders (decimal | None): # Net Income from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Net Income growth rate }

Retrieve historical annual Year-over-Year (YoY) Net Income growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "annual", # Net Income growth is measured on a annual basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - net_income_common_stockholders (decimal | None): # Net Income for the current quarter - prev_year_net_income_common_stockholders (decimal | None): # Net Income from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Net Income growth rate }

Retrieve historical quarterly Year-over-Year (YoY) Free cash flow growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Free cash flow growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - free_cash_flow (decimal | None): # Free cash flow for the current quarter - prev_year_free_cash_flow (decimal | None): # Free cash flow from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Free cash flow growth rate }

Retrieve historical annual Year-over-Year (YoY) Free cash flow growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "annual", # Free cash flow growth is measured on a annual basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - free_cash_flow (decimal | None): # Free cash flow for the current quarter - prev_year_free_cash_flow (decimal | None): # Free cash flow from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Free cash flow growth rate }

Retrieve historical quarterly Year-over-Year (YoY) Diluted EPS growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # Diluted EPS growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - diluted_eps (decimal | None): # Diluted EPS for the current quarter - prev_year_diluted_eps (decimal | None): # Diluted EPS from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year Diluted EPS growth rate }

Retrieve historical quarterly Year-over-Year (YoY) TTM Diluted EPS growth data for a given stock symbol. Args: symbol (str): Stock ticker symbol, e.g., "TSLA", "AAPL" (case-insensitive). Returns: dict: { "symbol": str, "currency": str, # Reporting currency (e.g., "USD") "period_type": "quarterly", # TTM Diluted EPS growth is measured on a quarterly basis "periods": list[str], # List of fiscal period end dates "rows_returned": int, # Number of periods returned "data": list[dict], # List of records with: - period (str): # Fiscal period end date - ttm_diluted_eps (decimal | None): # TTM Diluted EPS for the current quarter - prev_year_ttm_diluted_eps (decimal | None): # TTM Diluted EPS from the same fiscal quarter in the prior year - yoy_growth (decimal | None): # Year-over-Year TTM Diluted EPS growth rate }

Overview

What is Defeatbeta Api?

Defeatbeta Api is an MCP server that provides AI agents with access to a high-performance, open-source alternative to Yahoo Finance’s market data APIs. It delivers reliable stock price data, financial statements, extended financial metrics (TTM EPS, PE, market cap, ratios, ROE, ROIC, etc.), earnings call transcripts, and stock news—all hosted on Hugging Face’s yahoo-finance-data dataset and powered by DuckDB’s OLAP engine.

How to use Defeatbeta Api?

Install the defeatbeta-api Python package from PyPI using pip. Then configure the MCP server by following the instructions in the MCP implementation guide (located at mcp/README.md in the repository). On Windows, a WSL or Docker environment is required due to dependencies on cache_httpfs.

Key features of Defeatbeta Api

  • Reliable, scrape‑free market data via Hugging Face datasets
  • Sub‑second analytical queries with full SQL support (DuckDB)
  • Extended financial metrics (TTM EPS, PE, market cap, ratios, ROE, ROIC, etc.)
  • LLM‑powered analysis of earnings transcripts and quarterly forecasts
  • Built‑in MCP server for AI‑agent integration
  • Covers historical prices, financial statements, news, and revenue breakdowns

Use cases of Defeatbeta Api

  • AI agents performing stock valuation and fundamental analysis
  • Automated financial reporting and dashboard generation
  • Backtesting trading strategies using historical price and ratio data
  • Analyzing earnings call transcripts with large language models
  • Building custom quantitative research workflows without scraping

FAQ from Defeatbeta Api

What data does the MCP server provide?

It provides stock price data, quarterly/annual financial statements, TTM EPS, TTM PE, market cap, P/S, P/B, P/E, PEG, ROE, ROIC, WACC, ROA, equity multiplier, asset turnover, earnings call transcripts, and stock news.

What are the system requirements?

Python 3.9 or later is required. On Windows, a WSL or Docker environment is necessary because the underlying cache_httpfs extension does not support Windows natively.

How is the data hosted and accessed?

All data is sourced from the Hugging Face dataset yahoo-finance-data and queried via DuckDB’s OLAP engine with the cache_httpfs extension, eliminating the need for web scraping and avoiding rate limits.

Does the MCP server support multiple transport protocols?

The README describes the MCP Server implementation as providing AI access through MCP (Model Context Protocol). Specific transport details (stdio/SSE/WebSocket) are not listed.

What is the difference from Yahoo Finance?

Defeatbeta Api is an open-source alternative that eliminates scraping issues and provides higher reliability, extended financial metrics, and built-in LLM analysis capabilities.

Comments

More Developer Tools MCP servers