@cyanheads/secedgar-mcp-server 0.8.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +11 -4
  2. package/dist/mcp-server/resources/definitions/concepts.resource.d.ts.map +1 -1
  3. package/dist/mcp-server/resources/definitions/concepts.resource.js +7 -1
  4. package/dist/mcp-server/resources/definitions/concepts.resource.js.map +1 -1
  5. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts +4 -2
  6. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts.map +1 -1
  7. package/dist/mcp-server/tools/definitions/company-search.tool.js +33 -8
  8. package/dist/mcp-server/tools/definitions/company-search.tool.js.map +1 -1
  9. package/dist/mcp-server/tools/definitions/dataframe-describe.tool.js +1 -1
  10. package/dist/mcp-server/tools/definitions/dataframe-describe.tool.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts +4 -0
  12. package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/fetch-frames.tool.js +18 -2
  14. package/dist/mcp-server/tools/definitions/fetch-frames.tool.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts +6 -0
  16. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js +84 -9
  18. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts +5 -0
  20. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js +56 -1
  22. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/search-concepts.tool.d.ts +4 -0
  24. package/dist/mcp-server/tools/definitions/search-concepts.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/search-concepts.tool.js +18 -0
  26. package/dist/mcp-server/tools/definitions/search-concepts.tool.js.map +1 -1
  27. package/dist/services/edgar/concept-map.d.ts.map +1 -1
  28. package/dist/services/edgar/concept-map.js +31 -0
  29. package/dist/services/edgar/concept-map.js.map +1 -1
  30. package/dist/services/edgar/data/former-names.json +6395 -0
  31. package/dist/services/edgar/edgar-api-service.d.ts +41 -2
  32. package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
  33. package/dist/services/edgar/edgar-api-service.js +192 -15
  34. package/dist/services/edgar/edgar-api-service.js.map +1 -1
  35. package/dist/services/edgar/mirror/tickers-sync.d.ts +12 -5
  36. package/dist/services/edgar/mirror/tickers-sync.d.ts.map +1 -1
  37. package/dist/services/edgar/mirror/tickers-sync.js +50 -13
  38. package/dist/services/edgar/mirror/tickers-sync.js.map +1 -1
  39. package/dist/services/edgar/types.d.ts +24 -2
  40. package/dist/services/edgar/types.d.ts.map +1 -1
  41. package/package.json +3 -2
  42. package/server.json +3 -3
@@ -6,6 +6,23 @@
6
6
  */
7
7
  import { type FilingDocumentHeader } from './filing-headers.js';
8
8
  import type { CikMatch, CompanyConceptResponse, EftsResponse, FilingIndex, FramesResponse, SubmissionsResponse } from './types.js';
9
+ /** A candidate suggestion from the trigram scan on no-result name search. */
10
+ export interface CompanySuggestion {
11
+ cik: string;
12
+ name?: string;
13
+ ticker?: string;
14
+ }
15
+ /**
16
+ * Dice-coefficient trigram similarity between two strings.
17
+ * Returns a value in [0, 1]; 1 means identical.
18
+ */
19
+ export declare function trigramSimilarity(a: string, b: string): number;
20
+ /**
21
+ * Run a trigram similarity scan over the in-memory entry set.
22
+ * Only entries with a name are considered. Returns up to TRIGRAM_TOP_N
23
+ * candidates whose Dice score meets TRIGRAM_THRESHOLD, sorted descending.
24
+ */
25
+ export declare function suggestCompanies(query: string, allEntries: CikMatch[]): CompanySuggestion[];
9
26
  declare class EdgarApiService {
10
27
  private lastRequestAt;
11
28
  private minIntervalMs;
@@ -25,11 +42,16 @@ declare class EdgarApiService {
25
42
  * Resolve a query (ticker, name, or CIK) to company match(es).
26
43
  * - Numeric input → direct CIK lookup
27
44
  * - 1-5 uppercase letters → ticker lookup (O(1))
28
- * - Otherwise → name search (prefix, then substring)
45
+ * - Otherwise → name search (prefix, then substring, then trigram suggestions)
46
+ * Returns a single match, an array of multiple matches, or an empty array (no match).
47
+ * On no-result name search, the returned empty array carries `suggestions` on
48
+ * the thrown error at the handler layer — call `suggestCompanies` there.
29
49
  */
30
50
  resolveCik(query: string): Promise<CikMatch | CikMatch[]>;
31
51
  /** Reverse lookup: CIK → ticker symbol. */
32
52
  cikToTicker(cik: string): Promise<string | undefined>;
53
+ /** Return the current in-memory entry list (used by the handler for trigram suggestions). */
54
+ getAllEntries(): Promise<CikMatch[]>;
33
55
  getSubmissions(cik: string): Promise<SubmissionsResponse>;
34
56
  searchFilings(params: {
35
57
  query: string;
@@ -121,9 +143,26 @@ declare class EdgarApiService {
121
143
  * Load the ticker index, preferring the local mirror when enabled and synced.
122
144
  * The live directory is the cold-start / not-ready fallback (and the only path
123
145
  * when the mirror is off).
146
+ *
147
+ * In addition to company_tickers.json (operating companies), also loads
148
+ * company_tickers_mf.json (ETFs and mutual funds) and merges fund symbols into
149
+ * the byTicker index so fund tickers like VOO, SCHD, and JEPI resolve correctly.
124
150
  */
125
151
  private loadTickerCache;
126
- /** Build the in-memory CIK index from normalized entries (live JSON or mirror rows). */
152
+ /**
153
+ * Fetch and parse company_tickers_mf.json. Returns an empty array on failure
154
+ * so a SEC file outage does not break company resolution entirely.
155
+ * Entries are MF-only: they carry seriesId/classId and no `name` field.
156
+ * These merge into byTicker only (not byCik) since one registrant trust
157
+ * holds many fund series.
158
+ */
159
+ private loadMfTickers;
160
+ /**
161
+ * Build the in-memory CIK index from normalized entries (live JSON or mirror rows).
162
+ * MF entries (with seriesId/classId) go into byTicker only — not byCik — because
163
+ * a registrant trust (e.g. CIK 36405 = Vanguard Index Funds) holds many series.
164
+ * Former-name entries go into allEntries only (name search only, no ticker/CIK index).
165
+ */
127
166
  private buildTickerCache;
128
167
  }
129
168
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"edgar-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edgar-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,85 @@ import { notFound, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
8
8
  import { httpErrorFromResponse } from '@cyanheads/mcp-ts-core/utils';
9
9
  import { getServerConfig } from '../../config/server-config.js';
10
10
  import { getEdgarMirror } from '../../services/edgar/mirror/index.js';
11
+ import formerNamesData from './data/former-names.json' with { type: 'json' };
11
12
  import { parseFilingHeaders } from './filing-headers.js';
12
13
  const MAX_RETRIES = 3;
13
14
  const BASE_BACKOFF_MS = 1000;
14
15
  const RETRYABLE_STATUSES = new Set([429, 500, 502, 503, 504]);
16
+ /** URL for SEC's mutual-fund ticker file (ETFs and open-end funds). */
17
+ const MF_TICKERS_URL = 'https://www.sec.gov/files/company_tickers_mf.json';
18
+ /** Trigram similarity threshold — minimum Dice score to include a candidate suggestion. */
19
+ const TRIGRAM_THRESHOLD = 0.3;
20
+ /** Maximum number of near-match suggestions to include. */
21
+ const TRIGRAM_TOP_N = 3;
22
+ // ---------------------------------------------------------------------------
23
+ // Trigram (Dice-coefficient) similarity
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * Build the set of trigrams for a string.
27
+ * Pads with two spaces on each side so edge characters are covered.
28
+ */
29
+ function trigramSet(s) {
30
+ const padded = ` ${s} `;
31
+ const grams = new Set();
32
+ for (let i = 0; i < padded.length - 2; i++) {
33
+ grams.add(padded.slice(i, i + 3));
34
+ }
35
+ return grams;
36
+ }
37
+ /**
38
+ * Dice-coefficient trigram similarity between two strings.
39
+ * Returns a value in [0, 1]; 1 means identical.
40
+ */
41
+ export function trigramSimilarity(a, b) {
42
+ if (a === b)
43
+ return 1;
44
+ const ga = trigramSet(a);
45
+ const gb = trigramSet(b);
46
+ if (ga.size === 0 && gb.size === 0)
47
+ return 1;
48
+ if (ga.size === 0 || gb.size === 0)
49
+ return 0;
50
+ let intersection = 0;
51
+ for (const g of ga) {
52
+ if (gb.has(g))
53
+ intersection++;
54
+ }
55
+ return (2 * intersection) / (ga.size + gb.size);
56
+ }
57
+ /**
58
+ * Run a trigram similarity scan over the in-memory entry set.
59
+ * Only entries with a name are considered. Returns up to TRIGRAM_TOP_N
60
+ * candidates whose Dice score meets TRIGRAM_THRESHOLD, sorted descending.
61
+ */
62
+ export function suggestCompanies(query, allEntries) {
63
+ const q = query.toLowerCase();
64
+ const scored = [];
65
+ for (const entry of allEntries) {
66
+ if (!entry.name)
67
+ continue;
68
+ const score = trigramSimilarity(q, entry.name.toLowerCase());
69
+ if (score >= TRIGRAM_THRESHOLD) {
70
+ scored.push({ score, entry });
71
+ }
72
+ }
73
+ scored.sort((a, b) => b.score - a.score);
74
+ const top = scored.slice(0, TRIGRAM_TOP_N);
75
+ // Dedup by CIK — keep the highest-scored entry per CIK.
76
+ const seen = new Set();
77
+ const suggestions = [];
78
+ for (const { entry } of top) {
79
+ if (!seen.has(entry.cik)) {
80
+ seen.add(entry.cik);
81
+ suggestions.push({
82
+ cik: entry.cik,
83
+ ...(entry.name !== undefined ? { name: entry.name } : {}),
84
+ ...(entry.ticker !== undefined ? { ticker: entry.ticker } : {}),
85
+ });
86
+ }
87
+ }
88
+ return suggestions;
89
+ }
15
90
  class EdgarApiService {
16
91
  lastRequestAt = 0;
17
92
  minIntervalMs;
@@ -53,7 +128,10 @@ class EdgarApiService {
53
128
  * Resolve a query (ticker, name, or CIK) to company match(es).
54
129
  * - Numeric input → direct CIK lookup
55
130
  * - 1-5 uppercase letters → ticker lookup (O(1))
56
- * - Otherwise → name search (prefix, then substring)
131
+ * - Otherwise → name search (prefix, then substring, then trigram suggestions)
132
+ * Returns a single match, an array of multiple matches, or an empty array (no match).
133
+ * On no-result name search, the returned empty array carries `suggestions` on
134
+ * the thrown error at the handler layer — call `suggestCompanies` there.
57
135
  */
58
136
  async resolveCik(query) {
59
137
  const cache = await this.getTickerCache();
@@ -68,14 +146,14 @@ class EdgarApiService {
68
146
  // return a CIK-only match and let the caller resolve identity from submissions.
69
147
  return { cik: padded };
70
148
  }
71
- // Short alphabetic → ticker
149
+ // Short alphabetic → ticker (includes ETF/MF tickers from company_tickers_mf.json)
72
150
  const upper = trimmed.toUpperCase();
73
151
  if (/^[A-Z]{1,5}$/.test(upper)) {
74
152
  const match = cache.byTicker.get(upper);
75
153
  if (match)
76
154
  return match;
77
155
  }
78
- // Name search: exact → prefix → substring
156
+ // Name search: exact → prefix → substring (current names + former names)
79
157
  const lower = trimmed.toLowerCase();
80
158
  const exact = [];
81
159
  const prefix = [];
@@ -94,11 +172,22 @@ class EdgarApiService {
94
172
  substring.push(entry);
95
173
  }
96
174
  }
97
- const results = [...exact, ...prefix, ...substring].slice(0, 5);
175
+ const combined = [...exact, ...prefix, ...substring];
176
+ // Dedup by CIK (current + former names may match the same registrant).
177
+ const seen = new Set();
178
+ const deduped = [];
179
+ for (const entry of combined) {
180
+ if (!seen.has(entry.cik)) {
181
+ seen.add(entry.cik);
182
+ deduped.push(entry);
183
+ }
184
+ }
185
+ const results = deduped.slice(0, 5);
98
186
  if (results.length > 0) {
99
187
  return results.length === 1 ? results[0] : results;
100
188
  }
101
- // Also try as ticker if nothing matched
189
+ // Also try as ticker if nothing matched (handles >5-char and digit-containing symbols
190
+ // that bypassed the early ticker gate above)
102
191
  const tickerMatch = cache.byTicker.get(upper);
103
192
  return tickerMatch ?? [];
104
193
  }
@@ -107,6 +196,11 @@ class EdgarApiService {
107
196
  const cache = await this.getTickerCache();
108
197
  return cache.byCik.get(cik.padStart(10, '0'))?.ticker;
109
198
  }
199
+ /** Return the current in-memory entry list (used by the handler for trigram suggestions). */
200
+ async getAllEntries() {
201
+ const cache = await this.getTickerCache();
202
+ return cache.allEntries;
203
+ }
110
204
  // --- SEC API Methods ---
111
205
  getSubmissions(cik) {
112
206
  const padded = cik.padStart(10, '0');
@@ -324,40 +418,123 @@ class EdgarApiService {
324
418
  * Load the ticker index, preferring the local mirror when enabled and synced.
325
419
  * The live directory is the cold-start / not-ready fallback (and the only path
326
420
  * when the mirror is off).
421
+ *
422
+ * In addition to company_tickers.json (operating companies), also loads
423
+ * company_tickers_mf.json (ETFs and mutual funds) and merges fund symbols into
424
+ * the byTicker index so fund tickers like VOO, SCHD, and JEPI resolve correctly.
327
425
  */
328
426
  async loadTickerCache() {
329
427
  const mirror = getEdgarMirror();
330
428
  if (mirror && (await mirror.tickersReady())) {
331
429
  const rows = await mirror.getTickerRows();
332
430
  if (rows.length > 0)
333
- return this.buildTickerCache(rows);
431
+ return this.buildTickerCache(rows, buildFormerNameEntries());
334
432
  }
335
433
  else if (mirror && !getServerConfig().mirrorFallbackLive) {
336
434
  throw serviceUnavailable('EDGAR mirror enabled but the ticker layer is not synced; run `bun run mirror:init`', { layer: 'tickers' });
337
435
  }
436
+ // Fetch operating-company tickers (company_tickers.json)
338
437
  const raw = await this.fetchJson('https://www.sec.gov/files/company_tickers.json');
339
- return this.buildTickerCache(Object.values(raw).map((entry) => ({
438
+ const entries = Object.values(raw).map((entry) => ({
340
439
  cik: String(entry.cik_str).padStart(10, '0'),
341
440
  name: entry.title,
342
441
  ticker: entry.ticker,
343
- })));
442
+ }));
443
+ // Fetch ETF/mutual-fund tickers (company_tickers_mf.json).
444
+ // 404 or any error is non-fatal — degrade gracefully with operating-company-only index.
445
+ const mfEntries = await this.loadMfTickers();
446
+ entries.push(...mfEntries);
447
+ // Merge the committed former-names asset.
448
+ const formerEntries = buildFormerNameEntries();
449
+ return this.buildTickerCache(entries, formerEntries);
450
+ }
451
+ /**
452
+ * Fetch and parse company_tickers_mf.json. Returns an empty array on failure
453
+ * so a SEC file outage does not break company resolution entirely.
454
+ * Entries are MF-only: they carry seriesId/classId and no `name` field.
455
+ * These merge into byTicker only (not byCik) since one registrant trust
456
+ * holds many fund series.
457
+ */
458
+ async loadMfTickers() {
459
+ try {
460
+ const mfRaw = await this.fetchJson(MF_TICKERS_URL);
461
+ if (!Array.isArray(mfRaw?.fields) || !Array.isArray(mfRaw?.data))
462
+ return [];
463
+ const fieldIdx = {
464
+ cik: mfRaw.fields.indexOf('cik'),
465
+ seriesId: mfRaw.fields.indexOf('seriesId'),
466
+ classId: mfRaw.fields.indexOf('classId'),
467
+ symbol: mfRaw.fields.indexOf('symbol'),
468
+ };
469
+ if (fieldIdx.cik < 0 || fieldIdx.symbol < 0)
470
+ return [];
471
+ return mfRaw.data
472
+ .filter((row) => row[fieldIdx.symbol])
473
+ .map((row) => ({
474
+ cik: String(row[fieldIdx.cik]).padStart(10, '0'),
475
+ name: '',
476
+ ticker: String(row[fieldIdx.symbol]),
477
+ seriesId: fieldIdx.seriesId >= 0 ? String(row[fieldIdx.seriesId]) : '',
478
+ classId: fieldIdx.classId >= 0 ? String(row[fieldIdx.classId]) : '',
479
+ }));
480
+ }
481
+ catch {
482
+ // Degrade gracefully — fund tickers won't resolve, but operating companies still work.
483
+ return [];
484
+ }
344
485
  }
345
- /** Build the in-memory CIK index from normalized entries (live JSON or mirror rows). */
346
- buildTickerCache(entries) {
486
+ /**
487
+ * Build the in-memory CIK index from normalized entries (live JSON or mirror rows).
488
+ * MF entries (with seriesId/classId) go into byTicker only — not byCik — because
489
+ * a registrant trust (e.g. CIK 36405 = Vanguard Index Funds) holds many series.
490
+ * Former-name entries go into allEntries only (name search only, no ticker/CIK index).
491
+ */
492
+ buildTickerCache(entries, formerEntries = []) {
347
493
  const byTicker = new Map();
348
494
  const byCik = new Map();
349
495
  const allEntries = [];
350
496
  for (const entry of entries) {
351
- const match = { cik: entry.cik, name: entry.name, ticker: entry.ticker };
352
- byTicker.set(entry.ticker.toUpperCase(), match);
353
- const existing = byCik.get(match.cik);
354
- byCik.set(match.cik, existing ? pickPreferredTicker(existing, match) : match);
355
- allEntries.push(match);
497
+ const isMf = Boolean(entry.seriesId !== undefined && entry.seriesId !== '');
498
+ const hasName = Boolean(entry.name);
499
+ const match = {
500
+ cik: entry.cik,
501
+ ticker: entry.ticker,
502
+ ...(hasName ? { name: entry.name } : {}),
503
+ ...(isMf && entry.seriesId ? { seriesId: entry.seriesId } : {}),
504
+ ...(isMf && entry.classId ? { classId: entry.classId } : {}),
505
+ };
506
+ // Operating-company tickers take precedence: a fund symbol must not override an
507
+ // existing equity ticker on the rare cross-file symbol collision (e.g. SPCX).
508
+ const tickerKey = entry.ticker.toUpperCase();
509
+ if (!isMf || !byTicker.has(tickerKey)) {
510
+ byTicker.set(tickerKey, match);
511
+ }
512
+ // MF entries must not overwrite byCik — the trust CIK is 1:many with fund series.
513
+ if (!isMf) {
514
+ const existing = byCik.get(match.cik);
515
+ byCik.set(match.cik, existing ? pickPreferredTicker(existing, match) : match);
516
+ }
517
+ // Only push to allEntries if the entry has a name (for name search).
518
+ // MF entries have no name, so they're ticker-only.
519
+ if (match.name) {
520
+ allEntries.push(match);
521
+ }
522
+ }
523
+ // Former-name entries: allEntries only (name search + trigram), no ticker/CIK index.
524
+ for (const fn of formerEntries) {
525
+ allEntries.push({ cik: fn.cik, name: fn.name });
356
526
  }
357
527
  this.tickerCache = { byTicker, byCik, allEntries, loadedAt: Date.now() };
358
528
  return this.tickerCache;
359
529
  }
360
530
  }
531
+ /**
532
+ * Build former-name entries from the committed static asset.
533
+ * Each tuple is [lowercasedName, zeroPaddedCIK].
534
+ */
535
+ function buildFormerNameEntries() {
536
+ return formerNamesData.map(([name, cik]) => ({ cik, name }));
537
+ }
361
538
  /**
362
539
  * Pick the better of two ticker entries sharing a CIK. SEC's
363
540
  * `company_tickers.json` lists every class, preferred-share, and debt-security
@@ -1 +1 @@
1
- {"version":3,"file":"edgar-api-service.js","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edgar-api-service.js","sourceRoot":"","sources":["../../../src/services/edgar/edgar-api-service.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  /**
2
2
  * @fileoverview Ingester for the ticker/CIK layer. Downloads SEC's
3
- * `company_tickers.json` (small direct-download JSON) and yields one page of
4
- * rows. Upsert-only: the directory rarely drops entries and CIKs are permanent,
3
+ * `company_tickers.json` (operating companies) and `company_tickers_mf.json`
4
+ * (ETFs and mutual funds), merges them, and yields one page of rows.
5
+ * Upsert-only: the directory rarely drops entries and CIKs are permanent,
5
6
  * so a delisted ticker lingering with its historical CIK is low-harm.
6
7
  * @module services/edgar/mirror/tickers-sync
7
8
  */
8
9
  import type { SyncGenerator } from '@cyanheads/mcp-ts-core/mirror';
9
10
  /**
10
- * Build the ticker-layer ingester. The returned generator downloads the full
11
- * directory and yields it as a single page; the file is tiny, so refresh simply
12
- * re-downloads and re-upserts.
11
+ * Build the ticker-layer ingester. The returned generator downloads both
12
+ * company_tickers.json (operating companies) and company_tickers_mf.json
13
+ * (ETFs and mutual funds), merges them into a single page, and yields it.
14
+ * The files are small, so refresh simply re-downloads and re-upserts.
15
+ *
16
+ * Mirror schema carries only {ticker, cik, name} — no series/class columns.
17
+ * Fund entries are ingested with an empty name (the name field is absent from
18
+ * company_tickers_mf.json). They resolve by ticker on the mirror path just as
19
+ * they do on the live path; seriesId/classId enrichment is live-path-only.
13
20
  */
14
21
  export declare function makeTickersSync(opts: {
15
22
  userAgent: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tickers-sync.d.ts","sourceRoot":"","sources":["../../../../src/services/edgar/mirror/tickers-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,+BAA+B,CAAC;AAUvC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CA+B1E"}
1
+ {"version":3,"file":"tickers-sync.d.ts","sourceRoot":"","sources":["../../../../src/services/edgar/mirror/tickers-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,+BAA+B,CAAC;AAmBvC;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CA2D1E"}
@@ -1,28 +1,33 @@
1
1
  /**
2
2
  * @fileoverview Ingester for the ticker/CIK layer. Downloads SEC's
3
- * `company_tickers.json` (small direct-download JSON) and yields one page of
4
- * rows. Upsert-only: the directory rarely drops entries and CIKs are permanent,
3
+ * `company_tickers.json` (operating companies) and `company_tickers_mf.json`
4
+ * (ETFs and mutual funds), merges them, and yields one page of rows.
5
+ * Upsert-only: the directory rarely drops entries and CIKs are permanent,
5
6
  * so a delisted ticker lingering with its historical CIK is low-harm.
6
7
  * @module services/edgar/mirror/tickers-sync
7
8
  */
8
9
  import { serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
9
10
  import { lastModifiedToIso, TICKERS_URL } from './types.js';
11
+ /** URL for SEC's mutual-fund / ETF ticker directory. */
12
+ const MF_TICKERS_URL = 'https://www.sec.gov/files/company_tickers_mf.json';
10
13
  /**
11
- * Build the ticker-layer ingester. The returned generator downloads the full
12
- * directory and yields it as a single page; the file is tiny, so refresh simply
13
- * re-downloads and re-upserts.
14
+ * Build the ticker-layer ingester. The returned generator downloads both
15
+ * company_tickers.json (operating companies) and company_tickers_mf.json
16
+ * (ETFs and mutual funds), merges them into a single page, and yields it.
17
+ * The files are small, so refresh simply re-downloads and re-upserts.
18
+ *
19
+ * Mirror schema carries only {ticker, cik, name} — no series/class columns.
20
+ * Fund entries are ingested with an empty name (the name field is absent from
21
+ * company_tickers_mf.json). They resolve by ticker on the mirror path just as
22
+ * they do on the live path; seriesId/classId enrichment is live-path-only.
14
23
  */
15
24
  export function makeTickersSync(opts) {
16
25
  return async function* tickersSync(ctx) {
17
- const response = await fetch(TICKERS_URL, {
18
- headers: { 'User-Agent': opts.userAgent, Accept: 'application/json' },
19
- signal: ctx.signal,
20
- });
26
+ const headers = { 'User-Agent': opts.userAgent, Accept: 'application/json' };
27
+ // Fetch operating-company tickers
28
+ const response = await fetch(TICKERS_URL, { headers, signal: ctx.signal });
21
29
  if (!response.ok) {
22
- throw serviceUnavailable(`SEC company_tickers.json download failed (HTTP ${response.status})`, {
23
- url: TICKERS_URL,
24
- status: response.status,
25
- });
30
+ throw serviceUnavailable(`SEC company_tickers.json download failed (HTTP ${response.status})`, { url: TICKERS_URL, status: response.status });
26
31
  }
27
32
  const raw = (await response.json());
28
33
  const records = [];
@@ -35,6 +40,38 @@ export function makeTickersSync(opts) {
35
40
  name: entry.title ?? '',
36
41
  });
37
42
  }
43
+ // Operating-company tickers take precedence on a cross-file symbol collision (e.g. SPCX),
44
+ // so a fund symbol is skipped when it duplicates an equity ticker already ingested above.
45
+ const equityTickers = new Set(records.map((r) => r.ticker));
46
+ // Fetch ETF/mutual-fund tickers — non-fatal on failure.
47
+ try {
48
+ const mfResponse = await fetch(MF_TICKERS_URL, { headers, signal: ctx.signal });
49
+ if (mfResponse.ok) {
50
+ const mfRaw = (await mfResponse.json());
51
+ if (Array.isArray(mfRaw?.fields) && Array.isArray(mfRaw?.data)) {
52
+ const symbolIdx = mfRaw.fields.indexOf('symbol');
53
+ const cikIdx = mfRaw.fields.indexOf('cik');
54
+ if (symbolIdx >= 0 && cikIdx >= 0) {
55
+ for (const row of mfRaw.data) {
56
+ const symbol = row[symbolIdx];
57
+ if (!symbol)
58
+ continue;
59
+ const ticker = String(symbol).toUpperCase();
60
+ if (equityTickers.has(ticker))
61
+ continue;
62
+ records.push({
63
+ ticker,
64
+ cik: String(row[cikIdx]).padStart(10, '0'),
65
+ name: '',
66
+ });
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ catch {
73
+ // Non-fatal — mirror will resolve operating companies; fund tickers will miss.
74
+ }
38
75
  // Checkpoint must be lexicographically monotonic — store ISO 8601, not the raw HTTP-date.
39
76
  const checkpoint = lastModifiedToIso(response.headers.get('last-modified'));
40
77
  yield { records, checkpoint };
@@ -1 +1 @@
1
- {"version":3,"file":"tickers-sync.js","sourceRoot":"","sources":["../../../../src/services/edgar/mirror/tickers-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS5D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAA2B;IACzD,OAAO,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,GAAgB;QACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACxC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACrE,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,kBAAkB,CACtB,kDAAkD,QAAQ,CAAC,MAAM,GAAG,EACpE;gBACE,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CACF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmC,CAAC;QACtE,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,SAAS;YAC7B,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;gBAClC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;gBAC5C,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAED,0FAA0F;QAC1F,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tickers-sync.js","sourceRoot":"","sources":["../../../../src/services/edgar/mirror/tickers-sync.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,12 @@
5
5
  /** CIK resolution result from company_tickers.json lookup. */
6
6
  export interface CikMatch {
7
7
  cik: string;
8
+ /** SEC fund class ID (e.g. "C000092055"). Present only for ETF/mutual-fund tickers resolved via company_tickers_mf.json. */
9
+ classId?: string;
8
10
  exchange?: string;
9
11
  name?: string;
12
+ /** SEC fund series ID (e.g. "S000002839"). Present only for ETF/mutual-fund tickers resolved via company_tickers_mf.json. */
13
+ seriesId?: string;
10
14
  ticker?: string;
11
15
  }
12
16
  /** Raw entry from SEC's company_tickers.json. */
@@ -19,7 +23,8 @@ export interface TickerEntry {
19
23
  export interface SubmissionsResponse {
20
24
  cik: string;
21
25
  entityType: string;
22
- exchanges: string[];
26
+ /** Listed exchanges. SEC returns `null` elements for entities with no listed exchange (e.g. private or pre-IPO filers). */
27
+ exchanges: Array<string | null>;
23
28
  filings: {
24
29
  recent: FilingsRecent;
25
30
  files: Array<{
@@ -29,7 +34,8 @@ export interface SubmissionsResponse {
29
34
  filingTo: string;
30
35
  }>;
31
36
  };
32
- fiscalYearEnd: string;
37
+ /** Fiscal year end (MMDD). `null` for filers SEC records no fiscal year end for. */
38
+ fiscalYearEnd: string | null;
33
39
  name: string;
34
40
  sic: string;
35
41
  sicDescription: string;
@@ -148,6 +154,13 @@ export interface FrameEntry {
148
154
  export type ConceptGroup = 'income_statement' | 'balance_sheet' | 'cash_flow' | 'per_share' | 'entity_info';
149
155
  /** XBRL taxonomy a concept belongs to. */
150
156
  export type ConceptTaxonomy = 'us-gaap' | 'ifrs-full' | 'dei';
157
+ /** An alternate-semantics XBRL tag related to a concept, with the reason it differs. */
158
+ export interface RelatedTag {
159
+ /** How this tag differs semantically from the mapped tag (e.g. "includes restricted cash"). */
160
+ note: string;
161
+ /** XBRL tag a meaningful share of filers report this metric under instead. */
162
+ tag: string;
163
+ }
151
164
  /** Friendly concept name mapping. */
152
165
  export interface ConceptMapping {
153
166
  group: ConceptGroup;
@@ -158,6 +171,15 @@ export interface ConceptMapping {
158
171
  */
159
172
  ifrsTags?: string[];
160
173
  label: string;
174
+ /**
175
+ * Alternate-semantics XBRL tags a meaningful share of filers use as their primary
176
+ * line for this metric, surfaced as a hint by `secedgar_fetch_frames`. NOT pure
177
+ * synonyms of `tags` (those differ historically but mean the same thing) — these
178
+ * carry a different definition (e.g. cash incl. restricted cash, equity incl.
179
+ * noncontrolling interest), so they are deliberately kept OUT of `tags` to avoid
180
+ * conflating them into `secedgar_get_financials`' first-non-null fallback chain.
181
+ */
182
+ relatedTags?: RelatedTag[];
161
183
  tags: string[];
162
184
  taxonomy: ConceptTaxonomy;
163
185
  unit: string;