tn-financial-data 0.4.0 → 0.4.2
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 +18 -8
- package/dist/cli.js +23 -22
- package/dist/client/index.d.ts +13 -3
- package/dist/client/index.js +0 -1
- package/package.json +3 -2
- package/skills/tn-financial-data/SKILL.md +9 -1
- 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 +11 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# tn-financial-data
|
|
2
2
|
|
|
3
|
-
Hosted US equity
|
|
3
|
+
Hosted US equity, macro, SEC filings, and earnings transcript coverage for agents.
|
|
4
4
|
|
|
5
5
|
`tn-financial-data` is the published agent-facing surface for the hosted API:
|
|
6
6
|
|
|
@@ -25,10 +25,11 @@ 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, earnings transcript structure, stored macro history, and raw SEC filings through one hosted API
|
|
28
|
+
- Company facts, financials, prices, canonical issuer news, insider trades, ownership, earnings transcript structure and coverage, 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
|
+
- Canonical issuer-scoped `news` plus cross-ticker `news-search` over article title, summary, and body text with ticker, publisher, and date filters
|
|
32
|
+
- `news` and `news-search` responses include `body_text` when stored article content is available
|
|
32
33
|
- Agent-friendly CLI with clean error output, scoped subcommand help, and self-description via `tn-financial-data describe opencli`
|
|
33
34
|
- Packaged skill bundle for Claude and OpenCode installs
|
|
34
35
|
- Typed TypeScript client from the root package export
|
|
@@ -57,6 +58,7 @@ Optional base URL override:
|
|
|
57
58
|
The published CLI reads those values from the current process environment only.
|
|
58
59
|
Use `resolve-ticker` to map company or brand input to supported symbols.
|
|
59
60
|
Treat `available-tickers` as the authoritative support list for exact symbols; do not silently swap an unsupported exact ticker to a different share class.
|
|
61
|
+
`available-tickers` is the equity-symbol snapshot only; covered macro series are queried through `global-rates`, `us-rates`, and `us-economic-indicators`.
|
|
60
62
|
|
|
61
63
|
Production default:
|
|
62
64
|
|
|
@@ -90,6 +92,11 @@ Ownership semantics:
|
|
|
90
92
|
- `institutional-ownership` is issuer-centric: ticker to holders
|
|
91
93
|
- `investor-portfolio` is investor-centric: filer to holdings via SEC 13F
|
|
92
94
|
|
|
95
|
+
Macro note:
|
|
96
|
+
|
|
97
|
+
- `us_cpi` is the raw CPI index level, not a precomputed inflation transform
|
|
98
|
+
- For MoM or YoY CPI prompts, derive the percentage change from adjacent observations returned by `us-economic-indicators`
|
|
99
|
+
|
|
93
100
|
## Commands
|
|
94
101
|
|
|
95
102
|
| Command | Description |
|
|
@@ -118,7 +125,7 @@ tn-financial-data query filings --ticker AAPL --filing-type 10-K,10-Q,8-K --limi
|
|
|
118
125
|
tn-financial-data query filing-items --ticker AAPL --accession-number 0000320193-26-000005 --item 2.02 --include-exhibits
|
|
119
126
|
tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31
|
|
120
127
|
tn-financial-data query news --ticker AAPL --limit 10
|
|
121
|
-
tn-financial-data query news-search --query "AI data center" --
|
|
128
|
+
tn-financial-data query news-search --query "AI data center" --publisher Reuters --limit 10
|
|
122
129
|
tn-financial-data query institutional-ownership --ticker AAPL --limit 20
|
|
123
130
|
tn-financial-data query investor-portfolio --investor vanguard --limit 20
|
|
124
131
|
tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
@@ -209,12 +216,15 @@ const calendar = await client.getEarningsCalendar({
|
|
|
209
216
|
|
|
210
217
|
console.log(calendar.events.map((row) => `${row.ticker}:${row.event_date_start}`));
|
|
211
218
|
|
|
212
|
-
const transcripts = await client.getEarningsTranscripts({
|
|
213
|
-
ticker: "NVDA",
|
|
219
|
+
const transcripts = await client.getEarningsTranscripts("NVDA", {
|
|
214
220
|
limit: 1,
|
|
215
221
|
});
|
|
216
222
|
|
|
217
|
-
console.log(
|
|
223
|
+
console.log(
|
|
224
|
+
transcripts.transcript_coverage.status,
|
|
225
|
+
transcripts.transcripts[0]?.quarter_label,
|
|
226
|
+
transcripts.transcripts[0]?.question_count,
|
|
227
|
+
);
|
|
218
228
|
|
|
219
229
|
const usRates = await client.getUsInterestRates({
|
|
220
230
|
series: ["us_treasury_10y", "fed_funds_rate"],
|
|
@@ -234,7 +244,7 @@ console.log(filings.filings[0]?.accession_number);
|
|
|
234
244
|
|
|
235
245
|
const news = await client.searchNews("AI data center", {
|
|
236
246
|
ticker: "NVDA",
|
|
237
|
-
|
|
247
|
+
publisher: "Reuters",
|
|
238
248
|
limit: 5,
|
|
239
249
|
});
|
|
240
250
|
|
package/dist/cli.js
CHANGED
|
@@ -336,7 +336,6 @@ var TnFinancialData = class {
|
|
|
336
336
|
const params = new URLSearchParams({ q: query });
|
|
337
337
|
if (opts?.ticker) params.set("ticker", opts.ticker);
|
|
338
338
|
if (opts?.offset !== void 0) params.set("offset", String(opts.offset));
|
|
339
|
-
if (opts?.provider) params.set("provider", opts.provider);
|
|
340
339
|
return this.request(`/news/search?${this.buildNewsParams(params, opts)}`);
|
|
341
340
|
}
|
|
342
341
|
async getDividends(ticker, opts) {
|
|
@@ -753,7 +752,7 @@ function queryHelp() {
|
|
|
753
752
|
" tn-financial-data query dividends --ticker <symbol> [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
754
753
|
" tn-financial-data query splits --ticker <symbol> [--start-date <date>] [--end-date <date>] [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
755
754
|
" 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>] [--
|
|
755
|
+
" tn-financial-data query news-search --query <text> [--ticker <symbol>] [--start-date <date>] [--end-date <date>] [--publisher <name>] [--limit <n>] [--offset <n>] [--api-key <key>] [--base-url <url>]",
|
|
757
756
|
" 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>]",
|
|
758
757
|
" tn-financial-data query institutional-ownership --ticker <symbol> [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
759
758
|
" tn-financial-data query investor-portfolio (--cik <cik> | --investor <alias>) [--limit <n>] [--api-key <key>] [--base-url <url>]",
|
|
@@ -929,7 +928,7 @@ function buildOpenCliDocument() {
|
|
|
929
928
|
commands: [
|
|
930
929
|
{
|
|
931
930
|
name: "available-tickers",
|
|
932
|
-
description: "Fetch the current supported ticker snapshot with financial and news freshness timestamps."
|
|
931
|
+
description: "Fetch the current supported ticker snapshot for the equity universe with financial and news freshness timestamps."
|
|
933
932
|
},
|
|
934
933
|
{
|
|
935
934
|
name: "resolve-ticker",
|
|
@@ -1385,7 +1384,7 @@ function buildOpenCliDocument() {
|
|
|
1385
1384
|
},
|
|
1386
1385
|
{
|
|
1387
1386
|
name: "earnings-transcripts",
|
|
1388
|
-
description: "Fetch normalized earnings call transcript metadata, participants,
|
|
1387
|
+
description: "Fetch normalized earnings call transcript metadata, participants, speaker-turn structure, and latest transcript coverage status for a single ticker.",
|
|
1389
1388
|
options: [
|
|
1390
1389
|
{
|
|
1391
1390
|
name: "ticker",
|
|
@@ -1637,7 +1636,7 @@ function buildOpenCliDocument() {
|
|
|
1637
1636
|
},
|
|
1638
1637
|
{
|
|
1639
1638
|
name: "us-economic-indicators",
|
|
1640
|
-
description: "Fetch US CPI, GDP, and unemployment series with historical observations.",
|
|
1639
|
+
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
1640
|
options: [
|
|
1642
1641
|
{
|
|
1643
1642
|
name: "series",
|
|
@@ -1754,7 +1753,7 @@ function buildOpenCliDocument() {
|
|
|
1754
1753
|
},
|
|
1755
1754
|
{
|
|
1756
1755
|
name: "news",
|
|
1757
|
-
description: "Fetch news articles for a single ticker.",
|
|
1756
|
+
description: "Fetch canonical news articles for a single ticker, including body_text when available.",
|
|
1758
1757
|
options: [
|
|
1759
1758
|
{
|
|
1760
1759
|
name: "ticker",
|
|
@@ -1790,7 +1789,7 @@ function buildOpenCliDocument() {
|
|
|
1790
1789
|
},
|
|
1791
1790
|
{
|
|
1792
1791
|
name: "news-search",
|
|
1793
|
-
description: "Search canonical news articles across the covered ticker universe.",
|
|
1792
|
+
description: "Search canonical news articles across the covered ticker universe, including body_text when available.",
|
|
1794
1793
|
options: [
|
|
1795
1794
|
{
|
|
1796
1795
|
name: "query",
|
|
@@ -1820,13 +1819,6 @@ function buildOpenCliDocument() {
|
|
|
1820
1819
|
],
|
|
1821
1820
|
description: "Filter by publisher name."
|
|
1822
1821
|
},
|
|
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
1822
|
{
|
|
1831
1823
|
name: "limit",
|
|
1832
1824
|
arguments: [
|
|
@@ -2180,7 +2172,10 @@ function renderHelp(command, description, options, example) {
|
|
|
2180
2172
|
var QUERY_SUBCOMMAND_HELP = {
|
|
2181
2173
|
"available-tickers": renderHelp(
|
|
2182
2174
|
"available-tickers",
|
|
2183
|
-
[
|
|
2175
|
+
[
|
|
2176
|
+
"List stock tickers currently supported by the hosted read API.",
|
|
2177
|
+
"This is the equity support snapshot only; covered macro series live under global-rates, us-rates, and us-economic-indicators."
|
|
2178
|
+
],
|
|
2184
2179
|
[
|
|
2185
2180
|
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
2186
2181
|
"--base-url <url> API base URL override."
|
|
@@ -2323,7 +2318,8 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2323
2318
|
"earnings-transcripts": renderHelp(
|
|
2324
2319
|
"earnings-transcripts",
|
|
2325
2320
|
[
|
|
2326
|
-
"Fetch normalized earnings call transcript metadata, participants,
|
|
2321
|
+
"Fetch normalized earnings call transcript metadata, participants, speaker-turn structure, and latest transcript coverage status for a single ticker.",
|
|
2322
|
+
"This surface does not return full transcript prose; use it for structure and coverage, not direct quotes or management-language analysis."
|
|
2327
2323
|
],
|
|
2328
2324
|
[
|
|
2329
2325
|
"--ticker <symbol> Required. Stock ticker symbol.",
|
|
@@ -2425,7 +2421,9 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2425
2421
|
),
|
|
2426
2422
|
news: renderHelp(
|
|
2427
2423
|
"news",
|
|
2428
|
-
[
|
|
2424
|
+
[
|
|
2425
|
+
"Fetch canonical news articles for a single ticker. Returns `body_text` when article content is available."
|
|
2426
|
+
],
|
|
2429
2427
|
[
|
|
2430
2428
|
"--ticker <symbol> Required. Stock ticker symbol.",
|
|
2431
2429
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
@@ -2439,14 +2437,15 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2439
2437
|
),
|
|
2440
2438
|
"news-search": renderHelp(
|
|
2441
2439
|
"news-search",
|
|
2442
|
-
[
|
|
2440
|
+
[
|
|
2441
|
+
"Search canonical news articles across the covered ticker universe. Returns `body_text` when article content is available."
|
|
2442
|
+
],
|
|
2443
2443
|
[
|
|
2444
2444
|
"--query <text> Required. Plain-text search query.",
|
|
2445
2445
|
"--ticker <symbol> Optional covered ticker filter.",
|
|
2446
2446
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
2447
2447
|
"--end-date <date> Optional end date (YYYY-MM-DD).",
|
|
2448
2448
|
"--publisher <name> Optional publisher filter.",
|
|
2449
|
-
"--provider <id> Optional provider filter, for example alpaca.",
|
|
2450
2449
|
"--limit <n> Number of articles to return. Max 100.",
|
|
2451
2450
|
"--offset <n> Optional zero-based pagination offset.",
|
|
2452
2451
|
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
@@ -2521,7 +2520,10 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2521
2520
|
),
|
|
2522
2521
|
"us-economic-indicators": renderHelp(
|
|
2523
2522
|
"us-economic-indicators",
|
|
2524
|
-
[
|
|
2523
|
+
[
|
|
2524
|
+
"Fetch stored US CPI, GDP, and unemployment history from the hosted API.",
|
|
2525
|
+
"Returns raw series levels; derive MoM or YoY percentage changes from adjacent observations when needed."
|
|
2526
|
+
],
|
|
2525
2527
|
[
|
|
2526
2528
|
"--series <csv> Optional comma-separated US economic indicator keys.",
|
|
2527
2529
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
@@ -3039,8 +3041,7 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
3039
3041
|
ticker: getOption(parsed, "ticker"),
|
|
3040
3042
|
startDate: getOption(parsed, "start-date"),
|
|
3041
3043
|
endDate: getOption(parsed, "end-date"),
|
|
3042
|
-
publisher: getOption(parsed, "publisher")
|
|
3043
|
-
provider: getOption(parsed, "provider")
|
|
3044
|
+
publisher: getOption(parsed, "publisher")
|
|
3044
3045
|
};
|
|
3045
3046
|
if (limit) {
|
|
3046
3047
|
options.limit = parsePositiveInt(limit, "limit");
|
package/dist/client/index.d.ts
CHANGED
|
@@ -386,10 +386,10 @@ interface NewsArticle {
|
|
|
386
386
|
type: string | null;
|
|
387
387
|
link: string | null;
|
|
388
388
|
summary: string | null;
|
|
389
|
+
body_text: string | null;
|
|
389
390
|
refreshed_at: string;
|
|
390
391
|
}
|
|
391
392
|
interface NewsSearchArticle extends NewsArticle {
|
|
392
|
-
provider: string | null;
|
|
393
393
|
relevance: number | null;
|
|
394
394
|
}
|
|
395
395
|
interface ReadMetadata {
|
|
@@ -438,7 +438,6 @@ interface NewsSearchOpts {
|
|
|
438
438
|
startDate?: string;
|
|
439
439
|
endDate?: string;
|
|
440
440
|
publisher?: string;
|
|
441
|
-
provider?: string;
|
|
442
441
|
}
|
|
443
442
|
interface CorporateActionsOpts {
|
|
444
443
|
limit?: number;
|
|
@@ -580,7 +579,18 @@ interface EarningsTranscript {
|
|
|
580
579
|
participants: EarningsTranscriptParticipant[];
|
|
581
580
|
speaker_turns: EarningsTranscriptSpeakerTurn[];
|
|
582
581
|
}
|
|
582
|
+
interface EarningsTranscriptCoverage {
|
|
583
|
+
status: "current" | "lagging" | "none" | "unknown";
|
|
584
|
+
latest_earnings_report_period: string | null;
|
|
585
|
+
latest_earnings_quarter_label: string | null;
|
|
586
|
+
latest_earnings_release_at: string | null;
|
|
587
|
+
latest_earnings_call_at: string | null;
|
|
588
|
+
latest_transcript_report_period: string | null;
|
|
589
|
+
latest_transcript_quarter_label: string | null;
|
|
590
|
+
latest_transcript_call_date: string | null;
|
|
591
|
+
}
|
|
583
592
|
interface EarningsTranscriptsResponse extends ReadMetadata {
|
|
593
|
+
transcript_coverage: EarningsTranscriptCoverage;
|
|
584
594
|
transcripts: EarningsTranscript[];
|
|
585
595
|
}
|
|
586
596
|
interface EarningsCalendarEvent extends SnakeCasedProperties<Omit<EarningsCalendarEventData, "refreshedAt">> {
|
|
@@ -1068,4 +1078,4 @@ declare class TnFinancialData {
|
|
|
1068
1078
|
screen(request: ScreenerRequest): Promise<ApiResponse<ScreenerResponse>>;
|
|
1069
1079
|
}
|
|
1070
1080
|
|
|
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 };
|
|
1081
|
+
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 EarningsTranscriptCoverage, 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
|
@@ -334,7 +334,6 @@ var TnFinancialData = class {
|
|
|
334
334
|
const params = new URLSearchParams({ q: query });
|
|
335
335
|
if (opts?.ticker) params.set("ticker", opts.ticker);
|
|
336
336
|
if (opts?.offset !== void 0) params.set("offset", String(opts.offset));
|
|
337
|
-
if (opts?.provider) params.set("provider", opts.provider);
|
|
338
337
|
return this.request(`/news/search?${this.buildNewsParams(params, opts)}`);
|
|
339
338
|
}
|
|
340
339
|
async getDividends(ticker, opts) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tn-financial-data",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "Hosted US equity
|
|
3
|
+
"version": "0.4.2",
|
|
4
|
+
"description": "Hosted US equity, macro, SEC filings, and earnings transcript coverage CLI and client for agents",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
7
7
|
"agentic",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "npm --prefix ../.. run package:sync && npm --prefix ../.. run build && node scripts/prepare-package.mjs",
|
|
46
46
|
"pack:dry-run": "npm run build && npm pack --dry-run --json",
|
|
47
|
+
"publish:dry-run": "npm run build && npm publish --dry-run --json",
|
|
47
48
|
"prepack": "npm run build"
|
|
48
49
|
},
|
|
49
50
|
"engines": {
|
|
@@ -6,6 +6,7 @@ license: MIT
|
|
|
6
6
|
|
|
7
7
|
Prefer the `tn-financial-data` CLI when it is installed. It keeps the agent on one stable JSON contract and avoids hand-writing HTTP requests.
|
|
8
8
|
If the CLI is not already present, the published package can be installed with `npm install -g tn-financial-data`.
|
|
9
|
+
This `SKILL.md` is the canonical packaged skill document for native installs. Keep adapter-specific wording in `agents/claude.md`, `agents/opencode.md`, and `agents/openai.yaml`, and keep dense command examples in `references/cli.md`.
|
|
9
10
|
|
|
10
11
|
## Authentication
|
|
11
12
|
|
|
@@ -39,11 +40,13 @@ Covered reads include:
|
|
|
39
40
|
- 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
41
|
- 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
42
|
- For covered-universe filter or ranking questions, use `screen-fields` and `screen`.
|
|
43
|
+
- 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
44
|
- Keep issuer-centric ownership (`institutional-ownership`) separate from investor-centric portfolio lookup (`investor-portfolio`).
|
|
43
45
|
- 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.
|
|
46
|
+
- 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
47
|
- 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
48
|
- 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.
|
|
49
|
+
- 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
50
|
- Only leave this skill when the user explicitly wants outside sources or the stored dataset does not cover the question.
|
|
48
51
|
|
|
49
52
|
## Answer Principles
|
|
@@ -54,6 +57,7 @@ Covered reads include:
|
|
|
54
57
|
- Explain what the important numbers or developments mean for the business, valuation, sentiment, or risk.
|
|
55
58
|
- Prefer clear, structured outputs when they improve readability.
|
|
56
59
|
- 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.
|
|
60
|
+
- 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
61
|
- Never expose tool-use narration, internal process notes, or bracketed meta commentary in the user-facing answer.
|
|
58
62
|
|
|
59
63
|
## Common CLI Reads
|
|
@@ -98,6 +102,8 @@ Practical defaults:
|
|
|
98
102
|
- Use `resolve-ticker` first when the user gives a company name, brand name, or broad one-company phrase without a trusted symbol
|
|
99
103
|
- Repeat `--query` on `resolve-ticker` when the user gives multiple ambiguous company names and you need to normalize them before batch comparisons
|
|
100
104
|
- Use `earnings-transcripts` when the user wants call participants, speaker order, or analyst-question structure rather than transcript prose
|
|
105
|
+
- Do not use `earnings-transcripts` alone for call-tone, exact-quote, or management-language prompts; it is a structure-and-coverage surface, not a full transcript-prose surface
|
|
106
|
+
- For “latest earnings call” prompts, pair `earnings-transcripts` with `earnings` or `quarterly-highlights`, read `transcript_coverage`, and say plainly when the latest reported quarter exists but the transcript surface is lagging
|
|
101
107
|
- 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”
|
|
102
108
|
- 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
|
|
103
109
|
- Use `filings` plus `filing-items` when the user explicitly asks for an SEC filing, `8-K`, `10-K`, `10-Q`, or raw filing text
|
|
@@ -106,6 +112,8 @@ Practical defaults:
|
|
|
106
112
|
- Use `investor-portfolio` for prompts like “What does Vanguard hold?” or “Show Berkshire’s latest 13F portfolio.”
|
|
107
113
|
- Use `global-rates` for central-bank and cross-country rate-comparison prompts
|
|
108
114
|
- Use `us-rates` and `us-economic-indicators` for FRED-backed US macro history such as Treasury yields, Fed funds, CPI, GDP, and unemployment
|
|
115
|
+
- `available-tickers` is the equity-only support snapshot; do not use it as a macro coverage check
|
|
116
|
+
- For MoM or YoY CPI prompts, fetch `us-economic-indicators` and compute the percentage change from adjacent `us_cpi` observations
|
|
109
117
|
|
|
110
118
|
## References
|
|
111
119
|
|
|
@@ -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. `earnings-transcripts` is a structure-and-coverage surface, not full transcript prose: use it for participants, speaker order, analyst-question structure, and transcript coverage gaps, and do not answer tone or direct-quote prompts from it alone. 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. `earnings-transcripts` is a structure-and-coverage surface, not full transcript prose: use it for participants, speaker order, analyst-question structure, and transcript coverage gaps, and do not answer tone or direct-quote prompts from it alone. 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. `earnings-transcripts` is a structure-and-coverage surface rather than full transcript prose, so use it for participants, speaker order, analyst-question structure, and coverage gaps, and do not answer tone or direct-quote prompts from it alone.
|
|
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.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# CLI Reference
|
|
2
2
|
|
|
3
3
|
Use the CLI for agent access whenever possible.
|
|
4
|
+
This file is the command reference layer, not the canonical native-skill manifest.
|
|
5
|
+
For native skill install and routing rules, use [../SKILL.md](../SKILL.md) plus the adapter files under `agents/`.
|
|
4
6
|
|
|
5
7
|
Published package:
|
|
6
8
|
- install with `npm install -g tn-financial-data` when the CLI is not already present
|
|
@@ -50,6 +52,7 @@ Use this to fetch the current supported ticker snapshot from the API. It returns
|
|
|
50
52
|
|
|
51
53
|
Support rule:
|
|
52
54
|
- treat this list as the package's authoritative support snapshot
|
|
55
|
+
- this snapshot is equity-only; covered macro series are queried separately through `global-rates`, `us-rates`, and `us-economic-indicators`
|
|
53
56
|
- if the user asks for an exact ticker that is not in this list, do not silently substitute another ticker or share class
|
|
54
57
|
- if you intentionally continue with a different supported line for the same issuer, make that mismatch explicit to the user
|
|
55
58
|
|
|
@@ -146,9 +149,10 @@ tn-financial-data query earnings-transcripts --ticker AAPL --report-period 2025-
|
|
|
146
149
|
|
|
147
150
|
Meaning:
|
|
148
151
|
- 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,
|
|
152
|
+
- returns `headline`, linked `report_period`, `quarter_label`, `published_at`, `call_date`, `question_count`, participant roster, ordered `speaker_turns`, and a `transcript_coverage` block that says whether transcript coverage is `current`, `lagging`, or `none` versus the latest stored earnings report
|
|
150
153
|
- 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,
|
|
154
|
+
- use it when the question is about who joined the call, how many analyst questions there were, the speaking order, or whether the latest quarter has a stored transcript
|
|
155
|
+
- do not use it by itself for call tone, direct quotes, or management-language prompts; pair it with `earnings` or `quarterly-highlights` for latest-quarter context and say explicitly when transcript coverage is lagging or absent
|
|
152
156
|
|
|
153
157
|
Earnings calendar:
|
|
154
158
|
|
|
@@ -257,7 +261,7 @@ tn-financial-data query news --ticker AAPL --publisher Reuters
|
|
|
257
261
|
```
|
|
258
262
|
|
|
259
263
|
Meaning:
|
|
260
|
-
-
|
|
264
|
+
- canonical issuer-scoped read for covered recent-news prompts
|
|
261
265
|
- use it before web search when the stored dataset can answer
|
|
262
266
|
- optionally pair with `snapshot` or `general-overview` if the user needs price or broader company context
|
|
263
267
|
|
|
@@ -265,14 +269,14 @@ News search:
|
|
|
265
269
|
|
|
266
270
|
```bash
|
|
267
271
|
tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 20
|
|
268
|
-
tn-financial-data query news-search --query "AI data center" --
|
|
272
|
+
tn-financial-data query news-search --query "AI data center" --publisher Reuters --offset 20
|
|
269
273
|
```
|
|
270
274
|
|
|
271
275
|
Meaning:
|
|
272
276
|
- article-centric search across the stored covered-news corpus
|
|
273
277
|
- use it for cross-ticker topic scans, theme tracking, or when the user gives keywords instead of one issuer
|
|
274
|
-
- supports optional `--ticker`, `--publisher`, `--
|
|
275
|
-
- search results include
|
|
278
|
+
- supports optional `--ticker`, `--publisher`, `--start-date`, `--end-date`, `--limit`, and `--offset`
|
|
279
|
+
- search results include publisher and relevance metadata; do not assume the first result is the only relevant one when `has_more` is true
|
|
276
280
|
|
|
277
281
|
Insider trades:
|
|
278
282
|
|
|
@@ -371,6 +375,7 @@ Meaning:
|
|
|
371
375
|
- preferred first read for US CPI, GDP, and unemployment prompts
|
|
372
376
|
- reads stored macro history from the hosted API
|
|
373
377
|
- raw series only: `us_cpi` is the CPI index level, not a computed YoY inflation transform
|
|
378
|
+
- for MoM or YoY CPI prompts, compute the percentage change from adjacent observations and say that the transform is derived from the raw series
|
|
374
379
|
- natural-language aliases include `cpi`, `gdp`, and `unemployment`
|
|
375
380
|
|
|
376
381
|
Shared query options:
|