Skip to main content
Glama

EDGAR + Entity: US Company Research

Normalized financials (XBRL)

get_financials
Read-onlyIdempotent

Key financial metrics normalized from SEC XBRL companyfacts, one row per FISCAL period (fy/fp are the company's fiscal year and quarter, e.g. Microsoft FY2024 = 2023-07-01..2024-06-30; fiscal_year_end gives the MM-DD; deduped; as-filed values from the filing that reported the period). Metrics: revenue, gross_profit, operating_income, net_income, eps_basic, eps_diluted, operating_cash_flow, capex, total_assets, total_liabilities, stockholders_equity, cash, long_term_debt, shares_outstanding, free_cash_flow (derived); aliases accepted in metrics: revenues→revenue, sales→revenue, net_sales→revenue, total_revenue→revenue, turnover→revenue, net_profit→net_income, profit→net_income, earnings→net_income, net_earnings→net_income, eps→eps_diluted, diluted_eps→eps_diluted, basic_eps→eps_basic, operating_profit→operating_income, cfo→operating_cash_flow, cash_from_operations→operating_cash_flow, capital_expenditures→capex, fcf→free_cash_flow, assets→total_assets, liabilities→total_liabilities, equity→stockholders_equity, shareholders_equity→stockholders_equity, cash_and_equivalents→cash, debt→long_term_debt, shares→shares_outstanding. Each metric tries common tags in order (revenue: Revenues, RevenueFromContractWithCustomerExcludingAssessedTax, SalesRevenueNet, ...) and tags_used reports which was used. period_type 'quarterly' returns 3-month values (cash-flow quarters derived from YTD; Q4 derived as FY minus 9M). If a company has only 10-Q data (e.g. a recent IPO), annual results are empty and hint says to use 'quarterly'. Values are raw (e.g. 391035000000 = $391.0B).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "company": "<company>"
    },
    "name": "get_financials"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of most recent periods
companyYesTicker (AAPL), CIK (320193 or 0000320193), or company name. Names must resolve unambiguously; use search_company first if unsure.
metricsNoSubset of metrics to return (default all); aliases such as sales, eps, fcf, equity are accepted
period_typeNoannual

Output Schema

NameRequiredDescriptionDefault
cikYes
nameNo
notesNo
periodsYes
currencyNo
tags_usedNo
source_urlNo
period_typeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / metrics / description
      Previous value: -"Subset of metrics to return (default all)"New value: +"Subset of metrics to return (default all); aliases such as sales, eps, fcf, equity are accepted"
    • changedInput schema / properties / metrics / items / enum
      Previous value: -[
      -  "free_cash_flow",
      -  "revenue",
      -  "gross_profit",
      -  "operating_income",
      -  "net_income",
      -  "eps_basic",
      -  "eps_diluted",
      -  "operating_cash_flow",
      -  "capex",
      -  "total_assets",
      -  "total_liabilities",
      -  "stockholders_equity",
      -  "cash",
      -  "long_term_debt",
      -  "shares_outstanding"
      -]New value: +[
      +  "free_cash_flow",
      +  "revenue",
      +  "gross_profit",
      +  "operating_income",
      +  "net_income",
      +  "eps_basic",
      +  "eps_diluted",
      +  "operating_cash_flow",
      +  "capex",
      +  "total_assets",
      +  "total_liabilities",
      +  "stockholders_equity",
      +  "cash",
      +  "long_term_debt",
      +  "shares_outstanding",
      +  "revenues",
      +  "sales",
      +  "net_sales",
      +  "total_revenue",
      +  "turnover",
      +  "net_profit",
      +  "profit",
      +  "earnings",
      +  "net_earnings",
      +  "eps",
      +  "diluted_eps",
      +  "basic_eps",
      +  "operating_profit",
      +  "cfo",
      +  "cash_from_operations",
      +  "capital_expenditures",
      +  "fcf",
      +  "assets",
      +  "liabilities",
      +  "equity",
      +  "shareholders_equity",
      +  "cash_and_equivalents",
      +  "debt",
      +  "shares"
      +]
    • addedInput schema / properties / metrics / maxItems
      Added value: +20
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "cik": {
      +      "type": "string"
      +    },
      +    "currency": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "period_type": {
      +      "type": "string"
      +    },
      +    "periods": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "accession": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "filed": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "form": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "fp": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "fy": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "period_end": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "period_start": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "source_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tags_used": {
      +      "additionalProperties": {},
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "cik",
      +    "period_type",
      +    "periods"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial behavioral context beyond them: values are as-filed and non-scaled (391035000000 = $391.0B), rows are deduped, tags_used reports which tag was selected, quarterly cash-flow figures are derived from YTD and Q4 is FY minus 9M, and empty-annual cases emit a hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and fiscal-period semantics are front-loaded and earn their place, but the exhaustive 20-entry alias list largely restates the schema enum and bloats a single dense paragraph. It is information-dense but not well structured for scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with an output schema and full annotations, nothing material is missing: period semantics, derived metrics, tag fallback behavior, quarterly derivation, and the empty-annual edge case are all covered, so an agent can call it correctly without further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 75% schema coverage the baseline would be 3, but the description meaningfully extends it: it explains the fiscal-year semantics of fy/fp (Microsoft FY2024 = 2023-07-01..2024-06-30), the fiscal_year_end field, the alias-to-canonical metric mapping (sales→revenue, fcf→free_cash_flow), and what 'quarterly' actually computes. These are meanings an agent cannot infer from the enum alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (key financial metrics normalized from SEC XBRL companyfacts) and its exact granularity (one row per fiscal period), so an agent knows precisely what comes back. It is clearly distinct from siblings like get_xbrl_concept (raw concepts) and compare_companies (multi-company).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete selection guidance for period_type, including the fallback case where a company has only 10-Q data and annual results come back empty, plus a hint field telling the caller to switch to 'quarterly'. It stops short of explicitly contrasting itself with siblings such as get_xbrl_concept or compare_companies, so there is no full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.