tn-financial-data 0.4.1 → 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 +12 -8
- package/dist/cli.js +13 -18
- 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 +3 -0
- 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 +1 -1
- package/skills/tn-financial-data/references/cli.md +9 -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
|
|
@@ -124,7 +125,7 @@ tn-financial-data query filings --ticker AAPL --filing-type 10-K,10-Q,8-K --limi
|
|
|
124
125
|
tn-financial-data query filing-items --ticker AAPL --accession-number 0000320193-26-000005 --item 2.02 --include-exhibits
|
|
125
126
|
tn-financial-data query prices --ticker AAPL --interval day --start-date 2025-01-01 --end-date 2025-01-31
|
|
126
127
|
tn-financial-data query news --ticker AAPL --limit 10
|
|
127
|
-
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
|
|
128
129
|
tn-financial-data query institutional-ownership --ticker AAPL --limit 20
|
|
129
130
|
tn-financial-data query investor-portfolio --investor vanguard --limit 20
|
|
130
131
|
tn-financial-data query global-rates --series ecb_refi,boe_sonia --limit 10
|
|
@@ -215,12 +216,15 @@ const calendar = await client.getEarningsCalendar({
|
|
|
215
216
|
|
|
216
217
|
console.log(calendar.events.map((row) => `${row.ticker}:${row.event_date_start}`));
|
|
217
218
|
|
|
218
|
-
const transcripts = await client.getEarningsTranscripts({
|
|
219
|
-
ticker: "NVDA",
|
|
219
|
+
const transcripts = await client.getEarningsTranscripts("NVDA", {
|
|
220
220
|
limit: 1,
|
|
221
221
|
});
|
|
222
222
|
|
|
223
|
-
console.log(
|
|
223
|
+
console.log(
|
|
224
|
+
transcripts.transcript_coverage.status,
|
|
225
|
+
transcripts.transcripts[0]?.quarter_label,
|
|
226
|
+
transcripts.transcripts[0]?.question_count,
|
|
227
|
+
);
|
|
224
228
|
|
|
225
229
|
const usRates = await client.getUsInterestRates({
|
|
226
230
|
series: ["us_treasury_10y", "fed_funds_rate"],
|
|
@@ -240,7 +244,7 @@ console.log(filings.filings[0]?.accession_number);
|
|
|
240
244
|
|
|
241
245
|
const news = await client.searchNews("AI data center", {
|
|
242
246
|
ticker: "NVDA",
|
|
243
|
-
|
|
247
|
+
publisher: "Reuters",
|
|
244
248
|
limit: 5,
|
|
245
249
|
});
|
|
246
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>]",
|
|
@@ -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",
|
|
@@ -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: [
|
|
@@ -2326,7 +2318,8 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2326
2318
|
"earnings-transcripts": renderHelp(
|
|
2327
2319
|
"earnings-transcripts",
|
|
2328
2320
|
[
|
|
2329
|
-
"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."
|
|
2330
2323
|
],
|
|
2331
2324
|
[
|
|
2332
2325
|
"--ticker <symbol> Required. Stock ticker symbol.",
|
|
@@ -2428,7 +2421,9 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2428
2421
|
),
|
|
2429
2422
|
news: renderHelp(
|
|
2430
2423
|
"news",
|
|
2431
|
-
[
|
|
2424
|
+
[
|
|
2425
|
+
"Fetch canonical news articles for a single ticker. Returns `body_text` when article content is available."
|
|
2426
|
+
],
|
|
2432
2427
|
[
|
|
2433
2428
|
"--ticker <symbol> Required. Stock ticker symbol.",
|
|
2434
2429
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
@@ -2442,14 +2437,15 @@ var QUERY_SUBCOMMAND_HELP = {
|
|
|
2442
2437
|
),
|
|
2443
2438
|
"news-search": renderHelp(
|
|
2444
2439
|
"news-search",
|
|
2445
|
-
[
|
|
2440
|
+
[
|
|
2441
|
+
"Search canonical news articles across the covered ticker universe. Returns `body_text` when article content is available."
|
|
2442
|
+
],
|
|
2446
2443
|
[
|
|
2447
2444
|
"--query <text> Required. Plain-text search query.",
|
|
2448
2445
|
"--ticker <symbol> Optional covered ticker filter.",
|
|
2449
2446
|
"--start-date <date> Optional start date (YYYY-MM-DD).",
|
|
2450
2447
|
"--end-date <date> Optional end date (YYYY-MM-DD).",
|
|
2451
2448
|
"--publisher <name> Optional publisher filter.",
|
|
2452
|
-
"--provider <id> Optional provider filter, for example alpaca.",
|
|
2453
2449
|
"--limit <n> Number of articles to return. Max 100.",
|
|
2454
2450
|
"--offset <n> Optional zero-based pagination offset.",
|
|
2455
2451
|
"--api-key <key> API key. Overrides TN_FINANCIAL_DATA_API_KEY.",
|
|
@@ -3045,8 +3041,7 @@ async function handleQuery(parsed, runtime, deps) {
|
|
|
3045
3041
|
ticker: getOption(parsed, "ticker"),
|
|
3046
3042
|
startDate: getOption(parsed, "start-date"),
|
|
3047
3043
|
endDate: getOption(parsed, "end-date"),
|
|
3048
|
-
publisher: getOption(parsed, "publisher")
|
|
3049
|
-
provider: getOption(parsed, "provider")
|
|
3044
|
+
publisher: getOption(parsed, "publisher")
|
|
3050
3045
|
};
|
|
3051
3046
|
if (limit) {
|
|
3052
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
|
|
|
@@ -101,6 +102,8 @@ Practical defaults:
|
|
|
101
102
|
- Use `resolve-ticker` first when the user gives a company name, brand name, or broad one-company phrase without a trusted symbol
|
|
102
103
|
- Repeat `--query` on `resolve-ticker` when the user gives multiple ambiguous company names and you need to normalize them before batch comparisons
|
|
103
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
|
|
104
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”
|
|
105
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
|
|
106
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
|
|
@@ -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, covered US macro prompts, and raw SEC filing prompts. Start broad one-company prompts with the overview path. For narrower asks, choose the narrower covered read directly. Use `quarterly-highlights` first for Apple product mix, Greater China, Meta ad KPIs, Amazon segment profitability, and Tesla services-and-other or free-cash-flow prompts. Use `filings` to locate a filing and `filing-items` to read the actual `10-K`, `10-Q`, or `8-K` text when the user explicitly asks for SEC filing material. Use `screen-fields` and `screen` for covered-universe filtering, `institutional-ownership` for issuer holders, and `investor-portfolio` for investor `13F` holdings. Resolve ambiguous company names with `resolve-ticker`, use `available-tickers` for the equity support snapshot only, use `global-rates`, `us-rates`, or `us-economic-indicators` for covered macro prompts, and treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class. Prefer synthesized, structured answers over raw dumps.
|
|
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, covered US macro prompts, and raw SEC filing requests. Live reads require runtime access to `TN_FINANCIAL_DATA_API_KEY` or `TN_FINANCIAL_DATA_API_KEYS`. Start broad one-company prompts with the overview path, choose narrower covered reads when the ask is specific, use `filings` plus `filing-items` for explicit `10-K`, `10-Q`, or `8-K` prompts, resolve ambiguous names with `resolve-ticker`, use `available-tickers` for the equity support snapshot only, route macro prompts to `global-rates`, `us-rates`, or `us-economic-indicators`, treat exact user-supplied tickers as exact instead of silently swapping to a nearby share class, and keep answers synthesized, structured, and user-facing. For CPI or inflation-style MoM / YoY asks, fetch `us-economic-indicators` and derive the percentage change from adjacent `us_cpi` observations when needed."
|
|
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,7 @@ 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, 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.
|
|
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
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.
|
|
@@ -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
|
|
@@ -147,9 +149,10 @@ tn-financial-data query earnings-transcripts --ticker AAPL --report-period 2025-
|
|
|
147
149
|
|
|
148
150
|
Meaning:
|
|
149
151
|
- structured transcript metadata view over stored earnings transcript artifacts
|
|
150
|
-
- returns `headline`, linked `report_period`, `quarter_label`, `published_at`, `call_date`, `question_count`, participant roster,
|
|
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
|
|
151
153
|
- this surface intentionally excludes upstream source provenance fields such as source URL, parser version, and raw payload references
|
|
152
|
-
- use it when the question is about who joined the call, how many analyst questions there were,
|
|
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
|
|
153
156
|
|
|
154
157
|
Earnings calendar:
|
|
155
158
|
|
|
@@ -258,7 +261,7 @@ tn-financial-data query news --ticker AAPL --publisher Reuters
|
|
|
258
261
|
```
|
|
259
262
|
|
|
260
263
|
Meaning:
|
|
261
|
-
-
|
|
264
|
+
- canonical issuer-scoped read for covered recent-news prompts
|
|
262
265
|
- use it before web search when the stored dataset can answer
|
|
263
266
|
- optionally pair with `snapshot` or `general-overview` if the user needs price or broader company context
|
|
264
267
|
|
|
@@ -266,14 +269,14 @@ News search:
|
|
|
266
269
|
|
|
267
270
|
```bash
|
|
268
271
|
tn-financial-data query news-search --query "tariff semiconductor" --ticker NVDA --limit 20
|
|
269
|
-
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
|
|
270
273
|
```
|
|
271
274
|
|
|
272
275
|
Meaning:
|
|
273
276
|
- article-centric search across the stored covered-news corpus
|
|
274
277
|
- use it for cross-ticker topic scans, theme tracking, or when the user gives keywords instead of one issuer
|
|
275
|
-
- supports optional `--ticker`, `--publisher`, `--
|
|
276
|
-
- 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
|
|
277
280
|
|
|
278
281
|
Insider trades:
|
|
279
282
|
|