Skip to main content
Glama

Get Company Facts

get_company_facts
Read-onlyIdempotent

Get XBRL financial facts for a company by CIK number, ticker, or company name. Returns latest_annual — revenue, net income, operating income, total assets, liabilities, equity, cash, EPS and shares for the most recent fiscal year (10-K), resolved to whichever XBRL concept the filer currently reports under — plus per-concept detail with the fiscal year and period end on every figure. Concepts the filer has retired (e.g. a pre-ASC-606 Revenues tag) are kept for history but flagged stale and sorted last.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cikYesCompany CIK ("320193"), ticker ("AAPL"), or name ("Apple") — ticker/name are auto-resolved to a CIK

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cikYesCompany CIK number
year_noteNoHow `year` is derived
company_nameYesOfficial company name
latest_annualYesCanonical line items for the most recent fiscal year — revenue, net_income, operating_income, gross_profit, total_assets, total_liabilities, stockholders_equity, cash_and_equivalents, eps_basic, eps_diluted, shares_outstanding, research_and_development — each resolved to whichever concept the filer currently reports under; null when the filer reports no current value
key_financialsYesPer-concept detail. Current concepts first, retired (stale) concepts last — a stale concept is kept because a historical series still needs it, never silently dropped
stale_conceptsYesConcepts the filer has stopped reporting; present in key_financials flagged stale, never used in latest_annual
latest_period_endNoPeriod end of that most recent annual report (YYYY-MM-DD)
available_conceptsYesTotal number of US-GAAP financial concepts available for this company
latest_fiscal_yearNoFiscal year of the filer's most recent annual report across every concept examined

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • changedOutput schema / properties / key_financials / additionalProperties / properties / label / description
      Previous value: -"Human-readable label for the financial metric"New value: +"Human-readable label for the XBRL concept"
    • addedOutput schema / properties / key_financials / additionalProperties / properties / most_recent_annual / description
      Added value: +"Most recent annual (10-K/20-F/40-F) value, or null when the filer reports no annual value for this concept"
    • removedOutput schema / properties / key_financials / additionalProperties / properties / most_recent_annual / oneOf
      Removed value: -[
      -  {
      -    "description": "No annual data found for this metric",
      -    "type": "null"
      -  },
      -  {
      -    "properties": {
      -      "filed": {
      -        "description": "Date the filing was submitted (YYYY-MM-DD)",
      -        "type": "string"
      -      },
      -      "value": {
      -        "description": "The financial metric value",
      -        "type": "number"
      -      },
      -      "year": {
      -        "description": "Fiscal year of the most recent annual filing",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "year",
      -      "value",
      -      "filed"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedOutput schema / properties / key_financials / additionalProperties / properties / most_recent_annual / properties
      Added value: +{
      +  "filed": {
      +    "description": "Date the filing was submitted (YYYY-MM-DD)",
      +    "type": "string"
      +  },
      +  "form": {
      +    "description": "Annual-report form the value came from (10-K, 10-K/A, 20-F, 40-F)",
      +    "type": "string"
      +  },
      +  "period_end": {
      +    "description": "Period end / balance-sheet date (YYYY-MM-DD)",
      +    "type": "string"
      +  },
      +  "period_start": {
      +    "description": "Period start (YYYY-MM-DD); present for duration concepts such as revenue, absent for balance-sheet instants",
      +    "type": "string"
      +  },
      +  "unit": {
      +    "description": "XBRL unit: USD, USD/shares, shares, or pure",
      +    "type": "string"
      +  },
      +  "value": {
      +    "description": "Metric value in `unit`",
      +    "type": "number"
      +  },
      +  "year": {
      +    "description": "Fiscal year the reporting period ENDS in, derived from period_end (NOT the SEC fy filing-year field, which stamps prior-year comparatives with the restating filing's year)",
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / key_financials / additionalProperties / properties / most_recent_annual / required
      Added value: +[
      +  "year",
      +  "value",
      +  "filed",
      +  "period_end",
      +  "form",
      +  "unit"
      +]
    • addedOutput schema / properties / key_financials / additionalProperties / properties / most_recent_annual / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • addedOutput schema / properties / key_financials / additionalProperties / properties / stale
      Added value: +{
      +  "description": "true when this concept's latest annual period ends before the filer's latest annual report — the filer stopped reporting it (e.g. a pre-ASC-606 Revenues tag). Real history, not the current figure",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / key_financials / additionalProperties / properties / stale_note
      Added value: +{
      +  "description": "Present when stale: which fiscal year the concept stops at, what the filer's latest report covers, and which current concept in latest_annual replaces it",
      +  "type": "string"
      +}
    • changedOutput schema / properties / key_financials / additionalProperties / required
      Previous value: -[
      -  "label",
      -  "most_recent_annual"
      -]New value: +[
      +  "label",
      +  "most_recent_annual",
      +  "stale"
      +]
    • changedOutput schema / properties / key_financials / description
      Previous value: -"Key financial metrics with most recent annual values"New value: +"Per-concept detail. Current concepts first, retired (stale) concepts last — a stale concept is kept because a historical series still needs it, never silently dropped"
    • addedOutput schema / properties / latest_annual
      Added value: +{
      +  "additionalProperties": {
      +    "description": "Most recent annual (10-K/20-F/40-F) value, or null when the filer reports no annual value for this concept",
      +    "properties": {
      +      "concept": {
      +        "description": "The us-gaap concept this value was read from — the one the filer currently reports this line under",
      +        "type": "string"
      +      },
      +      "filed": {
      +        "description": "Date the filing was submitted (YYYY-MM-DD)",
      +        "type": "string"
      +      },
      +      "form": {
      +        "description": "Annual-report form the value came from (10-K, 10-K/A, 20-F, 40-F)",
      +        "type": "string"
      +      },
      +      "period_end": {
      +        "description": "Period end / balance-sheet date (YYYY-MM-DD)",
      +        "type": "string"
      +      },
      +      "period_start": {
      +        "description": "Period start (YYYY-MM-DD); present for duration concepts such as revenue, absent for balance-sheet instants",
      +        "type": "string"
      +      },
      +      "unit": {
      +        "description": "XBRL unit: USD, USD/shares, shares, or pure",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "Metric value in `unit`",
      +        "type": "number"
      +      },
      +      "year": {
      +        "description": "Fiscal year the reporting period ENDS in, derived from period_end (NOT the SEC fy filing-year field, which stamps prior-year comparatives with the restating filing's year)",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "year",
      +      "value",
      +      "filed",
      +      "period_end",
      +      "form",
      +      "unit",
      +      "concept"
      +    ],
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  },
      +  "description": "Canonical line items for the most recent fiscal year — revenue, net_income, operating_income, gross_profit, total_assets, total_liabilities, stockholders_equity, cash_and_equivalents, eps_basic, eps_diluted, shares_outstanding, research_and_development — each resolved to whichever concept the filer currently reports under; null when the filer reports no current value",
      +  "type": "object"
      +}
    • addedOutput schema / properties / latest_fiscal_year
      Added value: +{
      +  "description": "Fiscal year of the filer's most recent annual report across every concept examined",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / latest_period_end
      Added value: +{
      +  "description": "Period end of that most recent annual report (YYYY-MM-DD)",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / stale_concepts
      Added value: +{
      +  "description": "Concepts the filer has stopped reporting; present in key_financials flagged stale, never used in latest_annual",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / year_note
      Added value: +{
      +  "description": "How `year` is derived",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "cik",
      -  "company_name",
      -  "key_financials",
      -  "available_concepts"
      -]New value: +[
      +  "cik",
      +  "company_name",
      +  "latest_annual",
      +  "key_financials",
      +  "stale_concepts",
      +  "available_concepts"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / cik / description
      Previous value: -"Company CIK number (digits only, e.g., \"320193\" for Apple)"New value: +"Company CIK (\"320193\"), ticker (\"AAPL\"), or name (\"Apple\") — ticker/name are auto-resolved to a CIK"
  3. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "cik": "320193"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "available_concepts": {
      +      "description": "Total number of US-GAAP financial concepts available for this company",
      +      "type": "number"
      +    },
      +    "cik": {
      +      "description": "Company CIK number",
      +      "type": "string"
      +    },
      +    "company_name": {
      +      "description": "Official company name",
      +      "type": "string"
      +    },
      +    "key_financials": {
      +      "additionalProperties": {
      +        "properties": {
      +          "label": {
      +            "description": "Human-readable label for the financial metric",
      +            "type": "string"
      +          },
      +          "most_recent_annual": {
      +            "oneOf": [
      +              {
      +                "description": "No annual data found for this metric",
      +                "type": "null"
      +              },
      +              {
      +                "properties": {
      +                  "filed": {
      +                    "description": "Date the filing was submitted (YYYY-MM-DD)",
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "description": "The financial metric value",
      +                    "type": "number"
      +                  },
      +                  "year": {
      +                    "description": "Fiscal year of the most recent annual filing",
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "year",
      +                  "value",
      +                  "filed"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "label",
      +          "most_recent_annual"
      +        ],
      +        "type": "object"
      +      },
      +      "description": "Key financial metrics with most recent annual values",
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "cik",
      +    "company_name",
      +    "key_financials",
      +    "available_concepts"
      +  ],
      +  "type": "object"
      +}
  4. Changed2 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "cik": "320193"
      -  },
      -  {
      -    "cik": "789019"
      -  }
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "cik": {
      -      "description": "SEC Central Index Key as numeric value",
      -      "type": "number"
      -    },
      -    "entity_name": {
      -      "description": "Legal name of the company",
      -      "type": "string"
      -    },
      -    "taxonomies": {
      -      "description": "Summary of available XBRL taxonomies",
      -      "items": {
      -        "properties": {
      -          "concept_count": {
      -            "description": "Total number of concepts in taxonomy",
      -            "type": "number"
      -          },
      -          "sample_tags": {
      -            "description": "Up to 20 sample concept tags",
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "taxonomy": {
      -            "description": "Taxonomy name (e.g., us-gaap, ifrs-full)",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "taxonomy",
      -          "concept_count",
      -          "sample_tags"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "cik",
      -    "entity_name",
      -    "taxonomies"
      -  ],
      -  "type": "object"
      -}New value: +null
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "cik": {
      +      "description": "SEC Central Index Key as numeric value",
      +      "type": "number"
      +    },
      +    "entity_name": {
      +      "description": "Legal name of the company",
      +      "type": "string"
      +    },
      +    "taxonomies": {
      +      "description": "Summary of available XBRL taxonomies",
      +      "items": {
      +        "properties": {
      +          "concept_count": {
      +            "description": "Total number of concepts in taxonomy",
      +            "type": "number"
      +          },
      +          "sample_tags": {
      +            "description": "Up to 20 sample concept tags",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "taxonomy": {
      +            "description": "Taxonomy name (e.g., us-gaap, ifrs-full)",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "taxonomy",
      +          "concept_count",
      +          "sample_tags"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "cik",
      +    "entity_name",
      +    "taxonomies"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "cik": "320193"
      +  },
      +  {
      +    "cik": "789019"
      +  }
      +]
  7. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description then adds substantial behavioral context beyond that: results are resolved to the filer's currently reported XBRL concept, every figure carries fiscal year and period end, and retired concepts are kept for history but flagged stale and sorted last. These are exactly the non-obvious behaviors an agent needs to interpret results correctly.

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

Conciseness5/5

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

Two sentences with the core purpose front-loaded first. The metrics list and the concept-resolution/stale-sorting behavior each earn their place; there is no filler or repetition of schema content beyond the brief input-method mention.

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 single-parameter tool with an output schema present and annotations covering safety, the description is complete: it explains what is returned, the fiscal-year scope, the concept-resolution nuance, and how retired concepts are surfaced. Nothing an agent needs to correctly select and invoke the tool is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the single 'cik' parameter's schema description already documents accepted inputs (CIK, ticker, name) and the auto-resolution behavior. The description restates this at a high level but adds nothing beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

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 opens with a specific verb and resource: "Get XBRL financial facts for a company by CIK number, ticker, or company name." The domain specificity (XBRL, latest_annual, 10-K, specific metrics) makes it unambiguous against siblings like get_company_filings (documents) and entity_profile (profile data).

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?

The description provides clear context of use: an agent needing a company's most recent fiscal year financial figures (revenue, net income, EPS, etc.) would select this tool. The 10-K framing and concept-resolution behavior further sharpen when it applies. It stops short of explicit when-not-to-use guidance or named alternatives, so it doesn't reach 5.

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.