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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # tn-financial-data
2
2
 
3
- Hosted US equity financial data and SEC filings for agents.
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
- - Cross-ticker news search over article title, summary, and body text with ticker, provider, publisher, and date filters
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" --provider alpaca --limit 10
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(transcripts.transcripts[0]?.quarter_label, transcripts.transcripts[0]?.question_count);
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
- provider: "alpaca",
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>] [--provider <id>] [--limit <n>] [--offset <n>] [--api-key <key>] [--base-url <url>]",
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, and speaker-turn structure for a single ticker.",
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, and speaker-turn structure for a single ticker."
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
- ["Fetch curated issuer news for a single ticker."],
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
- ["Search canonical news articles across the covered ticker universe."],
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");
@@ -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 };
@@ -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.1",
4
- "description": "Hosted US equity financial data and SEC filings CLI and client for agents",
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, and ordered `speaker_turns`
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, or the speaking order rather than the full transcript prose
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
- - preferred first read for covered recent-news prompts
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" --provider alpaca --offset 20
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`, `--provider`, `--start-date`, `--end-date`, `--limit`, and `--offset`
276
- - search results include provider and relevance metadata; do not assume the first result is the only relevant one when `has_more` is true
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