@cyanheads/secedgar-mcp-server 0.6.2 → 0.7.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 (59) hide show
  1. package/README.md +27 -3
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js +1 -1
  5. package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js.map +1 -1
  6. package/dist/mcp-server/resources/definitions/concepts.resource.js +2 -2
  7. package/dist/mcp-server/resources/definitions/concepts.resource.js.map +1 -1
  8. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts +3 -1
  9. package/dist/mcp-server/tools/definitions/company-search.tool.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/company-search.tool.js +12 -0
  11. package/dist/mcp-server/tools/definitions/company-search.tool.js.map +1 -1
  12. package/dist/mcp-server/tools/definitions/dataframe-describe.tool.d.ts +1 -1
  13. package/dist/mcp-server/tools/definitions/dataframe-describe.tool.d.ts.map +1 -1
  14. package/dist/mcp-server/tools/definitions/dataframe-drop.tool.d.ts +1 -1
  15. package/dist/mcp-server/tools/definitions/dataframe-drop.tool.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts +8 -1
  17. package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts.map +1 -1
  18. package/dist/mcp-server/tools/definitions/dataframe-query.tool.js +20 -0
  19. package/dist/mcp-server/tools/definitions/dataframe-query.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts +1 -1
  21. package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts +1 -1
  23. package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts.map +1 -1
  24. package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts +6 -1
  25. package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/get-financials.tool.js +30 -3
  27. package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts +54 -0
  29. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js +258 -0
  31. package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts +58 -0
  33. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js +284 -0
  35. package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/search-concepts.tool.d.ts +4 -2
  37. package/dist/mcp-server/tools/definitions/search-concepts.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/search-concepts.tool.js +30 -13
  39. package/dist/mcp-server/tools/definitions/search-concepts.tool.js.map +1 -1
  40. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts +4 -1
  41. package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/definitions/search-filings.tool.js +16 -0
  43. package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -1
  44. package/dist/services/edgar/concept-map.d.ts +4 -1
  45. package/dist/services/edgar/concept-map.d.ts.map +1 -1
  46. package/dist/services/edgar/concept-map.js +18 -3
  47. package/dist/services/edgar/concept-map.js.map +1 -1
  48. package/dist/services/edgar/edgar-api-service.d.ts +10 -0
  49. package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
  50. package/dist/services/edgar/edgar-api-service.js +20 -0
  51. package/dist/services/edgar/edgar-api-service.js.map +1 -1
  52. package/dist/services/edgar/ownership-parser.d.ts +76 -0
  53. package/dist/services/edgar/ownership-parser.d.ts.map +1 -0
  54. package/dist/services/edgar/ownership-parser.js +200 -0
  55. package/dist/services/edgar/ownership-parser.js.map +1 -0
  56. package/dist/services/edgar/types.d.ts +6 -0
  57. package/dist/services/edgar/types.d.ts.map +1 -1
  58. package/package.json +7 -3
  59. package/server.json +3 -3
@@ -0,0 +1,200 @@
1
+ /**
2
+ * @fileoverview Pure parsers for SEC ownership form XML — Form 3/4/5 (ownershipDocument)
3
+ * and 13F-HR information tables (informationTable). Uses htmlparser2 + domutils (direct
4
+ * dependencies). External entity expansion and
5
+ * DTD processing are disabled by default in htmlparser2's xmlMode, preventing XXE.
6
+ * @module services/edgar/ownership-parser
7
+ */
8
+ import { findAll, findOne, textContent } from 'domutils';
9
+ import { parseDocument } from 'htmlparser2';
10
+ /** Transaction type codes used in Form 4 nonDerivativeTransaction/derivativeTransaction. */
11
+ const TRANSACTION_CODE_MAP = {
12
+ P: 'purchase',
13
+ S: 'sale',
14
+ V: 'voluntary_conversion',
15
+ A: 'grant_or_award',
16
+ D: 'return_to_issuer',
17
+ F: 'tax_withholding',
18
+ G: 'gift',
19
+ M: 'conversion_of_derivative',
20
+ X: 'expiration',
21
+ C: 'conversion',
22
+ E: 'expiration_short',
23
+ H: 'expiration_long',
24
+ I: 'discretionary',
25
+ O: 'out_of_money_exercise',
26
+ U: 'tender',
27
+ W: 'acquired_by_will',
28
+ Z: 'deposit_into_voting_trust',
29
+ J: 'other',
30
+ };
31
+ // ---------------------------------------------------------------------------
32
+ // Internal helpers
33
+ // ---------------------------------------------------------------------------
34
+ /** Return the trimmed text content of the first matching tag under `parent`, or undefined. */
35
+ function childText(parent, tagName) {
36
+ const child = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === tagName.toLowerCase(), parent.children, true);
37
+ if (!child)
38
+ return;
39
+ const t = textContent(child).trim();
40
+ return t || undefined;
41
+ }
42
+ /** Return the trimmed `<value>` child text of a tag, or undefined. */
43
+ function valueChild(parent, tagName) {
44
+ const wrapper = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === tagName.toLowerCase(), parent.children, true);
45
+ if (!wrapper)
46
+ return;
47
+ const valueEl = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'value', wrapper.children, true);
48
+ if (valueEl) {
49
+ const t = textContent(valueEl).trim();
50
+ return t || undefined;
51
+ }
52
+ // Some older filings omit the <value> wrapper — use the tag text directly.
53
+ const t = textContent(wrapper).trim();
54
+ return t || undefined;
55
+ }
56
+ function parseFloat2(s) {
57
+ if (!s)
58
+ return;
59
+ const n = Number(s.replace(/,/g, ''));
60
+ return Number.isFinite(n) ? n : undefined;
61
+ }
62
+ function parseBool(s) {
63
+ return s === 'true' || s === '1';
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Form 4 parser
67
+ // ---------------------------------------------------------------------------
68
+ function parseTransaction(el, isDerivative) {
69
+ const code = valueChild(el, 'transactionCode') ?? valueChild(el, 'transactionCoding') ?? '';
70
+ // transactionCode may be nested: <transactionCoding><transactionCode><value>S</value>...
71
+ // The valueChild call on 'transactionCoding' finds the text of the whole sub-tree if no <value>
72
+ // directly under it — we need just the transactionCode value inside transactionCoding.
73
+ const codingEl = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'transactioncoding', el.children, true);
74
+ const rawCode = codingEl ? (valueChild(codingEl, 'transactionCode') ?? '') : code;
75
+ const acqDispCode = valueChild(el, 'transactionAcquiredDisposedCode') ?? 'A';
76
+ const sharesRaw = parseFloat2(valueChild(el, 'transactionShares'));
77
+ const shares = sharesRaw !== undefined
78
+ ? acqDispCode.toUpperCase() === 'D'
79
+ ? -sharesRaw
80
+ : sharesRaw
81
+ : undefined;
82
+ const directOrIndirect = valueChild(el, 'directOrIndirectOwnership')?.toUpperCase();
83
+ const ownershipType = directOrIndirect === 'D' ? 'direct' : directOrIndirect === 'I' ? 'indirect' : undefined;
84
+ const ownershipNature = valueChild(el, 'natureOfOwnership');
85
+ return {
86
+ security_title: valueChild(el, 'securityTitle') ?? '',
87
+ transaction_date: valueChild(el, 'transactionDate'),
88
+ transaction_code: rawCode.toUpperCase(),
89
+ transaction_type: TRANSACTION_CODE_MAP[rawCode.toUpperCase()] ?? 'other',
90
+ is_derivative: isDerivative,
91
+ shares_traded: shares,
92
+ price_per_share: parseFloat2(valueChild(el, 'transactionPricePerShare')),
93
+ shares_owned_after: parseFloat2(valueChild(el, 'sharesOwnedFollowingTransaction')),
94
+ ownership_type: ownershipType,
95
+ ownership_nature: ownershipNature,
96
+ };
97
+ }
98
+ function parseReportingOwner(el) {
99
+ const idEl = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'reportingownerid', el.children, true);
100
+ const relEl = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'reportingownerrelationship', el.children, true);
101
+ return {
102
+ cik: (idEl ? childText(idEl, 'rptOwnerCik') : undefined) ?? '',
103
+ name: (idEl ? childText(idEl, 'rptOwnerName') : undefined) ?? '',
104
+ is_director: parseBool(relEl ? childText(relEl, 'isDirector') : undefined),
105
+ is_officer: parseBool(relEl ? childText(relEl, 'isOfficer') : undefined),
106
+ is_ten_percent_owner: parseBool(relEl ? childText(relEl, 'isTenPercentOwner') : undefined),
107
+ is_other: parseBool(relEl ? childText(relEl, 'isOther') : undefined),
108
+ officer_title: relEl ? childText(relEl, 'officerTitle') : undefined,
109
+ };
110
+ }
111
+ /**
112
+ * Parse a Form 3/4/5 ownershipDocument XML string.
113
+ * Disables external entity loading via htmlparser2's xmlMode (no DTD/entity expansion).
114
+ */
115
+ export function parseForm4Xml(xml) {
116
+ const doc = parseDocument(xml, { xmlMode: true, decodeEntities: true });
117
+ const rootEl = findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'ownershipdocument', doc.children, true);
118
+ const issuerEl = rootEl
119
+ ? findOne((e) => e.type === 'tag' && e.name.toLowerCase() === 'issuer', rootEl.children, false)
120
+ : null;
121
+ const ownerEls = rootEl
122
+ ? findAll((e) => e.type === 'tag' && e.name.toLowerCase() === 'reportingowner', rootEl.children)
123
+ : [];
124
+ // Collect both nonDerivativeTransaction and derivativeTransaction elements
125
+ const nonDerivTxEls = rootEl
126
+ ? findAll((e) => e.type === 'tag' && e.name.toLowerCase() === 'nonderivativetransaction', rootEl.children)
127
+ : [];
128
+ const derivTxEls = rootEl
129
+ ? findAll((e) => e.type === 'tag' && e.name.toLowerCase() === 'derivativetransaction', rootEl.children)
130
+ : [];
131
+ const transactions = [
132
+ ...nonDerivTxEls.map((el) => parseTransaction(el, false)),
133
+ ...derivTxEls.map((el) => parseTransaction(el, true)),
134
+ ];
135
+ return {
136
+ issuer_cik: (issuerEl ? childText(issuerEl, 'issuerCik') : undefined) ?? '',
137
+ issuer_name: (issuerEl ? childText(issuerEl, 'issuerName') : undefined) ?? '',
138
+ issuer_ticker: (issuerEl ? childText(issuerEl, 'issuerTradingSymbol') : undefined) || undefined,
139
+ period_of_report: rootEl ? childText(rootEl, 'periodOfReport') : undefined,
140
+ reporting_owners: ownerEls.map(parseReportingOwner),
141
+ transactions,
142
+ };
143
+ }
144
+ // ---------------------------------------------------------------------------
145
+ // 13F information table parser
146
+ // ---------------------------------------------------------------------------
147
+ /**
148
+ * Parse a 13F-HR information table XML string.
149
+ * Handles both the default namespace (xmlns="...") and ns1-prefixed variants
150
+ * (xmlns:ns1="...") used by different filers.
151
+ */
152
+ export function parseInfoTableXml(xml) {
153
+ const doc = parseDocument(xml, { xmlMode: true, decodeEntities: true });
154
+ // infoTable elements may appear under <informationTable> or <ns1:informationTable>
155
+ // htmlparser2 in xmlMode preserves namespace prefixes as part of tag names.
156
+ const infoTableEls = findAll((e) => e.type === 'tag' &&
157
+ (e.name.toLowerCase() === 'infotable' || e.name.toLowerCase() === 'ns1:infotable'), doc.children);
158
+ const holdings = infoTableEls.map((el) => {
159
+ const nameOfIssuer = childText(el, 'nameOfIssuer') ?? childText(el, 'ns1:nameOfIssuer') ?? '';
160
+ const titleOfClass = childText(el, 'titleOfClass') ?? childText(el, 'ns1:titleOfClass');
161
+ const cusip = childText(el, 'cusip') ?? childText(el, 'ns1:cusip');
162
+ const valueStr = childText(el, 'value') ?? childText(el, 'ns1:value');
163
+ const putCallStr = childText(el, 'putCall') ?? childText(el, 'ns1:putCall');
164
+ const investDisc = childText(el, 'investmentDiscretion') ?? childText(el, 'ns1:investmentDiscretion');
165
+ // shrsOrPrnAmt block
166
+ const amtEl = findOne((e) => e.type === 'tag' &&
167
+ (e.name.toLowerCase() === 'shrsorprnamt' || e.name.toLowerCase() === 'ns1:shrsorprnamt'), el.children, true) ?? null;
168
+ const sshPrnamt = amtEl
169
+ ? (childText(amtEl, 'sshPrnamt') ?? childText(amtEl, 'ns1:sshPrnamt'))
170
+ : undefined;
171
+ const sshPrnamtType = amtEl
172
+ ? (childText(amtEl, 'sshPrnamtType') ?? childText(amtEl, 'ns1:sshPrnamtType'))
173
+ : undefined;
174
+ const putCallNorm = putCallStr === 'Put' ? 'Put' : putCallStr === 'Call' ? 'Call' : undefined;
175
+ const typeNorm = sshPrnamtType?.toUpperCase() === 'SH'
176
+ ? 'SH'
177
+ : sshPrnamtType?.toUpperCase() === 'PRN'
178
+ ? 'PRN'
179
+ : undefined;
180
+ const investDiscNorm = investDisc === 'SOLE'
181
+ ? 'SOLE'
182
+ : investDisc === 'DFND'
183
+ ? 'DFND'
184
+ : investDisc === 'OTR'
185
+ ? 'OTR'
186
+ : undefined;
187
+ return {
188
+ issuer_name: nameOfIssuer,
189
+ title_of_class: titleOfClass || undefined,
190
+ cusip: cusip || undefined,
191
+ value_in_thousands: parseFloat2(valueStr),
192
+ shares_or_principal_amount: parseFloat2(sshPrnamt),
193
+ shares_or_principal_type: typeNorm,
194
+ put_call: putCallNorm,
195
+ investment_discretion: investDiscNorm,
196
+ };
197
+ });
198
+ return { holdings };
199
+ }
200
+ //# sourceMappingURL=ownership-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership-parser.js","sourceRoot":"","sources":["../../../src/services/edgar/ownership-parser.ts"],"names":[],"mappings":"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"}
@@ -151,6 +151,12 @@ export type ConceptTaxonomy = 'us-gaap' | 'ifrs-full' | 'dei';
151
151
  /** Friendly concept name mapping. */
152
152
  export interface ConceptMapping {
153
153
  group: ConceptGroup;
154
+ /**
155
+ * IFRS tag variants for this concept (used when taxonomy === 'ifrs-full').
156
+ * When present, these replace `tags` for IFRS lookups so friendly names resolve
157
+ * correctly against ifrs-full filers (e.g. Spotify's 20-F filings).
158
+ */
159
+ ifrsTags?: string[];
154
160
  label: string;
155
161
  tags: string[];
156
162
  taxonomy: ConceptTaxonomy;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/secedgar-mcp-server",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/secedgar-mcp-server",
6
6
  "type": "module",
@@ -19,7 +19,8 @@
19
19
  "clean": "bun scripts/clean.ts",
20
20
  "devcheck": "bun scripts/devcheck.ts",
21
21
  "tree": "bun scripts/tree.ts",
22
- "format": "biome check --write --unsafe .",
22
+ "format": "biome check --write .",
23
+ "format:unsafe": "biome check --write --unsafe .",
23
24
  "lint:mcp": "bun scripts/lint-mcp.ts",
24
25
  "changelog:build": "bun scripts/build-changelog.ts",
25
26
  "changelog:check": "bun scripts/build-changelog.ts --check",
@@ -77,9 +78,12 @@
77
78
  "access": "public"
78
79
  },
79
80
  "dependencies": {
80
- "@cyanheads/mcp-ts-core": "^0.9.13",
81
+ "@cyanheads/mcp-ts-core": "^0.9.16",
81
82
  "@duckdb/node-api": "^1.5.3-r.2",
83
+ "domhandler": "^6.0.1",
84
+ "domutils": "^4.0.2",
82
85
  "html-to-text": "^10.0.0",
86
+ "htmlparser2": "^12.0.0",
83
87
  "pino-pretty": "^13.1.3",
84
88
  "zod": "^4.4.3"
85
89
  },
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/secedgar-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.6.2",
9
+ "version": "0.7.0",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/secedgar-mcp-server",
21
21
  "runtimeHint": "bun",
22
- "version": "0.6.2",
22
+ "version": "0.7.0",
23
23
  "environmentVariables": [
24
24
  {
25
25
  "name": "EDGAR_USER_AGENT",
@@ -44,7 +44,7 @@
44
44
  "registryBaseUrl": "https://registry.npmjs.org",
45
45
  "identifier": "@cyanheads/secedgar-mcp-server",
46
46
  "runtimeHint": "bun",
47
- "version": "0.6.2",
47
+ "version": "0.7.0",
48
48
  "environmentVariables": [
49
49
  {
50
50
  "name": "EDGAR_USER_AGENT",