Financial Ratios
get_financial_ratiosGet pipeline-computed financial ratios from ratio.parquet. Served categories: profitability (margins, ROE, ROA, ROIC), liquidity (current ratio, quick ratio), leverage (D/E, interest coverage, net debt/EBITDA), efficiency (asset turnover, inventory days), per_share (EPS, BVPS, FCF/share), owner_earnings (Buffett FCF, owner yield), valuation (graham_number, ncav_per_share; no price-based multiple is published), and the pipeline-emitted forensic, growth, and rank (cross-sectional *_sector_pctile) categories. NOT every category exists for every ticker — omit categories to get whatever this ticker has, or read available_categories on the DATA_NOT_AVAILABLE_FOR_PERIOD error a missing category returns. valuation is the pair of price-free reference points precomputed at each fiscal period end from SEC filings data. Includes TTM rows alongside annual; each row's is_calendar_aligned is TRUE only when period_end sits on the fiscal-year boundary (±7 days) — filter to TRUE when joining ratios to fact-table fundamentals on (entity, fiscal_year). For historical cuts use as_of_date (PIT by accepted_at when present, else by period_end — see the param). Use this instead of get_valuation_metrics when you only need ratios (no DCF wiring); use get_valuation_metrics when you also need DCF/DDM. Each ratio is a {value, unit, category, reason} entry with a response-level lineage (DerivedLineage) pointing to get_company_fundamentals / verify_fact_lineage for filing-level provenance; a null value carries a reason (e.g. INPUT_MISSING) so missing is never a real zero. An FY ratio also carries a derived_id: cite it like a fact_id (verify_facts re-reads the row). On fiscal-year rows net_debt (total_debt − (cash + short-term investments), the compute_dcf definition), fcf_margin, debt_to_equity (total_debt / equity) and the *_cagr_Ny ratios are recomputed from the annual facts (basis: recomputed_from_facts) so every tool agrees; those carry a formula-form derived_id over the input facts when a registered formula reproduces the figure (net_debt carries none); a CAGR over a zero or negative base is null with a reason. Available on all plans.
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": {
"ticker": "<ticker>"
},
"name": "get_financial_ratios"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of distinct period_end dates to return (1–20). Defaults to 5. Within each period, all matching ratio_names are included. | |
| ticker | Yes | Stock ticker symbol, e.g. AAPL, MSFT — or a CIK (SEC identifier), e.g. '0000320193'. | |
| as_of_date | No | Historical cutoff (canonical cross-tool date param). PIT by SEC accepted_at when the ratio data carries it (latest value knowable on/before the date, zero look-ahead, _meta.pit_safe=true), else by ratio.period_end (pit_safe=false). For guaranteed accepted_at PIT use get_company_fundamentals. | |
| categories | No | Ratio categories to include (see the enum). Omit to return every category this ticker has. `valuation` (graham_number, ncav_per_share) are precomputed at each fiscal period end. Availability is per-ticker (the envelope lists this ticker's available_categories). | |
| fiscal_period | No | Filter to a specific fiscal period type. Use 'TTM' for trailing twelve months. Omit to return both annual (FY) and TTM rows. | |
| period_end_before | No | Alias of as_of_date (as_of_date preferred — the canonical name). Returns ratios with period_end on or before this date. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| note | Yes | ||
| plan | Yes | ||
| _meta | Yes | Provenance envelope — data lineage for every MCP response | |
| ticker | Yes | ||
| lineage | No | Provenance for pipeline-derived values (ratio.parquet / factor_scores.parquet): source table + pipeline computed_at, plus a pointer to the tools that return filing-level lineage. NOT point-in-time (recomputed on each pipeline run). | |
| periods_returned | Yes |