tn-financial-data 0.3.1 → 0.4.1
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 +30 -1
- package/dist/cli.js +319 -15
- package/dist/client/index.d.ts +85 -2
- package/dist/client/index.js +19 -1
- package/package.json +1 -1
- package/skills/tn-financial-data/SKILL.md +14 -4
- package/skills/tn-financial-data/agents/claude.md +1 -1
- package/skills/tn-financial-data/agents/openai.yaml +1 -1
- package/skills/tn-financial-data/agents/opencode.md +2 -1
- package/skills/tn-financial-data/references/cli.md +41 -0
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,
|
|
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
|
|
|
@@ -56,6 +57,7 @@ Optional base URL override:
|
|
|
56
57
|
The published CLI reads those values from the current process environment only.
|
|
57
58
|
Use `resolve-ticker` to map company or brand input to supported symbols.
|
|
58
59
|
Treat `available-tickers` as the authoritative support list for exact symbols; do not silently swap an unsupported exact ticker to a different share class.
|
|
60
|
+
`available-tickers` is the equity-symbol snapshot only; covered macro series are queried through `global-rates`, `us-rates`, and `us-economic-indicators`.
|
|
59
61
|
|
|
60
62
|
Production default:
|
|
61
63
|
|
|
@@ -71,8 +73,11 @@ tn-financial-data query resolve-ticker --query google --query meta --query nvda
|
|
|
71
73
|
tn-financial-data query available-tickers
|
|
72
74
|
tn-financial-data query snapshot --tickers AAPL,MSFT,NVDA
|
|
73
75
|
tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual
|
|
76
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
|
|
74
77
|
tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
|
|
75
78
|
tn-financial-data query dividends --ticker AAPL --limit 10
|
|
79
|
+
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
|
|
80
|
+
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
81
|
tn-financial-data query company --ticker AAPL
|
|
77
82
|
tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10
|
|
78
83
|
tn-financial-data query filings --ticker AAPL --filing-type 8-K --limit 5
|
|
@@ -86,6 +91,11 @@ Ownership semantics:
|
|
|
86
91
|
- `institutional-ownership` is issuer-centric: ticker to holders
|
|
87
92
|
- `investor-portfolio` is investor-centric: filer to holdings via SEC 13F
|
|
88
93
|
|
|
94
|
+
Macro note:
|
|
95
|
+
|
|
96
|
+
- `us_cpi` is the raw CPI index level, not a precomputed inflation transform
|
|
97
|
+
- For MoM or YoY CPI prompts, derive the percentage change from adjacent observations returned by `us-economic-indicators`
|
|
98
|
+
|
|
89
99
|
## Commands
|
|
90
100
|
|
|
91
101
|
| Command | Description |
|
|
@@ -103,10 +113,13 @@ tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --pe
|
|
|
103
113
|
tn-financial-data query financials --ticker AAPL --period annual --statement all
|
|
104
114
|
tn-financial-data query financial-metrics --ticker AAPL --period annual --limit 4
|
|
105
115
|
tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8
|
|
116
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
|
|
106
117
|
tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
|
|
107
118
|
tn-financial-data query quarterly-highlights --ticker AAPL
|
|
108
119
|
tn-financial-data query dividends --ticker AAPL --limit 10
|
|
109
120
|
tn-financial-data query splits --ticker AAPL --limit 10
|
|
121
|
+
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
|
|
122
|
+
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
123
|
tn-financial-data query filings --ticker AAPL --filing-type 10-K,10-Q,8-K --limit 10
|
|
111
124
|
tn-financial-data query filing-items --ticker AAPL --accession-number 0000320193-26-000005 --item 2.02 --include-exhibits
|
|
112
125
|
tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31
|
|
@@ -202,6 +215,22 @@ const calendar = await client.getEarningsCalendar({
|
|
|
202
215
|
|
|
203
216
|
console.log(calendar.events.map((row) => `${row.ticker}:${row.event_date_start}`));
|
|
204
217
|
|
|
218
|
+
const transcripts = await client.getEarningsTranscripts({
|
|
219
|
+
ticker: "NVDA",
|
|
220
|
+
limit: 1,
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
console.log(transcripts.transcripts[0]?.quarter_label, transcripts.transcripts[0]?.question_count);
|
|
224
|
+
|
|
225
|
+
const usRates = await client.getUsInterestRates({
|
|
226
|
+
series: ["us_treasury_10y", "fed_funds_rate"],
|
|
227
|
+
startDate: "2021-01-01",
|
|
228
|
+
endDate: "2026-04-01",
|
|
229
|
+
limit: 2000,
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
console.log(usRates.rates.map((row) => `${row.key}:${row.latest?.value}`));
|
|
233
|
+
|
|
205
234
|
const filings = await client.getFilings("AAPL", {
|
|
206
235
|
filingTypes: ["8-K"],
|
|
207
236
|
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
|
|
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
|
|
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",
|
|
@@ -902,7 +929,7 @@ function buildOpenCliDocument() {
|
|
|
902
929
|
commands: [
|
|
903
930
|
{
|
|
904
931
|
name: "available-tickers",
|
|
905
|
-
description: "Fetch the current supported ticker snapshot with financial and news freshness timestamps."
|
|
932
|
+
description: "Fetch the current supported ticker snapshot for the equity universe with financial and news freshness timestamps."
|
|
906
933
|
},
|
|
907
934
|
{
|
|
908
935
|
name: "resolve-ticker",
|
|
@@ -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. Returns raw series levels for client-side MoM or YoY transforms when needed.",
|
|
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 [
|
|
@@ -1983,7 +2180,10 @@ function renderHelp(command, description, options, example) {
|
|
|
1983
2180
|
var QUERY_SUBCOMMAND_HELP = {
|
|
1984
2181
|
"available-tickers": renderHelp(
|
|
1985
2182
|
"available-tickers",
|
|
1986
|
-
[
|
|
2183
|
+
[
|
|
2184
|
+
"List stock tickers currently supported by the hosted read API.",
|
|
2185
|
+
"This is the equity support snapshot only; covered macro series live under global-rates, us-rates, and us-economic-indicators."
|
|
2186
|
+
],
|
|
1987
2187
|
[
|
|
1988
2188
|
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
1989
2189
|
"--base-url <url> API base URL override."
|
|
@@ -2123,6 +2323,20 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2123
2323
|
],
|
|
2124
2324
|
"tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8"
|
|
2125
2325
|
),
|
|
2326
|
+
"earnings-transcripts": renderHelp(
|
|
2327
|
+
"earnings-transcripts",
|
|
2328
|
+
[
|
|
2329
|
+
"Fetch normalized earnings call transcript metadata, participants, and speaker-turn structure for a single ticker."
|
|
2330
|
+
],
|
|
2331
|
+
[
|
|
2332
|
+
"--ticker <symbol> Required. Stock ticker symbol.",
|
|
2333
|
+
"--limit <n> Number of transcript artifacts to return.",
|
|
2334
|
+
"--report-period <date> Exact linked report period (YYYY-MM-DD).",
|
|
2335
|
+
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
2336
|
+
"--base-url <url> API base URL override."
|
|
2337
|
+
],
|
|
2338
|
+
"tn-financial-data query earnings-transcripts --ticker AAPL --limit 4"
|
|
2339
|
+
),
|
|
2126
2340
|
"earnings-calendar": renderHelp(
|
|
2127
2341
|
"earnings-calendar",
|
|
2128
2342
|
[
|
|
@@ -2284,7 +2498,7 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2284
2498
|
),
|
|
2285
2499
|
"global-rates": renderHelp(
|
|
2286
2500
|
"global-rates",
|
|
2287
|
-
["Fetch
|
|
2501
|
+
["Fetch stored global policy and money-market rate history from the hosted API."],
|
|
2288
2502
|
[
|
|
2289
2503
|
"--series <csv> Optional comma-separated series keys.",
|
|
2290
2504
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
@@ -2295,6 +2509,35 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2295
2509
|
],
|
|
2296
2510
|
"tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10"
|
|
2297
2511
|
),
|
|
2512
|
+
"us-rates": renderHelp(
|
|
2513
|
+
"us-rates",
|
|
2514
|
+
["Fetch stored US Treasury and Fed funds history from the hosted API."],
|
|
2515
|
+
[
|
|
2516
|
+
"--series <csv> Optional comma-separated US rates series keys.",
|
|
2517
|
+
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
2518
|
+
"--end-date <date> Optional end date (YYYY-MM-DD).",
|
|
2519
|
+
"--limit <n> Number of observations to return per series.",
|
|
2520
|
+
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
2521
|
+
"--base-url <url> API base URL override."
|
|
2522
|
+
],
|
|
2523
|
+
"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"
|
|
2524
|
+
),
|
|
2525
|
+
"us-economic-indicators": renderHelp(
|
|
2526
|
+
"us-economic-indicators",
|
|
2527
|
+
[
|
|
2528
|
+
"Fetch stored US CPI, GDP, and unemployment history from the hosted API.",
|
|
2529
|
+
"Returns raw series levels; derive MoM or YoY percentage changes from adjacent observations when needed."
|
|
2530
|
+
],
|
|
2531
|
+
[
|
|
2532
|
+
"--series <csv> Optional comma-separated US economic indicator keys.",
|
|
2533
|
+
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
2534
|
+
"--end-date <date> Optional end date (YYYY-MM-DD).",
|
|
2535
|
+
"--limit <n> Number of observations to return per series.",
|
|
2536
|
+
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
2537
|
+
"--base-url <url> API base URL override."
|
|
2538
|
+
],
|
|
2539
|
+
"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"
|
|
2540
|
+
),
|
|
2298
2541
|
"segmented-revenues": renderHelp(
|
|
2299
2542
|
"segmented-revenues",
|
|
2300
2543
|
["Fetch reported segment revenue rows for a single issuer."],
|
|
@@ -2524,6 +2767,17 @@ function buildEarningsCalendarCliOptions(parsed) {
|
|
|
2524
2767
|
}
|
|
2525
2768
|
return options;
|
|
2526
2769
|
}
|
|
2770
|
+
function parseMacroSeriesSelection(value, acceptedValues, normalize) {
|
|
2771
|
+
return value?.split(",").map((item) => item.trim()).filter((item) => item.length > 0).map((item) => {
|
|
2772
|
+
const normalized = normalize(item);
|
|
2773
|
+
if (!normalized) {
|
|
2774
|
+
throw new CliUsageError(
|
|
2775
|
+
`series must be a comma-separated list of: ${acceptedValues.join(", ")}.`
|
|
2776
|
+
);
|
|
2777
|
+
}
|
|
2778
|
+
return normalized;
|
|
2779
|
+
});
|
|
2780
|
+
}
|
|
2527
2781
|
async function handleQuery(parsed, runtime, deps) {
|
|
2528
2782
|
const resource = parsed.positionals[1];
|
|
2529
2783
|
if (!resource) {
|
|
@@ -2702,6 +2956,20 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2702
2956
|
printJson(runtime, await client.getEarningsCalendar(buildEarningsCalendarCliOptions(parsed)));
|
|
2703
2957
|
return 0;
|
|
2704
2958
|
}
|
|
2959
|
+
case "earnings-transcripts": {
|
|
2960
|
+
const ticker = requireOption(parsed, "ticker");
|
|
2961
|
+
const options = {};
|
|
2962
|
+
const limit = getOption(parsed, "limit");
|
|
2963
|
+
const reportPeriod = getOption(parsed, "report-period");
|
|
2964
|
+
if (limit) {
|
|
2965
|
+
options.limit = parsePositiveInt(limit, "limit");
|
|
2966
|
+
}
|
|
2967
|
+
if (reportPeriod) {
|
|
2968
|
+
options.reportPeriod = reportPeriod;
|
|
2969
|
+
}
|
|
2970
|
+
printJson(runtime, await client.getEarningsTranscripts(ticker, options));
|
|
2971
|
+
return 0;
|
|
2972
|
+
}
|
|
2705
2973
|
case "quarterly-highlights": {
|
|
2706
2974
|
const ticker = requireOption(parsed, "ticker");
|
|
2707
2975
|
const options = {};
|
|
@@ -2848,15 +3116,11 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2848
3116
|
}
|
|
2849
3117
|
case "global-rates": {
|
|
2850
3118
|
const limit = getOption(parsed, "limit");
|
|
2851
|
-
const series =
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
);
|
|
2857
|
-
}
|
|
2858
|
-
return normalized;
|
|
2859
|
-
});
|
|
3119
|
+
const series = parseMacroSeriesSelection(
|
|
3120
|
+
getOption(parsed, "series"),
|
|
3121
|
+
GLOBAL_INTEREST_RATE_SERIES_KEYS,
|
|
3122
|
+
normalizeGlobalInterestRateSeriesKey
|
|
3123
|
+
);
|
|
2860
3124
|
printJson(
|
|
2861
3125
|
runtime,
|
|
2862
3126
|
await client.getGlobalInterestRates({
|
|
@@ -2868,6 +3132,46 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2868
3132
|
);
|
|
2869
3133
|
return 0;
|
|
2870
3134
|
}
|
|
3135
|
+
case "us-rates": {
|
|
3136
|
+
const limit = getOption(parsed, "limit");
|
|
3137
|
+
const series = parseMacroSeriesSelection(
|
|
3138
|
+
getOption(parsed, "series"),
|
|
3139
|
+
US_INTEREST_RATE_SERIES_KEYS,
|
|
3140
|
+
normalizeUsInterestRateSeriesKey
|
|
3141
|
+
);
|
|
3142
|
+
const options = {
|
|
3143
|
+
startDate: getOption(parsed, "start-date"),
|
|
3144
|
+
endDate: getOption(parsed, "end-date")
|
|
3145
|
+
};
|
|
3146
|
+
if (limit) {
|
|
3147
|
+
options.limit = parsePositiveInt(limit, "limit");
|
|
3148
|
+
}
|
|
3149
|
+
if (series && series.length > 0) {
|
|
3150
|
+
options.series = series;
|
|
3151
|
+
}
|
|
3152
|
+
printJson(runtime, await client.getUsInterestRates(options));
|
|
3153
|
+
return 0;
|
|
3154
|
+
}
|
|
3155
|
+
case "us-economic-indicators": {
|
|
3156
|
+
const limit = getOption(parsed, "limit");
|
|
3157
|
+
const series = parseMacroSeriesSelection(
|
|
3158
|
+
getOption(parsed, "series"),
|
|
3159
|
+
US_ECONOMIC_INDICATOR_SERIES_KEYS,
|
|
3160
|
+
normalizeUsEconomicIndicatorSeriesKey
|
|
3161
|
+
);
|
|
3162
|
+
const options = {
|
|
3163
|
+
startDate: getOption(parsed, "start-date"),
|
|
3164
|
+
endDate: getOption(parsed, "end-date")
|
|
3165
|
+
};
|
|
3166
|
+
if (limit) {
|
|
3167
|
+
options.limit = parsePositiveInt(limit, "limit");
|
|
3168
|
+
}
|
|
3169
|
+
if (series && series.length > 0) {
|
|
3170
|
+
options.series = series;
|
|
3171
|
+
}
|
|
3172
|
+
printJson(runtime, await client.getUsEconomicIndicators(options));
|
|
3173
|
+
return 0;
|
|
3174
|
+
}
|
|
2871
3175
|
case "segmented-revenues": {
|
|
2872
3176
|
const ticker = requireOption(parsed, "ticker");
|
|
2873
3177
|
const period = assertAcceptedValue(
|
package/dist/client/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/client/index.js
CHANGED
|
@@ -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
|
|
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
|
-
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
|
|
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
|
-
-
|
|
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
|
|
|
@@ -39,11 +39,13 @@ Covered reads include:
|
|
|
39
39
|
- Use `segmented-revenues` when the user explicitly wants XBRL dimension tables, additive segment rows, or issuer coverage that is outside the narrower `quarterly-highlights` surface.
|
|
40
40
|
- For raw SEC filing prompts, use `filings` to find the filing and accession number first, then use `filing-items` for specific sections or bounded raw text. Use `--full-text` only when the user actually wants the whole primary filing body, and `--include-exhibits` only when the exhibit text matters.
|
|
41
41
|
- For covered-universe filter or ranking questions, use `screen-fields` and `screen`.
|
|
42
|
+
- For macro prompts, do not use `available-tickers` as the coverage check. Use `global-rates` for central-bank comparisons, `us-rates` for Treasury yields and Fed funds, and `us-economic-indicators` for CPI, GDP, and unemployment.
|
|
42
43
|
- Keep issuer-centric ownership (`institutional-ownership`) separate from investor-centric portfolio lookup (`investor-portfolio`).
|
|
43
44
|
- If the company mapping is ambiguous or the prompt names a company without a trusted ticker, use `resolve-ticker` before guessing a ticker.
|
|
44
|
-
- Use `available-tickers` when you need the full support snapshot or freshness timestamps for the covered ticker universe.
|
|
45
|
+
- Use `available-tickers` when you need the full support snapshot or freshness timestamps for the covered equity ticker universe. It does not enumerate covered macro series.
|
|
45
46
|
- Treat an exact user-supplied ticker as exact. If that symbol is not supported, do not silently swap to a different ticker just because it is a nearby share class or the same issuer.
|
|
46
47
|
- If only a different supported line exists for the issuer, call out that mismatch explicitly before using it. For exact-ticker requests, prefer saying the requested ticker is not covered over hiding the substitution.
|
|
48
|
+
- For CPI or inflation-style MoM / YoY prompts, fetch the raw `us_cpi` series and compute the percentage change from adjacent observations instead of treating the series as unsupported.
|
|
47
49
|
- Only leave this skill when the user explicitly wants outside sources or the stored dataset does not cover the question.
|
|
48
50
|
|
|
49
51
|
## Answer Principles
|
|
@@ -54,6 +56,7 @@ Covered reads include:
|
|
|
54
56
|
- Explain what the important numbers or developments mean for the business, valuation, sentiment, or risk.
|
|
55
57
|
- Prefer clear, structured outputs when they improve readability.
|
|
56
58
|
- When the prompt asks for a table plus one short bullet, keep the bullet anchored to returned fields and direction-of-change; do not invent causal drivers that are not present in the fetched data.
|
|
59
|
+
- For raw macro series like `us_cpi`, say when MoM or YoY changes are derived from adjacent observations rather than returned directly by the API.
|
|
57
60
|
- Never expose tool-use narration, internal process notes, or bracketed meta commentary in the user-facing answer.
|
|
58
61
|
|
|
59
62
|
## Common CLI Reads
|
|
@@ -70,6 +73,7 @@ tn-financial-data query financials --ticker AAPL --period annual --statement all
|
|
|
70
73
|
tn-financial-data query financial-metrics --ticker AAPL --period annual --limit 4
|
|
71
74
|
tn-financial-data query financial-metrics-snapshot --ticker AAPL
|
|
72
75
|
tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8
|
|
76
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
|
|
73
77
|
tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
|
|
74
78
|
tn-financial-data query quarterly-highlights --ticker AAPL
|
|
75
79
|
tn-financial-data query filings --ticker AAPL --filing-type 8-K --limit 10
|
|
@@ -87,6 +91,8 @@ tn-financial-data query investor-portfolio --investor vanguard --limit 20
|
|
|
87
91
|
tn-financial-data query screen-fields
|
|
88
92
|
tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10
|
|
89
93
|
tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
94
|
+
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
|
|
95
|
+
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
96
|
```
|
|
91
97
|
|
|
92
98
|
Practical defaults:
|
|
@@ -94,13 +100,17 @@ Practical defaults:
|
|
|
94
100
|
- Use `general-overview` for broad one-ticker prompts like “what’s up with NVDA?”
|
|
95
101
|
- Use `resolve-ticker` first when the user gives a company name, brand name, or broad one-company phrase without a trusted symbol
|
|
96
102
|
- Repeat `--query` on `resolve-ticker` when the user gives multiple ambiguous company names and you need to normalize them before batch comparisons
|
|
103
|
+
- Use `earnings-transcripts` when the user wants call participants, speaker order, or analyst-question structure rather than transcript prose
|
|
97
104
|
- 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
105
|
- 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
106
|
- 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
107
|
- 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
108
|
- Use `financials`, `financial-metrics`, `earnings`, `analyst-estimates`, `segmented-revenues`, `prices`, `snapshot`, `dividends`, `splits`, or `news` when the user asks for a specific slice
|
|
102
109
|
- 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
|
|
110
|
+
- Use `global-rates` for central-bank and cross-country rate-comparison prompts
|
|
111
|
+
- Use `us-rates` and `us-economic-indicators` for FRED-backed US macro history such as Treasury yields, Fed funds, CPI, GDP, and unemployment
|
|
112
|
+
- `available-tickers` is the equity-only support snapshot; do not use it as a macro coverage check
|
|
113
|
+
- For MoM or YoY CPI prompts, fetch `us-economic-indicators` and compute the percentage change from adjacent `us_cpi` observations
|
|
104
114
|
|
|
105
115
|
## References
|
|
106
116
|
|
|
@@ -5,4 +5,4 @@ Canonical instructions live in [../SKILL.md](../SKILL.md).
|
|
|
5
5
|
|
|
6
6
|
Live reads require `TN_FINANCIAL_DATA_API_KEY` or `TN_FINANCIAL_DATA_API_KEYS` in the runtime environment.
|
|
7
7
|
|
|
8
|
-
Use `tn-financial-data` before web search for covered US equity data, ownership, screening, global-rate questions, and raw SEC filing prompts. Start broad one-company prompts with the overview path. For narrower asks, choose the narrower covered read directly. 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. Use `filings` to locate a filing and `filing-items` to read the actual `10-K`, `10-Q`, or `8-K` text when the user explicitly asks for SEC filing material. Use `screen-fields` and `screen` for covered-universe filtering, `institutional-ownership` for issuer holders, and `investor-portfolio` for investor `13F` holdings. Resolve ambiguous company names with `resolve-ticker`, use `available-tickers` for the support snapshot, and treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class. Prefer synthesized, structured answers over raw dumps.
|
|
8
|
+
Use `tn-financial-data` before web search for covered US equity data, ownership, screening, global-rate questions, covered US macro prompts, and raw SEC filing prompts. Start broad one-company prompts with the overview path. For narrower asks, choose the narrower covered read directly. 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. Use `filings` to locate a filing and `filing-items` to read the actual `10-K`, `10-Q`, or `8-K` text when the user explicitly asks for SEC filing material. Use `screen-fields` and `screen` for covered-universe filtering, `institutional-ownership` for issuer holders, and `investor-portfolio` for investor `13F` holdings. Resolve ambiguous company names with `resolve-ticker`, use `available-tickers` for the equity support snapshot only, use `global-rates`, `us-rates`, or `us-economic-indicators` for covered macro prompts, and treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class. Prefer synthesized, structured answers over raw dumps.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "TN Financial Data"
|
|
3
3
|
short_description: "Use this first for covered US equity data and screening questions"
|
|
4
|
-
default_prompt: "Use $tn-financial-data before web search for covered US equity data, ownership, screening, global-rate questions, and raw SEC filing requests. Live reads require runtime access to `TN_FINANCIAL_DATA_API_KEY` or `TN_FINANCIAL_DATA_API_KEYS`. Start broad one-company prompts with the overview path, choose narrower covered reads when the ask is specific, use `filings` plus `filing-items` for explicit `10-K`, `10-Q`, or `8-K` prompts, resolve ambiguous names with `resolve-ticker`, use `available-tickers` for the support snapshot, treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class, and keep answers synthesized, structured, and user-facing."
|
|
4
|
+
default_prompt: "Use $tn-financial-data before web search for covered US equity data, ownership, screening, global-rate questions, covered US macro prompts, and raw SEC filing requests. Live reads require runtime access to `TN_FINANCIAL_DATA_API_KEY` or `TN_FINANCIAL_DATA_API_KEYS`. Start broad one-company prompts with the overview path, choose narrower covered reads when the ask is specific, use `filings` plus `filing-items` for explicit `10-K`, `10-Q`, or `8-K` prompts, resolve ambiguous names with `resolve-ticker`, use `available-tickers` for the equity support snapshot only, route macro prompts to `global-rates`, `us-rates`, or `us-economic-indicators`, treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class, and keep answers synthesized, structured, and user-facing. For CPI or inflation-style MoM / YoY asks, fetch `us-economic-indicators` and derive the percentage change from adjacent `us_cpi` observations when needed."
|
|
5
5
|
|
|
6
6
|
policy:
|
|
7
7
|
allow_implicit_invocation: true
|
|
@@ -5,7 +5,8 @@ Canonical instructions live in [../SKILL.md](../SKILL.md).
|
|
|
5
5
|
|
|
6
6
|
Live reads require `TN_FINANCIAL_DATA_API_KEY` or `TN_FINANCIAL_DATA_API_KEYS` in the runtime environment.
|
|
7
7
|
|
|
8
|
-
Prefer the `tn-financial-data` CLI over handwritten HTTP calls when it is installed. Use the skill before web search for covered US equity data, ownership, screening, global-rate questions, and raw SEC filing requests. For broad one-company prompts, start with the overview path. For narrower asks, choose the matching narrow read directly. 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. Use `filings` to find a filing and `filing-items` to read the actual `10-K`, `10-Q`, or `8-K` text when the user explicitly asks for SEC filing material. Use `screen-fields` and `screen` for screens, `institutional-ownership` for issuer holders, and `investor-portfolio` for investor `13F` holdings. Resolve ambiguous company names with `resolve-ticker`, use `available-tickers` for the support snapshot, treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class, and keep answers structured, synthesized, and user-facing.
|
|
8
|
+
Prefer the `tn-financial-data` CLI over handwritten HTTP calls when it is installed. Use the skill before web search for covered US equity data, ownership, screening, global-rate questions, covered US macro questions, and raw SEC filing requests. For broad one-company prompts, start with the overview path. For narrower asks, choose the matching narrow read directly. 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. Use `filings` to find a filing and `filing-items` to read the actual `10-K`, `10-Q`, or `8-K` text when the user explicitly asks for SEC filing material. Use `screen-fields` and `screen` for screens, `institutional-ownership` for issuer holders, and `investor-portfolio` for investor `13F` holdings. Resolve ambiguous company names with `resolve-ticker`, use `available-tickers` for the equity support snapshot only, use `global-rates`, `us-rates`, or `us-economic-indicators` for covered macro prompts, treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class, and keep answers structured, synthesized, and user-facing.
|
|
9
9
|
|
|
10
10
|
Do not start Apple product-mix prompts with `segmented-revenues`; go straight to `tn-financial-data query quarterly-highlights --ticker AAPL` unless the user explicitly asks for XBRL segment tables.
|
|
11
|
+
For CPI or inflation-style MoM / YoY prompts, fetch `us-economic-indicators` and derive the percentage change from adjacent `us_cpi` observations instead of claiming the series is unsupported.
|
|
11
12
|
For prompts that ask for a table plus one short bullet, keep the bullet descriptive and grounded in the fetched fields. Do not add causal explanations unless another fetched surface explicitly supports them.
|
|
@@ -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
|
|
|
@@ -49,6 +50,7 @@ Use this to fetch the current supported ticker snapshot from the API. It returns
|
|
|
49
50
|
|
|
50
51
|
Support rule:
|
|
51
52
|
- treat this list as the package's authoritative support snapshot
|
|
53
|
+
- this snapshot is equity-only; covered macro series are queried separately through `global-rates`, `us-rates`, and `us-economic-indicators`
|
|
52
54
|
- if the user asks for an exact ticker that is not in this list, do not silently substitute another ticker or share class
|
|
53
55
|
- if you intentionally continue with a different supported line for the same issuer, make that mismatch explicit to the user
|
|
54
56
|
|
|
@@ -136,6 +138,19 @@ Meaning:
|
|
|
136
138
|
- if no matching quarterly statement exists for a reported quarter, the row still appears but statement-derived fields can be `null`
|
|
137
139
|
- 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
140
|
|
|
141
|
+
Earnings transcripts:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
|
|
145
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --report-period 2025-12-27
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Meaning:
|
|
149
|
+
- structured transcript metadata view over stored earnings transcript artifacts
|
|
150
|
+
- returns `headline`, linked `report_period`, `quarter_label`, `published_at`, `call_date`, `question_count`, participant roster, and ordered `speaker_turns`
|
|
151
|
+
- this surface intentionally excludes upstream source provenance fields such as source URL, parser version, and raw payload references
|
|
152
|
+
- 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
|
|
153
|
+
|
|
139
154
|
Earnings calendar:
|
|
140
155
|
|
|
141
156
|
```bash
|
|
@@ -332,8 +347,34 @@ tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
|
332
347
|
|
|
333
348
|
Meaning:
|
|
334
349
|
- preferred first read for central-bank and global-rate prompts
|
|
350
|
+
- reads stored macro history from the hosted API, including FRED-backed US series
|
|
335
351
|
- natural-language mappings include ECB refi, ECB deposit, BOE Sonia, SNB call money, BOJ call money, BOC call money, and RBA 3M
|
|
336
352
|
|
|
353
|
+
US rates:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
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
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
Meaning:
|
|
360
|
+
- preferred first read for US Treasury curve and Fed funds prompts
|
|
361
|
+
- reads stored macro history from the hosted API, including FRED-backed US series
|
|
362
|
+
- returns historical observations plus a `latest` point per series
|
|
363
|
+
- natural-language aliases include `2y`, `5y`, `10y`, `30y`, and `fedfunds`
|
|
364
|
+
|
|
365
|
+
US economic indicators:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
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
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Meaning:
|
|
372
|
+
- preferred first read for US CPI, GDP, and unemployment prompts
|
|
373
|
+
- reads stored macro history from the hosted API
|
|
374
|
+
- raw series only: `us_cpi` is the CPI index level, not a computed YoY inflation transform
|
|
375
|
+
- for MoM or YoY CPI prompts, compute the percentage change from adjacent observations and say that the transform is derived from the raw series
|
|
376
|
+
- natural-language aliases include `cpi`, `gdp`, and `unemployment`
|
|
377
|
+
|
|
337
378
|
Shared query options:
|
|
338
379
|
- `--api-key`
|
|
339
380
|
- `--base-url`
|