tn-financial-data 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,7 +25,7 @@ This package is the hosted agent-facing surface only. The repo's website, local
25
25
 
26
26
  ## Features
27
27
 
28
- - Company facts, financials, prices, news, insider trades, ownership, global rates, and raw SEC filings through one hosted API
28
+ - Company facts, financials, prices, news, insider trades, ownership, earnings transcript structure, stored macro history, and raw SEC filings through one hosted API
29
29
  - Multi-ticker resolve and snapshot reads for lower-latency agent workflows
30
30
  - Earnings calendar, dividends, and stock splits through the same hosted read contract
31
31
  - Cross-ticker news search over article title, summary, and body text with ticker, provider, publisher, and date filters
@@ -33,6 +33,7 @@ This package is the hosted agent-facing surface only. The repo's website, local
33
33
  - Packaged skill bundle for Claude and OpenCode installs
34
34
  - Typed TypeScript client from the root package export
35
35
  - Stable production default at `https://api.truenorth-financial.ai/v1`
36
+ - Stored macro endpoints for FRED-backed US rates and economic indicators, plus global central-bank rate history through `global-rates`, `us-rates`, and `us-economic-indicators`
36
37
 
37
38
  ## Installation
38
39
 
@@ -71,8 +72,11 @@ tn-financial-data query resolve-ticker --query google --query meta --query nvda
71
72
  tn-financial-data query available-tickers
72
73
  tn-financial-data query snapshot --tickers AAPL,MSFT,NVDA
73
74
  tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual
75
+ tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
74
76
  tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
75
77
  tn-financial-data query dividends --ticker AAPL --limit 10
78
+ tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000
79
+ tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120
76
80
  tn-financial-data query company --ticker AAPL
77
81
  tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10
78
82
  tn-financial-data query filings --ticker AAPL --filing-type 8-K --limit 5
@@ -103,10 +107,13 @@ tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --pe
103
107
  tn-financial-data query financials --ticker AAPL --period annual --statement all
104
108
  tn-financial-data query financial-metrics --ticker AAPL --period annual --limit 4
105
109
  tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8
110
+ tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
106
111
  tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
107
112
  tn-financial-data query quarterly-highlights --ticker AAPL
108
113
  tn-financial-data query dividends --ticker AAPL --limit 10
109
114
  tn-financial-data query splits --ticker AAPL --limit 10
115
+ tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000
116
+ tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120
110
117
  tn-financial-data query filings --ticker AAPL --filing-type 10-K,10-Q,8-K --limit 10
111
118
  tn-financial-data query filing-items --ticker AAPL --accession-number 0000320193-26-000005 --item 2.02 --include-exhibits
112
119
  tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31
@@ -202,6 +209,22 @@ const calendar = await client.getEarningsCalendar({
202
209
 
203
210
  console.log(calendar.events.map((row) => `${row.ticker}:${row.event_date_start}`));
204
211
 
212
+ const transcripts = await client.getEarningsTranscripts({
213
+ ticker: "NVDA",
214
+ limit: 1,
215
+ });
216
+
217
+ console.log(transcripts.transcripts[0]?.quarter_label, transcripts.transcripts[0]?.question_count);
218
+
219
+ const usRates = await client.getUsInterestRates({
220
+ series: ["us_treasury_10y", "fed_funds_rate"],
221
+ startDate: "2021-01-01",
222
+ endDate: "2026-04-01",
223
+ limit: 2000,
224
+ });
225
+
226
+ console.log(usRates.rates.map((row) => `${row.key}:${row.latest?.value}`));
227
+
205
228
  const filings = await client.getFilings("AAPL", {
206
229
  filingTypes: ["8-K"],
207
230
  limit: 3,
package/dist/cli.js CHANGED
@@ -274,6 +274,12 @@ var TnFinancialData = class {
274
274
  `/earnings?${this.buildOptionalFinancialParams(ticker, opts)}`
275
275
  );
276
276
  }
277
+ async getEarningsTranscripts(ticker, opts) {
278
+ const params = new URLSearchParams({ ticker });
279
+ if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
280
+ if (opts?.reportPeriod) params.set("report_period", opts.reportPeriod);
281
+ return this.request(`/earnings/transcripts?${params.toString()}`);
282
+ }
277
283
  async getEarningsCalendar(opts) {
278
284
  const params = this.buildEarningsCalendarParams(opts);
279
285
  return this.request(
@@ -369,12 +375,24 @@ var TnFinancialData = class {
369
375
  return this.request(`/institutional-ownership/investor?${params}`);
370
376
  }
371
377
  async getGlobalInterestRates(opts) {
378
+ const params = this.buildMacroSeriesParams(opts);
379
+ return this.request(`/macro/interest-rates/global?${params}`);
380
+ }
381
+ async getUsInterestRates(opts) {
382
+ const params = this.buildMacroSeriesParams(opts);
383
+ return this.request(`/macro/interest-rates/us?${params}`);
384
+ }
385
+ async getUsEconomicIndicators(opts) {
386
+ const params = this.buildMacroSeriesParams(opts);
387
+ return this.request(`/macro/economic-indicators/us?${params}`);
388
+ }
389
+ buildMacroSeriesParams(opts) {
372
390
  const params = new URLSearchParams();
373
391
  if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
374
392
  if (opts?.startDate) params.set("start_date", opts.startDate);
375
393
  if (opts?.endDate) params.set("end_date", opts.endDate);
376
394
  if (opts?.series && opts.series.length > 0) params.set("series", opts.series.join(","));
377
- return this.request(`/macro/interest-rates/global?${params}`);
395
+ return params;
378
396
  }
379
397
  async getAnalystEstimates(ticker) {
380
398
  return this.request(
@@ -666,7 +684,7 @@ function rootHelp() {
666
684
  "tn-financial-data",
667
685
  "",
668
686
  "Usage:",
669
- " tn-financial-data query <available-tickers|resolve-ticker|company|filings|filing-items|general-overview|financials|financial-metrics|financial-metrics-snapshot|earnings|earnings-calendar|quarterly-highlights|analyst-estimates|prices|snapshot|dividends|splits|news|news-search|insider-trades|institutional-ownership|investor-portfolio|global-rates|segmented-revenues|screen|screen-fields> [options]",
687
+ " tn-financial-data query <available-tickers|resolve-ticker|company|filings|filing-items|general-overview|financials|financial-metrics|financial-metrics-snapshot|earnings|earnings-transcripts|earnings-calendar|quarterly-highlights|analyst-estimates|prices|snapshot|dividends|splits|news|news-search|insider-trades|institutional-ownership|investor-portfolio|global-rates|us-rates|us-economic-indicators|segmented-revenues|screen|screen-fields> [options]",
670
688
  " tn-financial-data skill <install|print|targets> [--tool claude|opencode]",
671
689
  " tn-financial-data describe opencli",
672
690
  " tn-financial-data --version",
@@ -684,6 +702,7 @@ function rootHelp() {
684
702
  " tn-financial-data query snapshot --tickers AAPL,MSFT,NVDA",
685
703
  " tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual",
686
704
  " tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8",
705
+ " tn-financial-data query earnings-transcripts --ticker AAPL --limit 4",
687
706
  " tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16",
688
707
  " tn-financial-data query quarterly-highlights --ticker AAPL",
689
708
  " tn-financial-data query analyst-estimates --ticker AAPL",
@@ -695,6 +714,8 @@ function rootHelp() {
695
714
  " tn-financial-data query institutional-ownership --ticker AAPL --limit 20",
696
715
  " tn-financial-data query investor-portfolio --investor vanguard --limit 20",
697
716
  " tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10",
717
+ " tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000",
718
+ " tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120",
698
719
  ' tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10',
699
720
  " tn-financial-data skill install --tool opencode",
700
721
  " tn-financial-data skill install --tool claude",
@@ -723,6 +744,7 @@ function queryHelp() {
723
744
  " tn-financial-data query financial-metrics --ticker <symbol> [--period <annual|quarterly|ttm>] [--limit <n>] [--report-period <date>] [--report-period-gte <date>] [--report-period-lte <date>] [--report-period-gt <date>] [--report-period-lt <date>] [--api-key <key>] [--base-url <url>]",
724
745
  " tn-financial-data query financial-metrics-snapshot (--ticker <symbol> | --tickers <csv>) [--period <annual|quarterly|ttm>] [--api-key <key>] [--base-url <url>]",
725
746
  " tn-financial-data query earnings --ticker <symbol> [--period <annual|quarterly|ttm>] [--limit <n>] [--report-period <date>] [--report-period-gte <date>] [--report-period-lte <date>] [--report-period-gt <date>] [--report-period-lt <date>] [--api-key <key>] [--base-url <url>]",
747
+ " tn-financial-data query earnings-transcripts --ticker <symbol> [--limit <n>] [--report-period <date>] [--api-key <key>] [--base-url <url>]",
726
748
  " tn-financial-data query earnings-calendar [--ticker <symbol> | --tickers <csv>] [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
727
749
  " tn-financial-data query quarterly-highlights --ticker <symbol> [--report-period <date>] [--api-key <key>] [--base-url <url>]",
728
750
  " tn-financial-data query analyst-estimates --ticker <symbol> [--api-key <key>] [--base-url <url>]",
@@ -736,6 +758,8 @@ function queryHelp() {
736
758
  " tn-financial-data query institutional-ownership --ticker <symbol> [--limit <n>] [--api-key <key>] [--base-url <url>]",
737
759
  " tn-financial-data query investor-portfolio (--cik <cik> | --investor <alias>) [--limit <n>] [--api-key <key>] [--base-url <url>]",
738
760
  " tn-financial-data query global-rates [--series <csv>] [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
761
+ " tn-financial-data query us-rates [--series <csv>] [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
762
+ " tn-financial-data query us-economic-indicators [--series <csv>] [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
739
763
  " tn-financial-data query segmented-revenues --ticker <symbol> --period <annual|quarterly|ttm> [--limit <n>] [--segment-type <type>] [--report-period <date>] [--report-period-gte <date>] [--report-period-lte <date>] [--report-period-gt <date>] [--report-period-lt <date>] [--api-key <key>] [--base-url <url>]",
740
764
  ' tn-financial-data query screen --filter "field operator value" [--filter "field operator value"] [--limit <n>] [--api-key <key>] [--base-url <url>]',
741
765
  " tn-financial-data query screen-fields [--api-key <key>] [--base-url <url>]",
@@ -799,7 +823,7 @@ function buildOpenCliDocument() {
799
823
  info: {
800
824
  title: "tn-financial-data",
801
825
  summary: "Server-backed US equity financial data CLI for agents and operators.",
802
- description: "Query company facts, SEC financial statements, issuer-centric ownership data, investor-centric SEC 13F portfolios, global central-bank rate series, and daily or hourly prices from the tn-financial-data API.",
826
+ description: "Query company facts, SEC financial statements, issuer-centric ownership data, investor-centric SEC 13F portfolios, global and US macro series, and daily or hourly prices from the tn-financial-data API.",
803
827
  version,
804
828
  license: {
805
829
  identifier: "MIT",
@@ -849,6 +873,7 @@ function buildOpenCliDocument() {
849
873
  "tn-financial-data query financial-metrics-snapshot --ticker AAPL",
850
874
  "tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual",
851
875
  "tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8",
876
+ "tn-financial-data query earnings-transcripts --ticker AAPL --limit 4",
852
877
  "tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16",
853
878
  "tn-financial-data query quarterly-highlights --ticker AAPL",
854
879
  "tn-financial-data query analyst-estimates --ticker AAPL",
@@ -861,6 +886,8 @@ function buildOpenCliDocument() {
861
886
  "tn-financial-data query institutional-ownership --ticker AAPL --limit 20",
862
887
  "tn-financial-data query investor-portfolio --investor vanguard --limit 20",
863
888
  "tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10",
889
+ "tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000",
890
+ "tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120",
864
891
  'tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10',
865
892
  "tn-financial-data skill install --tool opencode",
866
893
  "tn-financial-data skill install --tool claude",
@@ -1356,6 +1383,34 @@ function buildOpenCliDocument() {
1356
1383
  }
1357
1384
  ]
1358
1385
  },
1386
+ {
1387
+ name: "earnings-transcripts",
1388
+ description: "Fetch normalized earnings call transcript metadata, participants, and speaker-turn structure for a single ticker.",
1389
+ options: [
1390
+ {
1391
+ name: "ticker",
1392
+ required: true,
1393
+ arguments: [{ name: "ticker", required: true, description: "Ticker symbol." }],
1394
+ description: "Ticker to fetch."
1395
+ },
1396
+ {
1397
+ name: "limit",
1398
+ arguments: [{ name: "limit", required: true, description: "Positive integer." }],
1399
+ description: "Maximum number of transcript artifacts to return."
1400
+ },
1401
+ {
1402
+ name: "report-period",
1403
+ arguments: [
1404
+ {
1405
+ name: "date",
1406
+ required: true,
1407
+ description: "Exact linked reporting-period end date."
1408
+ }
1409
+ ],
1410
+ description: "Exact linked report-period filter."
1411
+ }
1412
+ ]
1413
+ },
1359
1414
  {
1360
1415
  name: "quarterly-highlights",
1361
1416
  description: "Fetch issuer-reported supplemental quarterly highlights from the linked SEC Exhibit 99.1 release for supported companies.",
@@ -1540,6 +1595,79 @@ function buildOpenCliDocument() {
1540
1595
  }
1541
1596
  ]
1542
1597
  },
1598
+ {
1599
+ name: "us-rates",
1600
+ description: "Fetch US Treasury and Fed funds series with historical observations.",
1601
+ options: [
1602
+ {
1603
+ name: "series",
1604
+ arguments: [
1605
+ {
1606
+ name: "series",
1607
+ required: true,
1608
+ acceptedValues: [
1609
+ "us_treasury_3m",
1610
+ "us_treasury_2y",
1611
+ "us_treasury_5y",
1612
+ "us_treasury_10y",
1613
+ "us_treasury_30y",
1614
+ "fed_funds_rate"
1615
+ ],
1616
+ description: "Comma-separated series key list."
1617
+ }
1618
+ ],
1619
+ description: "Comma-separated US rates series list. Defaults to all supported US rates."
1620
+ },
1621
+ {
1622
+ name: "start-date",
1623
+ arguments: [{ name: "date", required: true, description: "Window start date." }],
1624
+ description: "Inclusive start date filter."
1625
+ },
1626
+ {
1627
+ name: "end-date",
1628
+ arguments: [{ name: "date", required: true, description: "Window end date." }],
1629
+ description: "Inclusive end date filter."
1630
+ },
1631
+ {
1632
+ name: "limit",
1633
+ arguments: [{ name: "limit", required: true, description: "Positive integer." }],
1634
+ description: "Maximum observations per series to return."
1635
+ }
1636
+ ]
1637
+ },
1638
+ {
1639
+ name: "us-economic-indicators",
1640
+ description: "Fetch US CPI, GDP, and unemployment series with historical observations.",
1641
+ options: [
1642
+ {
1643
+ name: "series",
1644
+ arguments: [
1645
+ {
1646
+ name: "series",
1647
+ required: true,
1648
+ acceptedValues: ["us_cpi", "us_gdp", "us_unemployment"],
1649
+ description: "Comma-separated series key list."
1650
+ }
1651
+ ],
1652
+ description: "Comma-separated US economic indicator series list. Defaults to all supported indicators."
1653
+ },
1654
+ {
1655
+ name: "start-date",
1656
+ arguments: [{ name: "date", required: true, description: "Window start date." }],
1657
+ description: "Inclusive start date filter."
1658
+ },
1659
+ {
1660
+ name: "end-date",
1661
+ arguments: [{ name: "date", required: true, description: "Window end date." }],
1662
+ description: "Inclusive end date filter."
1663
+ },
1664
+ {
1665
+ name: "limit",
1666
+ arguments: [{ name: "limit", required: true, description: "Positive integer." }],
1667
+ description: "Maximum observations per series to return."
1668
+ }
1669
+ ]
1670
+ },
1543
1671
  {
1544
1672
  name: "snapshot",
1545
1673
  description: "Fetch the latest daily price snapshot for one ticker or a small ticker batch.",
@@ -1940,6 +2068,20 @@ var GLOBAL_INTEREST_RATE_SERIES_KEYS = [
1940
2068
  "rba_3m",
1941
2069
  "snb_call_money"
1942
2070
  ];
2071
+ var US_INTEREST_RATE_SERIES_KEYS = [
2072
+ "us_treasury_3m",
2073
+ "us_treasury_2y",
2074
+ "us_treasury_5y",
2075
+ "us_treasury_10y",
2076
+ "us_treasury_30y",
2077
+ "fed_funds_rate"
2078
+ ];
2079
+ var US_ECONOMIC_INDICATOR_SERIES_KEYS = ["us_cpi", "us_gdp", "us_unemployment"];
2080
+ var MACRO_SERIES_KEYS = [
2081
+ ...GLOBAL_INTEREST_RATE_SERIES_KEYS,
2082
+ ...US_INTEREST_RATE_SERIES_KEYS,
2083
+ ...US_ECONOMIC_INDICATOR_SERIES_KEYS
2084
+ ];
1943
2085
 
1944
2086
  // src/reference-data/global-rates-series.ts
1945
2087
  var GLOBAL_INTEREST_RATE_SERIES_ALIASES = {
@@ -1966,6 +2108,61 @@ function normalizeGlobalInterestRateSeriesKey(value) {
1966
2108
  return GLOBAL_INTEREST_RATE_SERIES_ALIASES[normalized] ?? null;
1967
2109
  }
1968
2110
 
2111
+ // src/reference-data/us-macro-series.ts
2112
+ var US_INTEREST_RATE_SERIES_ALIASES = {
2113
+ "3m": "us_treasury_3m",
2114
+ "3mo": "us_treasury_3m",
2115
+ "3_month": "us_treasury_3m",
2116
+ treasury_3m: "us_treasury_3m",
2117
+ us_3m: "us_treasury_3m",
2118
+ us_tbill_3m: "us_treasury_3m",
2119
+ "2y": "us_treasury_2y",
2120
+ treasury_2y: "us_treasury_2y",
2121
+ us_2y: "us_treasury_2y",
2122
+ "5y": "us_treasury_5y",
2123
+ treasury_5y: "us_treasury_5y",
2124
+ us_5y: "us_treasury_5y",
2125
+ "10y": "us_treasury_10y",
2126
+ treasury_10y: "us_treasury_10y",
2127
+ us_10y: "us_treasury_10y",
2128
+ "30y": "us_treasury_30y",
2129
+ treasury_30y: "us_treasury_30y",
2130
+ us_30y: "us_treasury_30y",
2131
+ fed_funds: "fed_funds_rate",
2132
+ fedfunds: "fed_funds_rate",
2133
+ fedfundsrate: "fed_funds_rate",
2134
+ ffr: "fed_funds_rate"
2135
+ };
2136
+ var US_ECONOMIC_INDICATOR_SERIES_ALIASES = {
2137
+ cpi: "us_cpi",
2138
+ gdp: "us_gdp",
2139
+ unemployment: "us_unemployment",
2140
+ unemployment_rate: "us_unemployment"
2141
+ };
2142
+ function canonicalizeSeriesKeyInput2(value) {
2143
+ return value.trim().toLowerCase().replace(/[\s-]+/g, "_");
2144
+ }
2145
+ function normalizeUsInterestRateSeriesKey(value) {
2146
+ const normalized = canonicalizeSeriesKeyInput2(value);
2147
+ if (!normalized) {
2148
+ return null;
2149
+ }
2150
+ if (US_INTEREST_RATE_SERIES_KEYS.includes(normalized)) {
2151
+ return normalized;
2152
+ }
2153
+ return US_INTEREST_RATE_SERIES_ALIASES[normalized] ?? null;
2154
+ }
2155
+ function normalizeUsEconomicIndicatorSeriesKey(value) {
2156
+ const normalized = canonicalizeSeriesKeyInput2(value);
2157
+ if (!normalized) {
2158
+ return null;
2159
+ }
2160
+ if (US_ECONOMIC_INDICATOR_SERIES_KEYS.includes(normalized)) {
2161
+ return normalized;
2162
+ }
2163
+ return US_ECONOMIC_INDICATOR_SERIES_ALIASES[normalized] ?? null;
2164
+ }
2165
+
1969
2166
  // src/cli/query-subcommand-help.ts
1970
2167
  function renderHelp(command, description, options, example) {
1971
2168
  return [
@@ -2123,6 +2320,20 @@ var QUERY_SUBCOMMAND_HELP = {
2123
2320
  ],
2124
2321
  "tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8"
2125
2322
  ),
2323
+ "earnings-transcripts": renderHelp(
2324
+ "earnings-transcripts",
2325
+ [
2326
+ "Fetch normalized earnings call transcript metadata, participants, and speaker-turn structure for a single ticker."
2327
+ ],
2328
+ [
2329
+ "--ticker <symbol> Required. Stock ticker symbol.",
2330
+ "--limit <n> Number of transcript artifacts to return.",
2331
+ "--report-period <date> Exact linked report period (YYYY-MM-DD).",
2332
+ "--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
2333
+ "--base-url <url> API base URL override."
2334
+ ],
2335
+ "tn-financial-data query earnings-transcripts --ticker AAPL --limit 4"
2336
+ ),
2126
2337
  "earnings-calendar": renderHelp(
2127
2338
  "earnings-calendar",
2128
2339
  [
@@ -2284,7 +2495,7 @@ var QUERY_SUBCOMMAND_HELP = {
2284
2495
  ),
2285
2496
  "global-rates": renderHelp(
2286
2497
  "global-rates",
2287
- ["Fetch curated global policy and money-market rate series."],
2498
+ ["Fetch stored global policy and money-market rate history from the hosted API."],
2288
2499
  [
2289
2500
  "--series <csv> Optional comma-separated series keys.",
2290
2501
  "--start-date <date> Optional start date (YYYY-MM-DD).",
@@ -2295,6 +2506,32 @@ var QUERY_SUBCOMMAND_HELP = {
2295
2506
  ],
2296
2507
  "tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10"
2297
2508
  ),
2509
+ "us-rates": renderHelp(
2510
+ "us-rates",
2511
+ ["Fetch stored US Treasury and Fed funds history from the hosted API."],
2512
+ [
2513
+ "--series <csv> Optional comma-separated US rates series keys.",
2514
+ "--start-date <date> Optional start date (YYYY-MM-DD).",
2515
+ "--end-date <date> Optional end date (YYYY-MM-DD).",
2516
+ "--limit <n> Number of observations to return per series.",
2517
+ "--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
2518
+ "--base-url <url> API base URL override."
2519
+ ],
2520
+ "tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000"
2521
+ ),
2522
+ "us-economic-indicators": renderHelp(
2523
+ "us-economic-indicators",
2524
+ ["Fetch stored US CPI, GDP, and unemployment history from the hosted API."],
2525
+ [
2526
+ "--series <csv> Optional comma-separated US economic indicator keys.",
2527
+ "--start-date <date> Optional start date (YYYY-MM-DD).",
2528
+ "--end-date <date> Optional end date (YYYY-MM-DD).",
2529
+ "--limit <n> Number of observations to return per series.",
2530
+ "--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
2531
+ "--base-url <url> API base URL override."
2532
+ ],
2533
+ "tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120"
2534
+ ),
2298
2535
  "segmented-revenues": renderHelp(
2299
2536
  "segmented-revenues",
2300
2537
  ["Fetch reported segment revenue rows for a single issuer."],
@@ -2524,6 +2761,17 @@ function buildEarningsCalendarCliOptions(parsed) {
2524
2761
  }
2525
2762
  return options;
2526
2763
  }
2764
+ function parseMacroSeriesSelection(value, acceptedValues, normalize) {
2765
+ return value?.split(",").map((item) => item.trim()).filter((item) => item.length > 0).map((item) => {
2766
+ const normalized = normalize(item);
2767
+ if (!normalized) {
2768
+ throw new CliUsageError(
2769
+ `series must be a comma-separated list of: ${acceptedValues.join(", ")}.`
2770
+ );
2771
+ }
2772
+ return normalized;
2773
+ });
2774
+ }
2527
2775
  async function handleQuery(parsed, runtime, deps) {
2528
2776
  const resource = parsed.positionals[1];
2529
2777
  if (!resource) {
@@ -2702,6 +2950,20 @@ async function handleQuery(parsed, runtime, deps) {
2702
2950
  printJson(runtime, await client.getEarningsCalendar(buildEarningsCalendarCliOptions(parsed)));
2703
2951
  return 0;
2704
2952
  }
2953
+ case "earnings-transcripts": {
2954
+ const ticker = requireOption(parsed, "ticker");
2955
+ const options = {};
2956
+ const limit = getOption(parsed, "limit");
2957
+ const reportPeriod = getOption(parsed, "report-period");
2958
+ if (limit) {
2959
+ options.limit = parsePositiveInt(limit, "limit");
2960
+ }
2961
+ if (reportPeriod) {
2962
+ options.reportPeriod = reportPeriod;
2963
+ }
2964
+ printJson(runtime, await client.getEarningsTranscripts(ticker, options));
2965
+ return 0;
2966
+ }
2705
2967
  case "quarterly-highlights": {
2706
2968
  const ticker = requireOption(parsed, "ticker");
2707
2969
  const options = {};
@@ -2848,15 +3110,11 @@ async function handleQuery(parsed, runtime, deps) {
2848
3110
  }
2849
3111
  case "global-rates": {
2850
3112
  const limit = getOption(parsed, "limit");
2851
- const series = getOption(parsed, "series")?.split(",").map((value) => value.trim()).filter((value) => value.length > 0).map((value) => {
2852
- const normalized = normalizeGlobalInterestRateSeriesKey(value);
2853
- if (!normalized) {
2854
- throw new CliUsageError(
2855
- `series must be a comma-separated list of: ${GLOBAL_INTEREST_RATE_SERIES_KEYS.join(", ")}.`
2856
- );
2857
- }
2858
- return normalized;
2859
- });
3113
+ const series = parseMacroSeriesSelection(
3114
+ getOption(parsed, "series"),
3115
+ GLOBAL_INTEREST_RATE_SERIES_KEYS,
3116
+ normalizeGlobalInterestRateSeriesKey
3117
+ );
2860
3118
  printJson(
2861
3119
  runtime,
2862
3120
  await client.getGlobalInterestRates({
@@ -2868,6 +3126,46 @@ async function handleQuery(parsed, runtime, deps) {
2868
3126
  );
2869
3127
  return 0;
2870
3128
  }
3129
+ case "us-rates": {
3130
+ const limit = getOption(parsed, "limit");
3131
+ const series = parseMacroSeriesSelection(
3132
+ getOption(parsed, "series"),
3133
+ US_INTEREST_RATE_SERIES_KEYS,
3134
+ normalizeUsInterestRateSeriesKey
3135
+ );
3136
+ const options = {
3137
+ startDate: getOption(parsed, "start-date"),
3138
+ endDate: getOption(parsed, "end-date")
3139
+ };
3140
+ if (limit) {
3141
+ options.limit = parsePositiveInt(limit, "limit");
3142
+ }
3143
+ if (series && series.length > 0) {
3144
+ options.series = series;
3145
+ }
3146
+ printJson(runtime, await client.getUsInterestRates(options));
3147
+ return 0;
3148
+ }
3149
+ case "us-economic-indicators": {
3150
+ const limit = getOption(parsed, "limit");
3151
+ const series = parseMacroSeriesSelection(
3152
+ getOption(parsed, "series"),
3153
+ US_ECONOMIC_INDICATOR_SERIES_KEYS,
3154
+ normalizeUsEconomicIndicatorSeriesKey
3155
+ );
3156
+ const options = {
3157
+ startDate: getOption(parsed, "start-date"),
3158
+ endDate: getOption(parsed, "end-date")
3159
+ };
3160
+ if (limit) {
3161
+ options.limit = parsePositiveInt(limit, "limit");
3162
+ }
3163
+ if (series && series.length > 0) {
3164
+ options.series = series;
3165
+ }
3166
+ printJson(runtime, await client.getUsEconomicIndicators(options));
3167
+ return 0;
3168
+ }
2871
3169
  case "segmented-revenues": {
2872
3170
  const ticker = requireOption(parsed, "ticker");
2873
3171
  const period = assertAcceptedValue(
@@ -35,6 +35,10 @@ interface ScreenerStringInFilter {
35
35
  type ScreenerFilter = ScreenerNumericFilter | ScreenerStringEqFilter | ScreenerStringInFilter;
36
36
  declare const GLOBAL_INTEREST_RATE_SERIES_KEYS: readonly ["ecb_refi", "ecb_deposit", "boj_call_money", "boe_sonia", "boc_call_money", "rba_3m", "snb_call_money"];
37
37
  type GlobalInterestRateSeriesKey = (typeof GLOBAL_INTEREST_RATE_SERIES_KEYS)[number];
38
+ declare const US_INTEREST_RATE_SERIES_KEYS: readonly ["us_treasury_3m", "us_treasury_2y", "us_treasury_5y", "us_treasury_10y", "us_treasury_30y", "fed_funds_rate"];
39
+ type UsInterestRateSeriesKey = (typeof US_INTEREST_RATE_SERIES_KEYS)[number];
40
+ declare const US_ECONOMIC_INDICATOR_SERIES_KEYS: readonly ["us_cpi", "us_gdp", "us_unemployment"];
41
+ type UsEconomicIndicatorSeriesKey = (typeof US_ECONOMIC_INDICATOR_SERIES_KEYS)[number];
38
42
 
39
43
  interface IncomeStatementData {
40
44
  ticker: string;
@@ -470,6 +474,10 @@ interface FinancialMetricsOpts extends OptionalFinancialQueryOpts {
470
474
  }
471
475
  interface EarningsOpts extends OptionalFinancialQueryOpts {
472
476
  }
477
+ interface EarningsTranscriptsOpts {
478
+ limit?: number;
479
+ reportPeriod?: string;
480
+ }
473
481
  interface EarningsCalendarOpts {
474
482
  ticker?: string;
475
483
  tickers?: readonly string[];
@@ -499,6 +507,18 @@ interface GlobalInterestRatesOpts {
499
507
  endDate?: string;
500
508
  series?: readonly GlobalInterestRateSeriesKey[];
501
509
  }
510
+ interface UsInterestRatesOpts {
511
+ limit?: number;
512
+ startDate?: string;
513
+ endDate?: string;
514
+ series?: readonly UsInterestRateSeriesKey[];
515
+ }
516
+ interface UsEconomicIndicatorsOpts {
517
+ limit?: number;
518
+ startDate?: string;
519
+ endDate?: string;
520
+ series?: readonly UsEconomicIndicatorSeriesKey[];
521
+ }
502
522
  interface IncomeStatementsResponse extends ReadMetadata {
503
523
  period: FinancialPeriod;
504
524
  income_statements: IncomeStatement[];
@@ -536,6 +556,33 @@ interface EarningsResponse extends ReadMetadata {
536
556
  period: FinancialPeriod;
537
557
  earnings: EarningsRow[];
538
558
  }
559
+ interface EarningsTranscriptParticipant {
560
+ participant_index: number;
561
+ name: string;
562
+ title: string | null;
563
+ firm: string | null;
564
+ role: string;
565
+ }
566
+ interface EarningsTranscriptSpeakerTurn {
567
+ turn_index: number;
568
+ speaker: string;
569
+ role: string;
570
+ }
571
+ interface EarningsTranscript {
572
+ headline: string;
573
+ report_period: string | null;
574
+ quarter_label: string | null;
575
+ published_at: string | null;
576
+ call_date: string | null;
577
+ question_count: number;
578
+ total_speaker_turns: number;
579
+ qa_turn_start_index: number | null;
580
+ participants: EarningsTranscriptParticipant[];
581
+ speaker_turns: EarningsTranscriptSpeakerTurn[];
582
+ }
583
+ interface EarningsTranscriptsResponse extends ReadMetadata {
584
+ transcripts: EarningsTranscript[];
585
+ }
539
586
  interface EarningsCalendarEvent extends SnakeCasedProperties<Omit<EarningsCalendarEventData, "refreshedAt">> {
540
587
  name: string;
541
588
  refreshed_at: string;
@@ -813,7 +860,7 @@ interface GlobalInterestRateSeries {
813
860
  label: string;
814
861
  region: string;
815
862
  country_code: string;
816
- frequency: "daily" | "monthly";
863
+ frequency: "daily" | "monthly" | "quarterly";
817
864
  latest: GlobalInterestRateObservation | null;
818
865
  observations: GlobalInterestRateObservation[];
819
866
  }
@@ -823,6 +870,38 @@ interface GlobalInterestRatesResponse {
823
870
  as_of: string | null;
824
871
  rates: GlobalInterestRateSeries[];
825
872
  }
873
+ interface UsInterestRateSeries {
874
+ key: UsInterestRateSeriesKey;
875
+ series_id: string;
876
+ label: string;
877
+ region: string;
878
+ country_code: string;
879
+ frequency: "daily" | "monthly" | "quarterly";
880
+ latest: GlobalInterestRateObservation | null;
881
+ observations: GlobalInterestRateObservation[];
882
+ }
883
+ interface UsInterestRatesResponse {
884
+ source: "fred";
885
+ availability: DataAvailability;
886
+ as_of: string | null;
887
+ rates: UsInterestRateSeries[];
888
+ }
889
+ interface UsEconomicIndicatorSeries {
890
+ key: UsEconomicIndicatorSeriesKey;
891
+ series_id: string;
892
+ label: string;
893
+ region: string;
894
+ country_code: string;
895
+ frequency: "daily" | "monthly" | "quarterly";
896
+ latest: GlobalInterestRateObservation | null;
897
+ observations: GlobalInterestRateObservation[];
898
+ }
899
+ interface UsEconomicIndicatorsResponse {
900
+ source: "fred";
901
+ availability: DataAvailability;
902
+ as_of: string | null;
903
+ indicators: UsEconomicIndicatorSeries[];
904
+ }
826
905
  type AnalystEstimate = SnakeCasedProperties<Omit<AnalystEstimateData, "ticker">>;
827
906
  type AnalystPriceTarget = SnakeCasedProperties<AnalystPriceTargetData>;
828
907
  interface AnalystEstimatesResponse {
@@ -956,6 +1035,7 @@ declare class TnFinancialData {
956
1035
  getFinancialMetricsSnapshot(ticker: string, opts?: Pick<FinancialMetricsOpts, "period">): Promise<ApiResponse<FinancialMetricsSnapshotResponse>>;
957
1036
  getBatchFinancialMetricsSnapshots(tickers: readonly string[], opts?: Pick<FinancialMetricsOpts, "period">): Promise<ApiResponse<BatchFinancialMetricsSnapshotsResponse>>;
958
1037
  getEarnings(ticker: string, opts?: EarningsOpts): Promise<ApiResponse<EarningsResponse>>;
1038
+ getEarningsTranscripts(ticker: string, opts?: EarningsTranscriptsOpts): Promise<ApiResponse<EarningsTranscriptsResponse>>;
959
1039
  getEarningsCalendar(opts?: EarningsCalendarOpts): Promise<ApiResponse<EarningsCalendarResponse>>;
960
1040
  getGeneralOverview(ticker: string, opts?: GeneralOverviewOpts): Promise<ApiResponse<GeneralOverviewResponse>>;
961
1041
  getKeyStatistics(ticker: string): Promise<ApiResponse<KeyStatisticsResponse>>;
@@ -975,6 +1055,9 @@ declare class TnFinancialData {
975
1055
  getInstitutionalOwnership(ticker: string, opts?: InstitutionalOwnershipOpts): Promise<ApiResponse<InstitutionalOwnershipResponse>>;
976
1056
  getInvestorPortfolio(opts: InvestorPortfolioOpts): Promise<ApiResponse<InvestorPortfolioResponse>>;
977
1057
  getGlobalInterestRates(opts?: GlobalInterestRatesOpts): Promise<ApiResponse<GlobalInterestRatesResponse>>;
1058
+ getUsInterestRates(opts?: UsInterestRatesOpts): Promise<ApiResponse<UsInterestRatesResponse>>;
1059
+ getUsEconomicIndicators(opts?: UsEconomicIndicatorsOpts): Promise<ApiResponse<UsEconomicIndicatorsResponse>>;
1060
+ private buildMacroSeriesParams;
978
1061
  getAnalystEstimates(ticker: string): Promise<ApiResponse<AnalystEstimatesResponse>>;
979
1062
  getCompanyFacts(ticker: string): Promise<ApiResponse<{
980
1063
  company_facts: CompanyFacts;
@@ -985,4 +1068,4 @@ declare class TnFinancialData {
985
1068
  screen(request: ScreenerRequest): Promise<ApiResponse<ScreenerResponse>>;
986
1069
  }
987
1070
 
988
- export { type AnalystEstimate, type AnalystEstimatesResponse, type AnalystPriceTarget, ApiError, type ApiResponse, type AvailableTicker, type AvailableTickersResponse, type BalanceSheet, type BalanceSheetsResponse, type BatchFinancialMetricsSnapshotEntry, type BatchFinancialMetricsSnapshotsResponse, type BatchNotFoundEntry, type BatchPriceSnapshotEntry, type BatchPriceSnapshotsResponse, type BatchTickerResolutionResponse, type CashFlowStatement, type CashFlowStatementsResponse, type ClientOptions, type CompanyFacts, type ConsensusSurprise, type CorporateActionsOpts, DEFAULT_API_BASE_URL, type DataAvailability, type DividendEvent, type DividendsResponse, type EarningsCalendarEvent, type EarningsCalendarOpts, type EarningsCalendarResponse, type EarningsOpts, type EarningsResponse, type EarningsRow, type FilingExhibit, type FilingItemSection, type FilingItemsOpts, type FilingItemsResponse, type FilingMetadata, type FilingsOpts, type FilingsResponse, type FinancialMetric, type FinancialMetricsOpts, type FinancialMetricsResponse, type FinancialMetricsSnapshotResponse, type FinancialOpts, type FinancialsResponse, type GeneralOverviewFinancials, type GeneralOverviewNews, type GeneralOverviewOpts, type GeneralOverviewPriceSnapshot, type GeneralOverviewResponse, type GlobalInterestRateObservation, type GlobalInterestRateSeries, type GlobalInterestRatesOpts, type GlobalInterestRatesResponse, type IncomeStatement, type IncomeStatementsResponse, type InsiderTrade, type InsiderTradesOpts, type InsiderTradesResponse, type InstitutionalOwnershipEntry, type InstitutionalOwnershipOpts, type InstitutionalOwnershipResponse, type InvestorPortfolioHolding, type InvestorPortfolioInvestor, type InvestorPortfolioOpts, type InvestorPortfolioResponse, type InvestorPortfolioSummary, type KeyStatistics, type KeyStatisticsResponse, type NewsArticle, type NewsOpts, type NewsResponse, type NewsSearchArticle, type NewsSearchOpts, type NewsSearchResponse, type OptionalFinancialQueryOpts, type PriceBar, type PriceHistoryResponse, type PriceOpts, type PriceSnapshot, type PriceSnapshotResponse, type QuarterlyHighlightsMetric, type QuarterlyHighlightsOpts, type QuarterlyHighlightsPayload, type QuarterlyHighlightsResponse, type RateLimitAnnotatedResponse, type RateLimitInfo, type ReadMetadata, type ReportPeriodFilterOpts, type ScreenerFieldMetadata, type ScreenerFieldsResponse, type ScreenerRequest, type ScreenerResponse, type ScreenerResultRow, type SegmentedRevenueItem, type SegmentedRevenuePeriod, type SegmentedRevenuesOpts, type SegmentedRevenuesResponse, type SnakeCase, type SplitEvent, type SplitsResponse, type TickerResolutionCandidate, type TickerResolutionConfidence, type TickerResolutionIntent, type TickerResolutionMatchKind, type TickerResolutionRelationship, type TickerResolutionResponse, type TickerResolutionStatus, TnFinancialData };
1071
+ export { type AnalystEstimate, type AnalystEstimatesResponse, type AnalystPriceTarget, ApiError, type ApiResponse, type AvailableTicker, type AvailableTickersResponse, type BalanceSheet, type BalanceSheetsResponse, type BatchFinancialMetricsSnapshotEntry, type BatchFinancialMetricsSnapshotsResponse, type BatchNotFoundEntry, type BatchPriceSnapshotEntry, type BatchPriceSnapshotsResponse, type BatchTickerResolutionResponse, type CashFlowStatement, type CashFlowStatementsResponse, type ClientOptions, type CompanyFacts, type ConsensusSurprise, type CorporateActionsOpts, DEFAULT_API_BASE_URL, type DataAvailability, type DividendEvent, type DividendsResponse, type EarningsCalendarEvent, type EarningsCalendarOpts, type EarningsCalendarResponse, type EarningsOpts, type EarningsResponse, type EarningsRow, type EarningsTranscript, type EarningsTranscriptParticipant, type EarningsTranscriptSpeakerTurn, type EarningsTranscriptsOpts, type EarningsTranscriptsResponse, type FilingExhibit, type FilingItemSection, type FilingItemsOpts, type FilingItemsResponse, type FilingMetadata, type FilingsOpts, type FilingsResponse, type FinancialMetric, type FinancialMetricsOpts, type FinancialMetricsResponse, type FinancialMetricsSnapshotResponse, type FinancialOpts, type FinancialsResponse, type GeneralOverviewFinancials, type GeneralOverviewNews, type GeneralOverviewOpts, type GeneralOverviewPriceSnapshot, type GeneralOverviewResponse, type GlobalInterestRateObservation, type GlobalInterestRateSeries, type GlobalInterestRatesOpts, type GlobalInterestRatesResponse, type IncomeStatement, type IncomeStatementsResponse, type InsiderTrade, type InsiderTradesOpts, type InsiderTradesResponse, type InstitutionalOwnershipEntry, type InstitutionalOwnershipOpts, type InstitutionalOwnershipResponse, type InvestorPortfolioHolding, type InvestorPortfolioInvestor, type InvestorPortfolioOpts, type InvestorPortfolioResponse, type InvestorPortfolioSummary, type KeyStatistics, type KeyStatisticsResponse, type NewsArticle, type NewsOpts, type NewsResponse, type NewsSearchArticle, type NewsSearchOpts, type NewsSearchResponse, type OptionalFinancialQueryOpts, type PriceBar, type PriceHistoryResponse, type PriceOpts, type PriceSnapshot, type PriceSnapshotResponse, type QuarterlyHighlightsMetric, type QuarterlyHighlightsOpts, type QuarterlyHighlightsPayload, type QuarterlyHighlightsResponse, type RateLimitAnnotatedResponse, type RateLimitInfo, type ReadMetadata, type ReportPeriodFilterOpts, type ScreenerFieldMetadata, type ScreenerFieldsResponse, type ScreenerRequest, type ScreenerResponse, type ScreenerResultRow, type SegmentedRevenueItem, type SegmentedRevenuePeriod, type SegmentedRevenuesOpts, type SegmentedRevenuesResponse, type SnakeCase, type SplitEvent, type SplitsResponse, type TickerResolutionCandidate, type TickerResolutionConfidence, type TickerResolutionIntent, type TickerResolutionMatchKind, type TickerResolutionRelationship, type TickerResolutionResponse, type TickerResolutionStatus, TnFinancialData, type UsEconomicIndicatorSeries, type UsEconomicIndicatorsOpts, type UsEconomicIndicatorsResponse, type UsInterestRateSeries, type UsInterestRatesOpts, type UsInterestRatesResponse };
@@ -272,6 +272,12 @@ var TnFinancialData = class {
272
272
  `/earnings?${this.buildOptionalFinancialParams(ticker, opts)}`
273
273
  );
274
274
  }
275
+ async getEarningsTranscripts(ticker, opts) {
276
+ const params = new URLSearchParams({ ticker });
277
+ if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
278
+ if (opts?.reportPeriod) params.set("report_period", opts.reportPeriod);
279
+ return this.request(`/earnings/transcripts?${params.toString()}`);
280
+ }
275
281
  async getEarningsCalendar(opts) {
276
282
  const params = this.buildEarningsCalendarParams(opts);
277
283
  return this.request(
@@ -367,12 +373,24 @@ var TnFinancialData = class {
367
373
  return this.request(`/institutional-ownership/investor?${params}`);
368
374
  }
369
375
  async getGlobalInterestRates(opts) {
376
+ const params = this.buildMacroSeriesParams(opts);
377
+ return this.request(`/macro/interest-rates/global?${params}`);
378
+ }
379
+ async getUsInterestRates(opts) {
380
+ const params = this.buildMacroSeriesParams(opts);
381
+ return this.request(`/macro/interest-rates/us?${params}`);
382
+ }
383
+ async getUsEconomicIndicators(opts) {
384
+ const params = this.buildMacroSeriesParams(opts);
385
+ return this.request(`/macro/economic-indicators/us?${params}`);
386
+ }
387
+ buildMacroSeriesParams(opts) {
370
388
  const params = new URLSearchParams();
371
389
  if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
372
390
  if (opts?.startDate) params.set("start_date", opts.startDate);
373
391
  if (opts?.endDate) params.set("end_date", opts.endDate);
374
392
  if (opts?.series && opts.series.length > 0) params.set("series", opts.series.join(","));
375
- return this.request(`/macro/interest-rates/global?${params}`);
393
+ return params;
376
394
  }
377
395
  async getAnalystEstimates(ticker) {
378
396
  return this.request(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tn-financial-data",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Hosted US equity financial data and SEC filings CLI and client for agents",
5
5
  "keywords": [
6
6
  "agent",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: tn-financial-data
3
- description: Use this skill first for covered US equity data questions and covered-universe screens. Query server-backed company facts, general overviews, financials, analyst estimates, segmented revenues, prices, corporate actions, news, insider trades, institutional ownership, investor 13F portfolios, raw SEC filings, and global interest rates through the tn-financial-data CLI.
3
+ description: Use this skill first for covered US equity data questions and covered-universe screens. Query server-backed company facts, general overviews, financials, analyst estimates, segmented revenues, prices, corporate actions, news, insider trades, institutional ownership, investor 13F portfolios, raw SEC filings, and global or US macro series through the tn-financial-data CLI.
4
4
  license: MIT
5
5
  ---
6
6
 
@@ -29,7 +29,7 @@ Covered reads include:
29
29
  - insider trades, issuer-level institutional ownership, and investor `13F` portfolios
30
30
  - SEC filing discovery plus bounded raw filing text for `10-K`, `10-Q`, and `8-K`
31
31
  - covered-universe screening and ranking
32
- - curated global central-bank and rate series
32
+ - stored global central-bank history plus FRED-backed US macro history through the hosted `tn-financial-data` API
33
33
 
34
34
  ## Routing Principles
35
35
 
@@ -70,6 +70,7 @@ tn-financial-data query financials --ticker AAPL --period annual --statement all
70
70
  tn-financial-data query financial-metrics --ticker AAPL --period annual --limit 4
71
71
  tn-financial-data query financial-metrics-snapshot --ticker AAPL
72
72
  tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8
73
+ tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
73
74
  tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
74
75
  tn-financial-data query quarterly-highlights --ticker AAPL
75
76
  tn-financial-data query filings --ticker AAPL --filing-type 8-K --limit 10
@@ -87,6 +88,8 @@ tn-financial-data query investor-portfolio --investor vanguard --limit 20
87
88
  tn-financial-data query screen-fields
88
89
  tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10
89
90
  tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
91
+ tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000
92
+ tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120
90
93
  ```
91
94
 
92
95
  Practical defaults:
@@ -94,13 +97,15 @@ Practical defaults:
94
97
  - Use `general-overview` for broad one-ticker prompts like “what’s up with NVDA?”
95
98
  - Use `resolve-ticker` first when the user gives a company name, brand name, or broad one-company phrase without a trusted symbol
96
99
  - Repeat `--query` on `resolve-ticker` when the user gives multiple ambiguous company names and you need to normalize them before batch comparisons
100
+ - Use `earnings-transcripts` when the user wants call participants, speaker order, or analyst-question structure rather than transcript prose
97
101
  - Use `earnings-calendar` for upcoming date-window questions like “what earnings are coming up this week?” or “show me the next AAPL and MSFT earnings dates”
98
102
  - Use `quarterly-highlights` first for Apple product mix, Greater China, Meta ad KPIs, Amazon segment profitability, and Tesla services-and-other or free-cash-flow prompts
99
103
  - Use `filings` plus `filing-items` when the user explicitly asks for an SEC filing, `8-K`, `10-K`, `10-Q`, or raw filing text
100
104
  - Do not start Apple product-mix prompts with `segmented-revenues`; that surface only exposes broad `Product` and `Service` rollups, while `quarterly-highlights` carries the product-line fields the prompt usually wants
101
105
  - Use `financials`, `financial-metrics`, `earnings`, `analyst-estimates`, `segmented-revenues`, `prices`, `snapshot`, `dividends`, `splits`, or `news` when the user asks for a specific slice
102
106
  - Use `investor-portfolio` for prompts like “What does Vanguard hold?” or “Show Berkshire’s latest 13F portfolio.”
103
- - Use `global-rates` for central-bank and rate-comparison prompts
107
+ - Use `global-rates` for central-bank and cross-country rate-comparison prompts
108
+ - Use `us-rates` and `us-economic-indicators` for FRED-backed US macro history such as Treasury yields, Fed funds, CPI, GDP, and unemployment
104
109
 
105
110
  ## References
106
111
 
@@ -19,6 +19,7 @@ Auth rule:
19
19
  - for compare prompts, try to use matching command families and comparable periods across the names
20
20
  - for investor-filer prompts like "what does Vanguard hold?", start with `investor-portfolio`
21
21
  - for central-bank / global-rate comparisons, start with `global-rates`
22
+ - for US Treasury, Fed, CPI, GDP, or unemployment prompts, start with `us-rates` or `us-economic-indicators`
22
23
 
23
24
  ## Query Commands
24
25
 
@@ -136,6 +137,19 @@ Meaning:
136
137
  - if no matching quarterly statement exists for a reported quarter, the row still appears but statement-derived fields can be `null`
137
138
  - do not use Yahoo key-statistics growth fields as a substitute for statement-line YoY when the question is about revenue, operating income, net income, or EPS
138
139
 
140
+ Earnings transcripts:
141
+
142
+ ```bash
143
+ tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
144
+ tn-financial-data query earnings-transcripts --ticker AAPL --report-period 2025-12-27
145
+ ```
146
+
147
+ Meaning:
148
+ - structured transcript metadata view over stored earnings transcript artifacts
149
+ - returns `headline`, linked `report_period`, `quarter_label`, `published_at`, `call_date`, `question_count`, participant roster, and ordered `speaker_turns`
150
+ - this surface intentionally excludes upstream source provenance fields such as source URL, parser version, and raw payload references
151
+ - use it when the question is about who joined the call, how many analyst questions there were, or the speaking order rather than the full transcript prose
152
+
139
153
  Earnings calendar:
140
154
 
141
155
  ```bash
@@ -332,8 +346,33 @@ tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
332
346
 
333
347
  Meaning:
334
348
  - preferred first read for central-bank and global-rate prompts
349
+ - reads stored macro history from the hosted API, including FRED-backed US series
335
350
  - natural-language mappings include ECB refi, ECB deposit, BOE Sonia, SNB call money, BOJ call money, BOC call money, and RBA 3M
336
351
 
352
+ US rates:
353
+
354
+ ```bash
355
+ tn-financial-data query us-rates --series us_treasury_2y,us_treasury_10y,fed_funds_rate --start-date 2021-01-01 --end-date 2026-04-01 --limit 2000
356
+ ```
357
+
358
+ Meaning:
359
+ - preferred first read for US Treasury curve and Fed funds prompts
360
+ - reads stored macro history from the hosted API, including FRED-backed US series
361
+ - returns historical observations plus a `latest` point per series
362
+ - natural-language aliases include `2y`, `5y`, `10y`, `30y`, and `fedfunds`
363
+
364
+ US economic indicators:
365
+
366
+ ```bash
367
+ tn-financial-data query us-economic-indicators --series us_cpi,us_unemployment,us_gdp --start-date 2021-01-01 --end-date 2026-04-01 --limit 120
368
+ ```
369
+
370
+ Meaning:
371
+ - preferred first read for US CPI, GDP, and unemployment prompts
372
+ - reads stored macro history from the hosted API
373
+ - raw series only: `us_cpi` is the CPI index level, not a computed YoY inflation transform
374
+ - natural-language aliases include `cpi`, `gdp`, and `unemployment`
375
+
337
376
  Shared query options:
338
377
  - `--api-key`
339
378
  - `--base-url`