tn-financial-data 0.3.0 → 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 +36 -1
- package/dist/cli.js +428 -18
- package/dist/client/index.d.ts +108 -2
- package/dist/client/index.js +34 -6
- package/package.json +1 -1
- package/skills/tn-financial-data/SKILL.md +8 -3
- package/skills/tn-financial-data/references/cli.md +53 -0
package/README.md
CHANGED
|
@@ -25,13 +25,15 @@ 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
|
+
- Cross-ticker news search over article title, summary, and body text with ticker, provider, publisher, and date filters
|
|
31
32
|
- Agent-friendly CLI with clean error output, scoped subcommand help, and self-description via `tn-financial-data describe opencli`
|
|
32
33
|
- Packaged skill bundle for Claude and OpenCode installs
|
|
33
34
|
- Typed TypeScript client from the root package export
|
|
34
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`
|
|
35
37
|
|
|
36
38
|
## Installation
|
|
37
39
|
|
|
@@ -70,9 +72,13 @@ tn-financial-data query resolve-ticker --query google --query meta --query nvda
|
|
|
70
72
|
tn-financial-data query available-tickers
|
|
71
73
|
tn-financial-data query snapshot --tickers AAPL,MSFT,NVDA
|
|
72
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
|
|
73
76
|
tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
|
|
74
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
|
|
75
80
|
tn-financial-data query company --ticker AAPL
|
|
81
|
+
tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10
|
|
76
82
|
tn-financial-data query filings --ticker AAPL --filing-type 8-K --limit 5
|
|
77
83
|
tn-financial-data query general-overview --ticker AAPL --period quarterly --financial-limit 4 --news-limit 5
|
|
78
84
|
tn-financial-data skill install --tool claude
|
|
@@ -101,13 +107,18 @@ tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --pe
|
|
|
101
107
|
tn-financial-data query financials --ticker AAPL --period annual --statement all
|
|
102
108
|
tn-financial-data query financial-metrics --ticker AAPL --period annual --limit 4
|
|
103
109
|
tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8
|
|
110
|
+
tn-financial-data query earnings-transcripts --ticker AAPL --limit 4
|
|
104
111
|
tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16
|
|
105
112
|
tn-financial-data query quarterly-highlights --ticker AAPL
|
|
106
113
|
tn-financial-data query dividends --ticker AAPL --limit 10
|
|
107
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
|
|
108
117
|
tn-financial-data query filings --ticker AAPL --filing-type 10-K,10-Q,8-K --limit 10
|
|
109
118
|
tn-financial-data query filing-items --ticker AAPL --accession-number 0000320193-26-000005 --item 2.02 --include-exhibits
|
|
110
119
|
tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31
|
|
120
|
+
tn-financial-data query news --ticker AAPL --limit 10
|
|
121
|
+
tn-financial-data query news-search --query "AI data center" --provider alpaca --limit 10
|
|
111
122
|
tn-financial-data query institutional-ownership --ticker AAPL --limit 20
|
|
112
123
|
tn-financial-data query investor-portfolio --investor vanguard --limit 20
|
|
113
124
|
tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
@@ -198,6 +209,22 @@ const calendar = await client.getEarningsCalendar({
|
|
|
198
209
|
|
|
199
210
|
console.log(calendar.events.map((row) => `${row.ticker}:${row.event_date_start}`));
|
|
200
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
|
+
|
|
201
228
|
const filings = await client.getFilings("AAPL", {
|
|
202
229
|
filingTypes: ["8-K"],
|
|
203
230
|
limit: 3,
|
|
@@ -205,6 +232,14 @@ const filings = await client.getFilings("AAPL", {
|
|
|
205
232
|
|
|
206
233
|
console.log(filings.filings[0]?.accession_number);
|
|
207
234
|
|
|
235
|
+
const news = await client.searchNews("AI data center", {
|
|
236
|
+
ticker: "NVDA",
|
|
237
|
+
provider: "alpaca",
|
|
238
|
+
limit: 5,
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
console.log(news.news[0]?.title, news.count);
|
|
242
|
+
|
|
208
243
|
const filingItems = await client.getFilingItems("AAPL", {
|
|
209
244
|
accessionNumber: "0000320193-26-000005",
|
|
210
245
|
filingType: "8-K",
|
package/dist/cli.js
CHANGED
|
@@ -202,6 +202,13 @@ var TnFinancialData = class {
|
|
|
202
202
|
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
203
203
|
return params.toString();
|
|
204
204
|
}
|
|
205
|
+
buildNewsParams(params, opts) {
|
|
206
|
+
if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
|
|
207
|
+
if (opts?.startDate) params.set("start_date", opts.startDate);
|
|
208
|
+
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
209
|
+
if (opts?.publisher) params.set("publisher", opts.publisher);
|
|
210
|
+
return params.toString();
|
|
211
|
+
}
|
|
205
212
|
buildFilingsParams(ticker, opts) {
|
|
206
213
|
const params = new URLSearchParams({ ticker });
|
|
207
214
|
this.appendLimitParam(params, opts?.limit);
|
|
@@ -267,6 +274,12 @@ var TnFinancialData = class {
|
|
|
267
274
|
`/earnings?${this.buildOptionalFinancialParams(ticker, opts)}`
|
|
268
275
|
);
|
|
269
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
|
+
}
|
|
270
283
|
async getEarningsCalendar(opts) {
|
|
271
284
|
const params = this.buildEarningsCalendarParams(opts);
|
|
272
285
|
return this.request(
|
|
@@ -317,11 +330,14 @@ var TnFinancialData = class {
|
|
|
317
330
|
}
|
|
318
331
|
async getNews(ticker, opts) {
|
|
319
332
|
const params = new URLSearchParams({ ticker });
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
333
|
+
return this.request(`/news?${this.buildNewsParams(params, opts)}`);
|
|
334
|
+
}
|
|
335
|
+
async searchNews(query, opts) {
|
|
336
|
+
const params = new URLSearchParams({ q: query });
|
|
337
|
+
if (opts?.ticker) params.set("ticker", opts.ticker);
|
|
338
|
+
if (opts?.offset !== void 0) params.set("offset", String(opts.offset));
|
|
339
|
+
if (opts?.provider) params.set("provider", opts.provider);
|
|
340
|
+
return this.request(`/news/search?${this.buildNewsParams(params, opts)}`);
|
|
325
341
|
}
|
|
326
342
|
async getDividends(ticker, opts) {
|
|
327
343
|
return this.request(
|
|
@@ -359,12 +375,24 @@ var TnFinancialData = class {
|
|
|
359
375
|
return this.request(`/institutional-ownership/investor?${params}`);
|
|
360
376
|
}
|
|
361
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) {
|
|
362
390
|
const params = new URLSearchParams();
|
|
363
391
|
if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
|
|
364
392
|
if (opts?.startDate) params.set("start_date", opts.startDate);
|
|
365
393
|
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
366
394
|
if (opts?.series && opts.series.length > 0) params.set("series", opts.series.join(","));
|
|
367
|
-
return
|
|
395
|
+
return params;
|
|
368
396
|
}
|
|
369
397
|
async getAnalystEstimates(ticker) {
|
|
370
398
|
return this.request(
|
|
@@ -551,6 +579,13 @@ function parsePositiveInt(value, optionName) {
|
|
|
551
579
|
}
|
|
552
580
|
return parsed;
|
|
553
581
|
}
|
|
582
|
+
function parseNonNegativeInt(value, optionName) {
|
|
583
|
+
const parsed = Number.parseInt(value, 10);
|
|
584
|
+
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
585
|
+
throw new CliUsageError(`--${optionName} must be a non-negative integer.`);
|
|
586
|
+
}
|
|
587
|
+
return parsed;
|
|
588
|
+
}
|
|
554
589
|
function parseCsvValues(value, optionName) {
|
|
555
590
|
const parts = value.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
556
591
|
if (parts.length === 0) {
|
|
@@ -649,7 +684,7 @@ function rootHelp() {
|
|
|
649
684
|
"tn-financial-data",
|
|
650
685
|
"",
|
|
651
686
|
"Usage:",
|
|
652
|
-
" 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|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]",
|
|
653
688
|
" tn-financial-data skill <install|print|targets> [--tool claude|opencode]",
|
|
654
689
|
" tn-financial-data describe opencli",
|
|
655
690
|
" tn-financial-data --version",
|
|
@@ -667,16 +702,20 @@ function rootHelp() {
|
|
|
667
702
|
" tn-financial-data query snapshot --tickers AAPL,MSFT,NVDA",
|
|
668
703
|
" tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual",
|
|
669
704
|
" tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8",
|
|
705
|
+
" tn-financial-data query earnings-transcripts --ticker AAPL --limit 4",
|
|
670
706
|
" tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16",
|
|
671
707
|
" tn-financial-data query quarterly-highlights --ticker AAPL",
|
|
672
708
|
" tn-financial-data query analyst-estimates --ticker AAPL",
|
|
673
709
|
" tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31",
|
|
674
710
|
" tn-financial-data query dividends --ticker AAPL --limit 20",
|
|
675
711
|
" tn-financial-data query splits --ticker AAPL --limit 20",
|
|
712
|
+
' tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10',
|
|
676
713
|
" tn-financial-data query insider-trades --ticker AAPL --transaction-code P,S --limit 25",
|
|
677
714
|
" tn-financial-data query institutional-ownership --ticker AAPL --limit 20",
|
|
678
715
|
" tn-financial-data query investor-portfolio --investor vanguard --limit 20",
|
|
679
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",
|
|
680
719
|
' tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10',
|
|
681
720
|
" tn-financial-data skill install --tool opencode",
|
|
682
721
|
" tn-financial-data skill install --tool claude",
|
|
@@ -705,6 +744,7 @@ function queryHelp() {
|
|
|
705
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>]",
|
|
706
745
|
" tn-financial-data query financial-metrics-snapshot (--ticker <symbol> | --tickers <csv>) [--period <annual|quarterly|ttm>] [--api-key <key>] [--base-url <url>]",
|
|
707
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>]",
|
|
708
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>]",
|
|
709
749
|
" tn-financial-data query quarterly-highlights --ticker <symbol> [--report-period <date>] [--api-key <key>] [--base-url <url>]",
|
|
710
750
|
" tn-financial-data query analyst-estimates --ticker <symbol> [--api-key <key>] [--base-url <url>]",
|
|
@@ -713,10 +753,13 @@ function queryHelp() {
|
|
|
713
753
|
" tn-financial-data query dividends --ticker <symbol> [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
714
754
|
" tn-financial-data query splits --ticker <symbol> [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
715
755
|
" tn-financial-data query news --ticker <symbol> [--start-date <date>] [--end-date <date>] [--publisher <name>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
756
|
+
" tn-financial-data query news-search --query <text> [--ticker <symbol>] [--start-date <date>] [--end-date <date>] [--publisher <name>] [--provider <id>] [--limit <n>] [--offset <n>] [--api-key <key>] [--base-url <url>]",
|
|
716
757
|
" tn-financial-data query insider-trades --ticker <symbol> [--start-date <date>] [--end-date <date>] [--reporting-owner-cik <cik>] [--transaction-code <csv>] [--security-type <all|non_derivative|derivative>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
717
758
|
" tn-financial-data query institutional-ownership --ticker <symbol> [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
718
759
|
" tn-financial-data query investor-portfolio (--cik <cik> | --investor <alias>) [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
719
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>]",
|
|
720
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>]",
|
|
721
764
|
' tn-financial-data query screen --filter "field operator value" [--filter "field operator value"] [--limit <n>] [--api-key <key>] [--base-url <url>]',
|
|
722
765
|
" tn-financial-data query screen-fields [--api-key <key>] [--base-url <url>]",
|
|
@@ -780,7 +823,7 @@ function buildOpenCliDocument() {
|
|
|
780
823
|
info: {
|
|
781
824
|
title: "tn-financial-data",
|
|
782
825
|
summary: "Server-backed US equity financial data CLI for agents and operators.",
|
|
783
|
-
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.",
|
|
784
827
|
version,
|
|
785
828
|
license: {
|
|
786
829
|
identifier: "MIT",
|
|
@@ -830,6 +873,7 @@ function buildOpenCliDocument() {
|
|
|
830
873
|
"tn-financial-data query financial-metrics-snapshot --ticker AAPL",
|
|
831
874
|
"tn-financial-data query financial-metrics-snapshot --tickers AAPL,MSFT,NVDA --period annual",
|
|
832
875
|
"tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8",
|
|
876
|
+
"tn-financial-data query earnings-transcripts --ticker AAPL --limit 4",
|
|
833
877
|
"tn-financial-data query earnings-calendar --tickers AAPL,MSFT --start-date 2026-04-02 --end-date 2026-04-16",
|
|
834
878
|
"tn-financial-data query quarterly-highlights --ticker AAPL",
|
|
835
879
|
"tn-financial-data query analyst-estimates --ticker AAPL",
|
|
@@ -837,10 +881,13 @@ function buildOpenCliDocument() {
|
|
|
837
881
|
"tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31",
|
|
838
882
|
"tn-financial-data query dividends --ticker AAPL --limit 20",
|
|
839
883
|
"tn-financial-data query splits --ticker AAPL --limit 20",
|
|
884
|
+
'tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10',
|
|
840
885
|
"tn-financial-data query insider-trades --ticker AAPL --transaction-code P,S --limit 25",
|
|
841
886
|
"tn-financial-data query institutional-ownership --ticker AAPL --limit 20",
|
|
842
887
|
"tn-financial-data query investor-portfolio --investor vanguard --limit 20",
|
|
843
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",
|
|
844
891
|
'tn-financial-data query screen --filter "trailing_pe < 25" --filter "recommendation_key = buy" --limit 10',
|
|
845
892
|
"tn-financial-data skill install --tool opencode",
|
|
846
893
|
"tn-financial-data skill install --tool claude",
|
|
@@ -1336,6 +1383,34 @@ function buildOpenCliDocument() {
|
|
|
1336
1383
|
}
|
|
1337
1384
|
]
|
|
1338
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
|
+
},
|
|
1339
1414
|
{
|
|
1340
1415
|
name: "quarterly-highlights",
|
|
1341
1416
|
description: "Fetch issuer-reported supplemental quarterly highlights from the linked SEC Exhibit 99.1 release for supported companies.",
|
|
@@ -1520,6 +1595,79 @@ function buildOpenCliDocument() {
|
|
|
1520
1595
|
}
|
|
1521
1596
|
]
|
|
1522
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
|
+
},
|
|
1523
1671
|
{
|
|
1524
1672
|
name: "snapshot",
|
|
1525
1673
|
description: "Fetch the latest daily price snapshot for one ticker or a small ticker batch.",
|
|
@@ -1640,6 +1788,61 @@ function buildOpenCliDocument() {
|
|
|
1640
1788
|
}
|
|
1641
1789
|
]
|
|
1642
1790
|
},
|
|
1791
|
+
{
|
|
1792
|
+
name: "news-search",
|
|
1793
|
+
description: "Search canonical news articles across the covered ticker universe.",
|
|
1794
|
+
options: [
|
|
1795
|
+
{
|
|
1796
|
+
name: "query",
|
|
1797
|
+
required: true,
|
|
1798
|
+
arguments: [{ name: "text", required: true, description: "Search query." }],
|
|
1799
|
+
description: "Plain-text search query."
|
|
1800
|
+
},
|
|
1801
|
+
{
|
|
1802
|
+
name: "ticker",
|
|
1803
|
+
arguments: [{ name: "ticker", required: true, description: "Ticker symbol." }],
|
|
1804
|
+
description: "Optional ticker filter."
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
name: "start-date",
|
|
1808
|
+
arguments: [{ name: "date", required: true, description: "Filter start date." }],
|
|
1809
|
+
description: "Inclusive start date for search results."
|
|
1810
|
+
},
|
|
1811
|
+
{
|
|
1812
|
+
name: "end-date",
|
|
1813
|
+
arguments: [{ name: "date", required: true, description: "Filter end date." }],
|
|
1814
|
+
description: "Inclusive end date for search results."
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
name: "publisher",
|
|
1818
|
+
arguments: [
|
|
1819
|
+
{ name: "publisher", required: true, description: "Publisher name filter." }
|
|
1820
|
+
],
|
|
1821
|
+
description: "Filter by publisher name."
|
|
1822
|
+
},
|
|
1823
|
+
{
|
|
1824
|
+
name: "provider",
|
|
1825
|
+
arguments: [
|
|
1826
|
+
{ name: "provider", required: true, description: "Provider id filter." }
|
|
1827
|
+
],
|
|
1828
|
+
description: "Filter by provider id, for example alpaca."
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
name: "limit",
|
|
1832
|
+
arguments: [
|
|
1833
|
+
{ name: "limit", required: true, description: "Positive integer, max 100." }
|
|
1834
|
+
],
|
|
1835
|
+
description: "Maximum number of search results to return."
|
|
1836
|
+
},
|
|
1837
|
+
{
|
|
1838
|
+
name: "offset",
|
|
1839
|
+
arguments: [
|
|
1840
|
+
{ name: "offset", required: true, description: "Non-negative integer." }
|
|
1841
|
+
],
|
|
1842
|
+
description: "Zero-based pagination offset."
|
|
1843
|
+
}
|
|
1844
|
+
]
|
|
1845
|
+
},
|
|
1643
1846
|
{
|
|
1644
1847
|
name: "insider-trades",
|
|
1645
1848
|
description: "Fetch stored SEC Form 4 insider-trade line items for one ticker, including derivative and non-derivative transactions.",
|
|
@@ -1865,6 +2068,20 @@ var GLOBAL_INTEREST_RATE_SERIES_KEYS = [
|
|
|
1865
2068
|
"rba_3m",
|
|
1866
2069
|
"snb_call_money"
|
|
1867
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
|
+
];
|
|
1868
2085
|
|
|
1869
2086
|
// src/reference-data/global-rates-series.ts
|
|
1870
2087
|
var GLOBAL_INTEREST_RATE_SERIES_ALIASES = {
|
|
@@ -1891,6 +2108,61 @@ function normalizeGlobalInterestRateSeriesKey(value) {
|
|
|
1891
2108
|
return GLOBAL_INTEREST_RATE_SERIES_ALIASES[normalized] ?? null;
|
|
1892
2109
|
}
|
|
1893
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
|
+
|
|
1894
2166
|
// src/cli/query-subcommand-help.ts
|
|
1895
2167
|
function renderHelp(command, description, options, example) {
|
|
1896
2168
|
return [
|
|
@@ -2048,6 +2320,20 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2048
2320
|
],
|
|
2049
2321
|
"tn-financial-data query earnings --ticker AAPL --period quarterly --limit 8"
|
|
2050
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
|
+
),
|
|
2051
2337
|
"earnings-calendar": renderHelp(
|
|
2052
2338
|
"earnings-calendar",
|
|
2053
2339
|
[
|
|
@@ -2151,6 +2437,23 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2151
2437
|
],
|
|
2152
2438
|
"tn-financial-data query news --ticker AAPL --limit 10"
|
|
2153
2439
|
),
|
|
2440
|
+
"news-search": renderHelp(
|
|
2441
|
+
"news-search",
|
|
2442
|
+
["Search canonical news articles across the covered ticker universe."],
|
|
2443
|
+
[
|
|
2444
|
+
"--query <text> Required. Plain-text search query.",
|
|
2445
|
+
"--ticker <symbol> Optional covered ticker filter.",
|
|
2446
|
+
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
2447
|
+
"--end-date <date> Optional end date (YYYY-MM-DD).",
|
|
2448
|
+
"--publisher <name> Optional publisher filter.",
|
|
2449
|
+
"--provider <id> Optional provider filter, for example alpaca.",
|
|
2450
|
+
"--limit <n> Number of articles to return. Max 100.",
|
|
2451
|
+
"--offset <n> Optional zero-based pagination offset.",
|
|
2452
|
+
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
2453
|
+
"--base-url <url> API base URL override."
|
|
2454
|
+
],
|
|
2455
|
+
'tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 10'
|
|
2456
|
+
),
|
|
2154
2457
|
"insider-trades": renderHelp(
|
|
2155
2458
|
"insider-trades",
|
|
2156
2459
|
["Fetch SEC Form 4 insider-trade rows for a single issuer."],
|
|
@@ -2192,7 +2495,7 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2192
2495
|
),
|
|
2193
2496
|
"global-rates": renderHelp(
|
|
2194
2497
|
"global-rates",
|
|
2195
|
-
["Fetch
|
|
2498
|
+
["Fetch stored global policy and money-market rate history from the hosted API."],
|
|
2196
2499
|
[
|
|
2197
2500
|
"--series <csv> Optional comma-separated series keys.",
|
|
2198
2501
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
@@ -2203,6 +2506,32 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2203
2506
|
],
|
|
2204
2507
|
"tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10"
|
|
2205
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
|
+
),
|
|
2206
2535
|
"segmented-revenues": renderHelp(
|
|
2207
2536
|
"segmented-revenues",
|
|
2208
2537
|
["Fetch reported segment revenue rows for a single issuer."],
|
|
@@ -2432,6 +2761,17 @@ function buildEarningsCalendarCliOptions(parsed) {
|
|
|
2432
2761
|
}
|
|
2433
2762
|
return options;
|
|
2434
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
|
+
}
|
|
2435
2775
|
async function handleQuery(parsed, runtime, deps) {
|
|
2436
2776
|
const resource = parsed.positionals[1];
|
|
2437
2777
|
if (!resource) {
|
|
@@ -2610,6 +2950,20 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2610
2950
|
printJson(runtime, await client.getEarningsCalendar(buildEarningsCalendarCliOptions(parsed)));
|
|
2611
2951
|
return 0;
|
|
2612
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
|
+
}
|
|
2613
2967
|
case "quarterly-highlights": {
|
|
2614
2968
|
const ticker = requireOption(parsed, "ticker");
|
|
2615
2969
|
const options = {};
|
|
@@ -2677,6 +3031,26 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2677
3031
|
);
|
|
2678
3032
|
return 0;
|
|
2679
3033
|
}
|
|
3034
|
+
case "news-search": {
|
|
3035
|
+
const query = requireOption(parsed, "query");
|
|
3036
|
+
const limit = getOption(parsed, "limit");
|
|
3037
|
+
const offset = getOption(parsed, "offset");
|
|
3038
|
+
const options = {
|
|
3039
|
+
ticker: getOption(parsed, "ticker"),
|
|
3040
|
+
startDate: getOption(parsed, "start-date"),
|
|
3041
|
+
endDate: getOption(parsed, "end-date"),
|
|
3042
|
+
publisher: getOption(parsed, "publisher"),
|
|
3043
|
+
provider: getOption(parsed, "provider")
|
|
3044
|
+
};
|
|
3045
|
+
if (limit) {
|
|
3046
|
+
options.limit = parsePositiveInt(limit, "limit");
|
|
3047
|
+
}
|
|
3048
|
+
if (offset) {
|
|
3049
|
+
options.offset = parseNonNegativeInt(offset, "offset");
|
|
3050
|
+
}
|
|
3051
|
+
printJson(runtime, await client.searchNews(query, options));
|
|
3052
|
+
return 0;
|
|
3053
|
+
}
|
|
2680
3054
|
case "insider-trades": {
|
|
2681
3055
|
const ticker = requireOption(parsed, "ticker");
|
|
2682
3056
|
const limit = getOption(parsed, "limit");
|
|
@@ -2736,15 +3110,11 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2736
3110
|
}
|
|
2737
3111
|
case "global-rates": {
|
|
2738
3112
|
const limit = getOption(parsed, "limit");
|
|
2739
|
-
const series =
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
);
|
|
2745
|
-
}
|
|
2746
|
-
return normalized;
|
|
2747
|
-
});
|
|
3113
|
+
const series = parseMacroSeriesSelection(
|
|
3114
|
+
getOption(parsed, "series"),
|
|
3115
|
+
GLOBAL_INTEREST_RATE_SERIES_KEYS,
|
|
3116
|
+
normalizeGlobalInterestRateSeriesKey
|
|
3117
|
+
);
|
|
2748
3118
|
printJson(
|
|
2749
3119
|
runtime,
|
|
2750
3120
|
await client.getGlobalInterestRates({
|
|
@@ -2756,6 +3126,46 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
2756
3126
|
);
|
|
2757
3127
|
return 0;
|
|
2758
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
|
+
}
|
|
2759
3169
|
case "segmented-revenues": {
|
|
2760
3170
|
const ticker = requireOption(parsed, "ticker");
|
|
2761
3171
|
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;
|
|
@@ -384,6 +388,10 @@ interface NewsArticle {
|
|
|
384
388
|
summary: string | null;
|
|
385
389
|
refreshed_at: string;
|
|
386
390
|
}
|
|
391
|
+
interface NewsSearchArticle extends NewsArticle {
|
|
392
|
+
provider: string | null;
|
|
393
|
+
relevance: number | null;
|
|
394
|
+
}
|
|
387
395
|
interface ReadMetadata {
|
|
388
396
|
ticker: string;
|
|
389
397
|
availability: DataAvailability;
|
|
@@ -423,6 +431,15 @@ interface NewsOpts {
|
|
|
423
431
|
endDate?: string;
|
|
424
432
|
publisher?: string;
|
|
425
433
|
}
|
|
434
|
+
interface NewsSearchOpts {
|
|
435
|
+
ticker?: string;
|
|
436
|
+
limit?: number;
|
|
437
|
+
offset?: number;
|
|
438
|
+
startDate?: string;
|
|
439
|
+
endDate?: string;
|
|
440
|
+
publisher?: string;
|
|
441
|
+
provider?: string;
|
|
442
|
+
}
|
|
426
443
|
interface CorporateActionsOpts {
|
|
427
444
|
limit?: number;
|
|
428
445
|
startDate?: string;
|
|
@@ -457,6 +474,10 @@ interface FinancialMetricsOpts extends OptionalFinancialQueryOpts {
|
|
|
457
474
|
}
|
|
458
475
|
interface EarningsOpts extends OptionalFinancialQueryOpts {
|
|
459
476
|
}
|
|
477
|
+
interface EarningsTranscriptsOpts {
|
|
478
|
+
limit?: number;
|
|
479
|
+
reportPeriod?: string;
|
|
480
|
+
}
|
|
460
481
|
interface EarningsCalendarOpts {
|
|
461
482
|
ticker?: string;
|
|
462
483
|
tickers?: readonly string[];
|
|
@@ -486,6 +507,18 @@ interface GlobalInterestRatesOpts {
|
|
|
486
507
|
endDate?: string;
|
|
487
508
|
series?: readonly GlobalInterestRateSeriesKey[];
|
|
488
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
|
+
}
|
|
489
522
|
interface IncomeStatementsResponse extends ReadMetadata {
|
|
490
523
|
period: FinancialPeriod;
|
|
491
524
|
income_statements: IncomeStatement[];
|
|
@@ -523,6 +556,33 @@ interface EarningsResponse extends ReadMetadata {
|
|
|
523
556
|
period: FinancialPeriod;
|
|
524
557
|
earnings: EarningsRow[];
|
|
525
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
|
+
}
|
|
526
586
|
interface EarningsCalendarEvent extends SnakeCasedProperties<Omit<EarningsCalendarEventData, "refreshedAt">> {
|
|
527
587
|
name: string;
|
|
528
588
|
refreshed_at: string;
|
|
@@ -615,6 +675,14 @@ interface PriceHistoryResponse extends ReadMetadata {
|
|
|
615
675
|
interface NewsResponse extends ReadMetadata {
|
|
616
676
|
news: NewsArticle[];
|
|
617
677
|
}
|
|
678
|
+
interface NewsSearchResponse {
|
|
679
|
+
query: string;
|
|
680
|
+
count: number;
|
|
681
|
+
limit: number;
|
|
682
|
+
offset: number;
|
|
683
|
+
has_more: boolean;
|
|
684
|
+
news: NewsSearchArticle[];
|
|
685
|
+
}
|
|
618
686
|
interface DividendsResponse extends ReadMetadata {
|
|
619
687
|
count: number;
|
|
620
688
|
limit: number;
|
|
@@ -792,7 +860,7 @@ interface GlobalInterestRateSeries {
|
|
|
792
860
|
label: string;
|
|
793
861
|
region: string;
|
|
794
862
|
country_code: string;
|
|
795
|
-
frequency: "daily" | "monthly";
|
|
863
|
+
frequency: "daily" | "monthly" | "quarterly";
|
|
796
864
|
latest: GlobalInterestRateObservation | null;
|
|
797
865
|
observations: GlobalInterestRateObservation[];
|
|
798
866
|
}
|
|
@@ -802,6 +870,38 @@ interface GlobalInterestRatesResponse {
|
|
|
802
870
|
as_of: string | null;
|
|
803
871
|
rates: GlobalInterestRateSeries[];
|
|
804
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
|
+
}
|
|
805
905
|
type AnalystEstimate = SnakeCasedProperties<Omit<AnalystEstimateData, "ticker">>;
|
|
806
906
|
type AnalystPriceTarget = SnakeCasedProperties<AnalystPriceTargetData>;
|
|
807
907
|
interface AnalystEstimatesResponse {
|
|
@@ -924,6 +1024,7 @@ declare class TnFinancialData {
|
|
|
924
1024
|
private buildEarningsCalendarParams;
|
|
925
1025
|
private buildInsiderTradeParams;
|
|
926
1026
|
private buildCorporateActionsParams;
|
|
1027
|
+
private buildNewsParams;
|
|
927
1028
|
private buildFilingsParams;
|
|
928
1029
|
private buildFilingItemsParams;
|
|
929
1030
|
getIncomeStatements(ticker: string, opts: FinancialOpts): Promise<ApiResponse<IncomeStatementsResponse>>;
|
|
@@ -934,6 +1035,7 @@ declare class TnFinancialData {
|
|
|
934
1035
|
getFinancialMetricsSnapshot(ticker: string, opts?: Pick<FinancialMetricsOpts, "period">): Promise<ApiResponse<FinancialMetricsSnapshotResponse>>;
|
|
935
1036
|
getBatchFinancialMetricsSnapshots(tickers: readonly string[], opts?: Pick<FinancialMetricsOpts, "period">): Promise<ApiResponse<BatchFinancialMetricsSnapshotsResponse>>;
|
|
936
1037
|
getEarnings(ticker: string, opts?: EarningsOpts): Promise<ApiResponse<EarningsResponse>>;
|
|
1038
|
+
getEarningsTranscripts(ticker: string, opts?: EarningsTranscriptsOpts): Promise<ApiResponse<EarningsTranscriptsResponse>>;
|
|
937
1039
|
getEarningsCalendar(opts?: EarningsCalendarOpts): Promise<ApiResponse<EarningsCalendarResponse>>;
|
|
938
1040
|
getGeneralOverview(ticker: string, opts?: GeneralOverviewOpts): Promise<ApiResponse<GeneralOverviewResponse>>;
|
|
939
1041
|
getKeyStatistics(ticker: string): Promise<ApiResponse<KeyStatisticsResponse>>;
|
|
@@ -944,6 +1046,7 @@ declare class TnFinancialData {
|
|
|
944
1046
|
getPriceSnapshot(ticker: string): Promise<ApiResponse<PriceSnapshotResponse>>;
|
|
945
1047
|
getBatchPriceSnapshots(tickers: readonly string[]): Promise<ApiResponse<BatchPriceSnapshotsResponse>>;
|
|
946
1048
|
getNews(ticker: string, opts?: NewsOpts): Promise<ApiResponse<NewsResponse>>;
|
|
1049
|
+
searchNews(query: string, opts?: NewsSearchOpts): Promise<ApiResponse<NewsSearchResponse>>;
|
|
947
1050
|
getDividends(ticker: string, opts?: CorporateActionsOpts): Promise<ApiResponse<DividendsResponse>>;
|
|
948
1051
|
getSplits(ticker: string, opts?: CorporateActionsOpts): Promise<ApiResponse<SplitsResponse>>;
|
|
949
1052
|
getInsiderTrades(ticker: string, opts?: InsiderTradesOpts): Promise<ApiResponse<InsiderTradesResponse>>;
|
|
@@ -952,6 +1055,9 @@ declare class TnFinancialData {
|
|
|
952
1055
|
getInstitutionalOwnership(ticker: string, opts?: InstitutionalOwnershipOpts): Promise<ApiResponse<InstitutionalOwnershipResponse>>;
|
|
953
1056
|
getInvestorPortfolio(opts: InvestorPortfolioOpts): Promise<ApiResponse<InvestorPortfolioResponse>>;
|
|
954
1057
|
getGlobalInterestRates(opts?: GlobalInterestRatesOpts): Promise<ApiResponse<GlobalInterestRatesResponse>>;
|
|
1058
|
+
getUsInterestRates(opts?: UsInterestRatesOpts): Promise<ApiResponse<UsInterestRatesResponse>>;
|
|
1059
|
+
getUsEconomicIndicators(opts?: UsEconomicIndicatorsOpts): Promise<ApiResponse<UsEconomicIndicatorsResponse>>;
|
|
1060
|
+
private buildMacroSeriesParams;
|
|
955
1061
|
getAnalystEstimates(ticker: string): Promise<ApiResponse<AnalystEstimatesResponse>>;
|
|
956
1062
|
getCompanyFacts(ticker: string): Promise<ApiResponse<{
|
|
957
1063
|
company_facts: CompanyFacts;
|
|
@@ -962,4 +1068,4 @@ declare class TnFinancialData {
|
|
|
962
1068
|
screen(request: ScreenerRequest): Promise<ApiResponse<ScreenerResponse>>;
|
|
963
1069
|
}
|
|
964
1070
|
|
|
965
|
-
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 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
|
@@ -200,6 +200,13 @@ var TnFinancialData = class {
|
|
|
200
200
|
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
201
201
|
return params.toString();
|
|
202
202
|
}
|
|
203
|
+
buildNewsParams(params, opts) {
|
|
204
|
+
if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
|
|
205
|
+
if (opts?.startDate) params.set("start_date", opts.startDate);
|
|
206
|
+
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
207
|
+
if (opts?.publisher) params.set("publisher", opts.publisher);
|
|
208
|
+
return params.toString();
|
|
209
|
+
}
|
|
203
210
|
buildFilingsParams(ticker, opts) {
|
|
204
211
|
const params = new URLSearchParams({ ticker });
|
|
205
212
|
this.appendLimitParam(params, opts?.limit);
|
|
@@ -265,6 +272,12 @@ var TnFinancialData = class {
|
|
|
265
272
|
`/earnings?${this.buildOptionalFinancialParams(ticker, opts)}`
|
|
266
273
|
);
|
|
267
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
|
+
}
|
|
268
281
|
async getEarningsCalendar(opts) {
|
|
269
282
|
const params = this.buildEarningsCalendarParams(opts);
|
|
270
283
|
return this.request(
|
|
@@ -315,11 +328,14 @@ var TnFinancialData = class {
|
|
|
315
328
|
}
|
|
316
329
|
async getNews(ticker, opts) {
|
|
317
330
|
const params = new URLSearchParams({ ticker });
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
331
|
+
return this.request(`/news?${this.buildNewsParams(params, opts)}`);
|
|
332
|
+
}
|
|
333
|
+
async searchNews(query, opts) {
|
|
334
|
+
const params = new URLSearchParams({ q: query });
|
|
335
|
+
if (opts?.ticker) params.set("ticker", opts.ticker);
|
|
336
|
+
if (opts?.offset !== void 0) params.set("offset", String(opts.offset));
|
|
337
|
+
if (opts?.provider) params.set("provider", opts.provider);
|
|
338
|
+
return this.request(`/news/search?${this.buildNewsParams(params, opts)}`);
|
|
323
339
|
}
|
|
324
340
|
async getDividends(ticker, opts) {
|
|
325
341
|
return this.request(
|
|
@@ -357,12 +373,24 @@ var TnFinancialData = class {
|
|
|
357
373
|
return this.request(`/institutional-ownership/investor?${params}`);
|
|
358
374
|
}
|
|
359
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) {
|
|
360
388
|
const params = new URLSearchParams();
|
|
361
389
|
if (opts?.limit !== void 0) params.set("limit", String(opts.limit));
|
|
362
390
|
if (opts?.startDate) params.set("start_date", opts.startDate);
|
|
363
391
|
if (opts?.endDate) params.set("end_date", opts.endDate);
|
|
364
392
|
if (opts?.series && opts.series.length > 0) params.set("series", opts.series.join(","));
|
|
365
|
-
return
|
|
393
|
+
return params;
|
|
366
394
|
}
|
|
367
395
|
async getAnalystEstimates(ticker) {
|
|
368
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
|
|
|
@@ -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
|
|
|
@@ -13,11 +13,13 @@ Auth rule:
|
|
|
13
13
|
- for ambiguous company, brand, or free-form one-company prompts, start with `resolve-ticker`
|
|
14
14
|
- for broad ticker prompts like "what's up with NVDA?", start with `general-overview`
|
|
15
15
|
- for covered recent-news prompts like "show me recent Nvidia news", start with `news`
|
|
16
|
+
- for cross-ticker headline/theme prompts like "search semiconductor tariff news", start with `news-search`
|
|
16
17
|
- for latest-quarter product mix, supplemental KPIs, AWS segment profitability, or Tesla free-cash-flow prompts, start with `quarterly-highlights`
|
|
17
18
|
- for Apple product mix specifically, do not start with `segmented-revenues`; that surface only exposes broad `Product` and `Service` rollups, while `quarterly-highlights` carries `iPhone`, `Mac`, `iPad`, `Wearables, Home and Accessories`, and `Services`
|
|
18
19
|
- for compare prompts, try to use matching command families and comparable periods across the names
|
|
19
20
|
- for investor-filer prompts like "what does Vanguard hold?", start with `investor-portfolio`
|
|
20
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`
|
|
21
23
|
|
|
22
24
|
## Query Commands
|
|
23
25
|
|
|
@@ -135,6 +137,19 @@ Meaning:
|
|
|
135
137
|
- if no matching quarterly statement exists for a reported quarter, the row still appears but statement-derived fields can be `null`
|
|
136
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
|
|
137
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
|
+
|
|
138
153
|
Earnings calendar:
|
|
139
154
|
|
|
140
155
|
```bash
|
|
@@ -246,6 +261,19 @@ Meaning:
|
|
|
246
261
|
- use it before web search when the stored dataset can answer
|
|
247
262
|
- optionally pair with `snapshot` or `general-overview` if the user needs price or broader company context
|
|
248
263
|
|
|
264
|
+
News search:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 20
|
|
268
|
+
tn-financial-data query news-search --query "AI data center" --provider alpaca --offset 20
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Meaning:
|
|
272
|
+
- article-centric search across the stored covered-news corpus
|
|
273
|
+
- use it for cross-ticker topic scans, theme tracking, or when the user gives keywords instead of one issuer
|
|
274
|
+
- supports optional `--ticker`, `--publisher`, `--provider`, `--start-date`, `--end-date`, `--limit`, and `--offset`
|
|
275
|
+
- search results include provider and relevance metadata; do not assume the first result is the only relevant one when `has_more` is true
|
|
276
|
+
|
|
249
277
|
Insider trades:
|
|
250
278
|
|
|
251
279
|
```bash
|
|
@@ -318,8 +346,33 @@ tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
|
318
346
|
|
|
319
347
|
Meaning:
|
|
320
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
|
|
321
350
|
- natural-language mappings include ECB refi, ECB deposit, BOE Sonia, SNB call money, BOJ call money, BOC call money, and RBA 3M
|
|
322
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
|
+
|
|
323
376
|
Shared query options:
|
|
324
377
|
- `--api-key`
|
|
325
378
|
- `--base-url`
|