<!-- Agent Datasets docs · stocks_get_balance_sheets · canonical: https://www.agentdatasets.com/docs/tools/stocks_get_balance_sheets · rendered from https://www.agentdatasets.com -->

# stocks_get_balance_sheets

Normalized balance sheets for one US public company, newest first.

| Field | Value |
| --- | --- |
| Category | Stocks (`stocks`) |
| Exposure | public |
| MCP tool | `stocks_get_balance_sheets` |
| Documentation | https://www.agentdatasets.com/docs/tools/stocks_get_balance_sheets |

## Description

Normalized balance sheets for one US public company, newest first.

Same response shape as `stocks_get_income_statements` and
`stocks_get_cash_flow_statements` — the statements trio is
interchangeable: `data` holds the company identity (`ticker`, `cik`,
`company_name`, `period_type`, `reporting_standard`) and the bounded
`statements` list — address the company by ticker or by SEC CIK, and
`ticker` is its active symbol or null when it has none;
`reporting_standard` is `us-gaap`, `ifrs-full`, or null when legacy rows
have not observed the taxonomy yet. `meta` holds provenance (`source`:
"sec_edgar_companyfacts", and `as_of`, the freshest line-level timestamp
on this page); `pagination` holds the cursor paging state (pass
`pagination.next_cursor` back as `cursor`).

Set `as_reported=true` to serve as-originally-reported values instead
of the latest restated values, and keep it constant while paging. Before
a company's next statement ingest this mode raises `out_of_coverage`.
In both modes, `meta.restatements` lists restated reported lines with
original and superseding accessions. Arithmetic-derived Q4,
non-fiscal-year TTM, YTD-difference, and FCF lines carry null lineage;
a TTM matching a reported fiscal year carries the annual accessions.

Each statement is one fiscal period with a `lines` object keyed by
canonical line names: `total_assets`, `current_assets`,
`cash_and_equivalents`, `receivables`, `inventory`, `ppe_net`,
`goodwill`, `intangibles`, `total_liabilities`, `current_liabilities`,
`debt_current`, `debt_noncurrent`, `total_equity`, `shares_outstanding`.
A missing key means the company did not report that line for the period
— never zero (banks, for instance, omit the current/non-current split).
Balance-sheet values are point-in-time instants, so `period_start`
equals `period_end` (the balance-sheet date). Each value carries `value`
(exact decimal as a JSON string), `unit`, `currency`, `as_of`, and the
source filing's `accession_number`. `currency` is the as-filed reporting
currency on every value; IFRS filers report in their home currency
(EUR/TWD/JPY, etc.) and values are never silently converted to USD.

Known IFRS 20-F/FPI filers are annual-only: request `period="annual"`.
For them, `period="quarterly"` raises `out_of_coverage`. Balance sheets
still reject `period="ttm"` for every filer with `bad_parameter`.

For ratios and multiples (current ratio, debt-to-equity, book value),
prefer `stocks_get_financial_metrics` — computed server-side — over
deriving them from these raw lines: fewer tokens, no arithmetic slips.

The default is 4 fiscal periods and the maximum is 12. Example:
`stocks_get_balance_sheets(ticker_or_cik="AAPL", period="annual",
as_reported=true)`.

Errors carry a machine `code`: `unknown_entity` for a well-formed symbol
we hold no mapping for or a CIK we hold no company for,
`out_of_coverage` when `as_reported` is requested
before the company's first vintage-era statement ingest or quarterly
data is requested for a known IFRS filer, and
`bad_parameter` for input the schema can't reject (a non-ticker, non-CIK
string, a malformed cursor, or `period="ttm"`).

## Parameters

Input schema advertised to MCP clients and mirrored by the REST query string.

| Parameter | In | Type | Required | Default | Constraints | Description |
| --- | --- | --- | --- | --- | --- | --- |
| ticker_or_cik | input | `string` | yes | — | — | An exact ticker ('AAPL', 'BRK.B' — class separators accepted) or a numeric SEC CIK ('320193', zero-padded accepted). Use the CIK for a filer whose ticker was reused by another company, or that has no ticker at all. For a company *name*, call stocks_search_tickers first — this tool does not fuzzy-match. |
| period | input | `"annual" \| "quarterly" \| "ttm"` | no | "annual" | — | Fiscal frame: 'annual' = fiscal year-ends (FY), 'quarterly' = fiscal-quarter-ends (Q1–Q4). 'ttm' is not valid for balance sheets — a balance sheet is a point-in-time snapshot, not a flow that sums over a window — and is rejected with a bad_parameter error. Known 20-F/FPI IFRS filers report annual statements only; quarterly requests raise `out_of_coverage`. |
| limit | input | `integer` | no | 4 | min 1, max 12 | Fiscal periods to return, newest first (1–12). |
| cursor | input | `string \| null` | no | null | — | Opaque pagination cursor from a previous response's `pagination.next_cursor`; omit to start from the newest period. |
| as_reported | input | `boolean` | no | false | — | Serve as-originally-reported values instead of latest restated values. Keep this constant while paging. Before the next statement ingest, this mode raises `out_of_coverage`. Reported restatements carry original and superseding accessions; arithmetic-derived Q4, non-fiscal-year TTM, YTD-difference, and FCF lines carry null lineage, while a TTM matching a reported fiscal year carries the annual accessions. |

## Provenance

- `sec_edgar_companyfacts` — U.S. Securities and Exchange Commission (EDGAR), XBRL company-facts financial-statement data (per-company API and the nightly bulk companyfacts.zip) (U.S. Government work, public domain (17 U.S.C. § 105)). See https://www.agentdatasets.com/docs/attribution.md

Dataset registry: `stocks_fundamentals`.
