US stock fundamentals: SEC financial statements, valuation series, summaries, screens, chart images.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer tgm_live_… — a free API key from https://tgmcharts.com/developers/keys. Without it, tool calls run under a free trial (about 40 per connection); initialize and tools/list never need it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use to compare companies against each other. Side-by-side headline fundamentals for 2–4 tickers (latest values with as-of context): market cap, close, P/E, P/S, margins, ROE, dividend yield, and 5-year revenue/EPS CAGRs. Uncovered symbols are reported honestly, not dropped silently.
2–4 ticker symbols
json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
Use to compare companies against each other. Side-by-side headline fundamentals for 2–4 tickers (latest values with as-of context): market cap, close, P/E, P/S, margins, ROE, dividend yield, and 5-year revenue/EPS CAGRs. Uncovered symbols are reported honestly, not dropped silently.
| Argument | Type | Description |
|---|---|---|
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
| symbols* | array | 2–4 ticker symbols |
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
},
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 2,
"description": "2–4 ticker symbols"
}
}
}Use when the answer should show a picture of a metric's history. A ready-to-embed 1600×900 PNG chart of a metric's history in TGMCharts' house style (watermarked, as-of stamped). Returns the canonical URL — fetch or embed it directly (<img src=…>); it is edge-cached and needs no key. Sector-gated or empty histories render an honest explanation card rather than failing.
| Argument | Type | Description |
|---|---|---|
| years | integer | Trailing window in years |
| metric* | string | Chart-tier metric slug (see list_metrics) |
| symbol* | string | Ticker symbol, e.g. AAPL |
| compare | string | Second ticker for grouped comparison bars (bar metrics only) |
{
"type": "object",
"required": [
"symbol",
"metric"
],
"properties": {
"years": {
"type": "integer",
"maximum": 20,
"minimum": 2,
"description": "Trailing window in years"
},
"metric": {
"enum": [
"pe-ratio",
"ps-ratio",
"pb-ratio",
"pfcf-ratio",
"pocf-ratio",
"ev-ebitda",
"ev-ebit",
"ev-sales",
"ev-fcf",
"ev-assets",
"earnings-yield",
"fcf-yield",
"ebitda-yield",
"ocf-yield",
"dividend-yield",
"total-return",
"roic",
"revenue-ttm",
"net-income-ttm",
"fcf-ttm",
"ebitda-ttm",
"capex-ttm",
"buybacks-ttm",
"sbc-ttm",
"rd-ttm",
"gross-margin-quarterly",
"operating-margin-quarterly",
"net-margin-quarterly",
"revenue",
"net-income",
"eps",
"free-cash-flow",
"ebitda",
"capex",
"buybacks",
"stock-based-comp",
"r-and-d",
"gross-margin",
"operating-margin",
"profit-margin",
"roe",
"roa",
"revenue-quarterly",
"net-income-quarterly",
"eps-quarterly",
"fcf-quarterly"
],
"type": "string",
"description": "Chart-tier metric slug (see list_metrics)"
},
"symbol": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL"
},
"compare": {
"type": "string",
"description": "Second ticker for grouped comparison bars (bar metrics only)"
}
}
}Use for line items as filed with the SEC (revenue, net income, cash flow, dividends paid, debt…) by year or quarter. Raw as-filed statement rows (income statement, balance sheet, or cash flow) sourced exclusively from SEC EDGAR XBRL company facts — public domain, latest-filed per period, honest nulls (never zero-filled, never vendor-backfilled). Derived quarters are disclosed. Token-frugal default: 5 fiscal years without per-value provenance; set include_provenance for the winning us-gaap tag + accession per value, or use https://tgmcharts.com/api/v1/statements/{symbol}/{statement} for full depth (30y, CSV).
| Argument | Type | Description |
|---|---|---|
| years | integer | Trailing fiscal years of rows (default 5; quarterly serves 4×years) |
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
| period | string | annual (default) or quarterly |
| symbol* | string | Ticker symbol, e.g. AAPL |
| statement* | string | Which statement |
| include_provenance | boolean | Include per-value provenance (us-gaap tag, accession, filed date). Default false to stay token-frugal. |
Use for a metric's history or trend (is the P/E high versus its past? how have margins moved?). Historical series for a TGMCharts-computed metric (daily valuation/yield lines, rolling TTM flows, quarterly margins). Points are even-time downsampled to max_points (default 120) to stay token-frugal — raw density is available at https://tgmcharts.com/api/v1/series/{symbol}/{metric}. points:null = intentionally withheld (sector-inappropriate, message included); [] = no stored history.
| Argument | Type | Description |
|---|---|---|
| years | integer | Trailing window in years (default: full stored history) |
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
| metric* | string | Series-tier metric slug (see list_metrics) |
| symbol* | string | Ticker symbol, e.g. KO |
| max_points | integer | Downsample cap (default 120) |
{
"type": "object",
"required": [
"symbol",
"metric"
],
"properties": {
"years": {
"type": "integer",
"maximum": 20,
"minimum": 2,
"description": "Trailing window in years (default: full stored history)"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
},
"metric": {
"enum": [
"pe-ratio",
"ps-ratio",
"pb-ratio",
"pfcf-ratio",
"pocf-ratio",
"ev-ebitda",
"ev-ebit",
"ev-sales",
"ev-fcf",
"ev-assets",
"earnings-yield",
"fcf-yield",
"ebitda-yield",
"ocf-yield",
"dividend-yield",
"total-return",
"roic",
"revenue-ttm",
"net-income-ttm",
"fcf-ttm",
"ebitda-ttm",
"capex-ttm",
"buybacks-ttm",
"sbc-ttm",
"rd-ttm",
"gross-margin-quarterly",
"operating-margin-quarterly",
"net-margin-quarterly",
"revenue",
"net-income",
"capex",
"buybacks",
"stock-based-comp",
"r-and-d",
"revenue-quarterly",
"net-income-quarterly"
],
"type": "string",
"description": "Series-tier metric slug (see list_metrics)"
},
"symbol": {
"type": "string",
"description": "Ticker symbol, e.g. KO"
},
"max_points": {
"type": "integer",
"maximum": 500,
"minimum": 10,
"description": "Downsample cap (default 120)"
}
}
}Use first for any question about one company. Compact fundamentals summary for one ticker (~5 KB): latest close, market cap, valuation ratios, margins, returns, dividend record, and 3/5/10-year growth CAGRs, with as-of dates and applicability notes. Null values are honest gaps or sector-inappropriate metrics — never zeros.
| Argument | Type | Description |
|---|---|---|
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
| symbol* | string | Ticker symbol, e.g. AAPL |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
},
"symbol": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL"
}
}
}Use to find the right metric slug before get_metric_series or get_chart. The full metric catalog: slug, label, unit, basis (daily/monthly/annual/quarterly/ttm — the stored sampling density, never overstated), methodology, and whether each metric is available as a JSON series (get_metric_series) and/or a chart render (get_chart). The same dictionary is the resource tgmcharts://metrics.
| Argument | Type | Description |
|---|---|---|
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
}
}
}Use to find companies that meet conditions (cheap, high dividend, fast growth…). Filter and rank the covered universe (about 4,000 US-listed names) on fundamental fields (marketCap, peRatio, dividendYield, consecutiveYears, margins, 5y CAGRs, …). Returns at most 25 rows — the MCP tier's cap; the full screener lives at https://tgmcharts.com/screener. Units: yields, margins, growth and CAGRs are fractions, not percents (dividendYield gt 0.03 = above 3%; see the field description). Example: filters [{field: "dividendYield", operator: "gt", value: 0.03}, {field: "consecutiveYears", operator: "gte", value: 25}], sortBy "dividendYield".
| Argument | Type | Description |
|---|---|---|
| limit | integer | Rows to return (default 10, max 25) |
| format | string | json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way. |
| sortBy | string | Sort field (default marketCap) |
| filters | array | |
| sortOrder | string | Default desc |
| includeEtfs | boolean | Include ETFs (default false) |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Rows to return (default 10, max 25)"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
},
"sortBy": {
"enum": [
"symbol",
"name",
"sector",
"marketCap",
"peRatio",
"dividendYield",
"consecutiveYears",
"netProfitMargin",
"grossMargin",
"revenueGrowth",
"debtToEquity",
"priceChange1Y",
"percentFrom52WeekHigh",
"percentFrom52WeekLow",
"revenueCagr5y",
"netIncomeCagr5y",
"epsCagr5y",
"fcfCagr5y",
"dividendsCagr5y"
],
"type": "string",
"description": "Sort field (default marketCap)"
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"operator",
"value"
],
"properties": {
"field": {
"enum": [
"symbol",
"name",
"sector",
"marketCap",
"peRatio",
"dividendYield",
"consecutiveYears",
"netProfitMargin",
"grossMargin",
"revenueGrowth",
"debtToEquity",
"priceChange1Y",
"percentFrom52WeekHigh",
"percentFrom52WeekLow",
"revenueCagr5y",
"netIncomeCagr5y",
"epsCagr5y",
"fcfCagr5y",
"dividendsCagr5y"
],
"type": "string",
"description": "Field to filter on. Units: dividendYield, netProfitMargin, grossMargin, revenueGrowth (TTM), priceChange1Y and the *Cagr5y fields are fractions (0.03 = 3%); percentFrom52WeekHigh and percentFrom52WeekLow are percents (-12.5 = 12.5% below the high); marketCap is in the quote currency (US dollars for US listings); peRatio and debtToEquity are ratios; consecutiveYears is years of dividend increases; symbol, name and sector are text (eq / neq)."
},
"value": {
"type": [
"number",
"string"
]
},
"operator": {
"enum": [
"gt",
"gte",
"lt",
"lte",
"eq",
"neq"
],
"type": "string"
}
}
},
"maxItems": 5
},
"sortOrder": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Default desc"
},
"includeEtfs": {
"type": "boolean",
"description": "Include ETFs (default false)"
}
}
}{
"type": "object",
"required": [
"symbol",
"statement"
],
"properties": {
"years": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Trailing fiscal years of rows (default 5; quarterly serves 4×years)"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way."
},
"period": {
"enum": [
"annual",
"quarterly"
],
"type": "string",
"description": "annual (default) or quarterly"
},
"symbol": {
"type": "string",
"description": "Ticker symbol, e.g. AAPL"
},
"statement": {
"enum": [
"income-statement",
"balance-sheet",
"cash-flow"
],
"type": "string",
"description": "Which statement"
},
"include_provenance": {
"type": "boolean",
"description": "Include per-value provenance (us-gaap tag, accession, filed date). Default false to stay token-frugal."
}
}
}