Skip to main content
Glama

get_company_financials

Read-onlyIdempotent

Get key financial figures for one company as a yearly series (revenue, gross profit, operating income, net income, EPS, assets, equity, operating cash flow, capex) plus latest_period, the freshest annual or quarterly figures. US (NYSE, NASDAQ) and Nordic (HEL, STO). For line items use get_financial_statement; for several companies, compare_companies.

Args: company: Name or ticker, e.g. "Apple", "AAPL"; fuzzy matching. years: Annual years in by_year (default 5, max 10). market: "nordic" or "us"; omit to auto-detect. period_type: "auto" (default; newest annual or quarterly), "annual", "quarterly" (adds by_quarter) or "both" (by_year plus by_quarter). quarters: Quarters in by_quarter. Nordic: default 12, max 40. US: default 8, max 20; US Q4 is derived as FY - (Q1+Q2+Q3) and flagged derived: true. year / quarter: Pin latest_period; quarter (1-4) forces quarterly. These are the company's OWN fiscal year and quarter (Apple's fiscal Q2 is January-March): check period_end.

Returns: entity (if entity.ambiguous, confirm the company from entity.candidates), by_year (cite its _provenance.citation_markdown), latest_period and, when asked, by_quarter plus quarterly_coverage. A pinned period with no data gives latest_period.available = false with reason: "requested_period_not_available" and nearest_available: say so, never present another period as the one asked. Surface data_quality_warnings (Nordic PDF figure vs market-data conflicts). conventions holds the rules for every market: US key names, ratios in percent, outflows positive. A ratio's basis is reported (company definition) or computed (Clarifo formula): name it when quoting and never mix the two. by_quarter carries operating_margin and yoy vs the same quarter a year earlier.

Chart: per the server "Charts" guidance (a line chart for a 3+ year trend); in ChatGPT call render_chart(source_tool="get_company_financials", source_args=, output="python").

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_company_financials"
  }
}

Input Schema

NameRequiredDescriptionDefault
yearNo
yearsNo
marketNo
companyYes
quarterNo
quartersNo
period_typeNoauto

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare a safe read (readOnlyHint, idempotentHint, destructiveHint=false), so the description needn't argue safety and instead adds genuinely non-obvious behavior: ambiguity handling via `entity.candidates`, provenance citation requirements, `derived: true` on US Q4, Nordic PDF-vs-market-data `data_quality_warnings`, and the reported/computed ratio `basis` rule. The one substantive gap is the `latest_period.available = false` path, where it tells the agent what to say but not the fuller recovery procedure beyond `nearest_available`. Strong content, but a few behaviors (e.g. caching, rate limits, whether repeated calls are stable) go unstated.

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

Conciseness4/5

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

Front-loaded with the purpose and sibling routing, then a structured Args/Returns breakdown that an agent can scan. It is long, and a few clauses (the chart invocation pattern, the ratio-basis aside) sit in the main description rather than in a narrower section, but nearly every sentence conveys a fact the agent would otherwise have to guess.

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

Completeness4/5

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

Rich across the parameters and the sibling boundary, and the return-shape paragraph is a bonus rather than a necessity given the output schema. What it omits is minor but real: no guidance on call cost or latency for `period_type: "both"` over large quarter counts, and the fiscal-quarter caveat is stated without a concrete example of resolving it beyond checking `period_end`.

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?

Schema description coverage is 0%, so the description carries the full burden and does: it documents `years` default/max, `quarters` market-specific defaults and maxima, `market` omission behavior (auto-detect), all four `period_type` enum values including the `by_quarter` side effect, and the interaction where `quarter` 1-4 forces quarterly. It also explains `company` accepts names or tickers with fuzzy matching. This is precisely the compensating detail a 0% coverage schema requires.

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?

States a specific verb and resource ('Get key financial figures for one company as a yearly series'), enumerates exactly which figures are returned, names the covered markets, and explicitly routes line-item and multi-company needs to `get_financial_statement` and `compare_companies`. An agent can distinguish it from every close sibling without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit alternatives and the conditions that select them ('For line items use get_financial_statement; for several companies, compare_companies'), plus when to set `period_type` to each of its four values and when to pin `year`/`quarter`. It also warns that the fiscal period is the company's own, not calendar, which pre-empts a common misuse.

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.