@cyanheads/secedgar-mcp-server 0.15.6 → 0.15.8
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/AGENTS.md +35 -23
- package/CLAUDE.md +35 -23
- package/README.md +112 -159
- package/changelog/0.15.x/0.15.7.md +36 -0
- package/changelog/0.15.x/0.15.8.md +29 -0
- package/changelog/template.md +7 -7
- package/dist/config/server-config.d.ts +1 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +8 -1
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/filing-types.resource.js +2 -2
- package/dist/mcp-server/resources/definitions/filing-types.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/company-search.tool.d.ts +8 -1
- package/dist/mcp-server/tools/definitions/company-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/company-search.tool.js +39 -34
- package/dist/mcp-server/tools/definitions/company-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts +31 -2
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js +53 -5
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.js +8 -0
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.js +9 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.js +9 -1
- package/dist/mcp-server/tools/definitions/get-beneficial-owners.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-filing.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-filing.tool.js +24 -11
- package/dist/mcp-server/tools/definitions/get-filing.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-financials.tool.js +10 -0
- package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.d.ts +8 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.js +9 -1
- package/dist/mcp-server/tools/definitions/get-fund-holdings.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts +14 -4
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js +167 -34
- package/dist/mcp-server/tools/definitions/get-insider-transactions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts +11 -4
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js +113 -55
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-material-events.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js +47 -33
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts +7 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js +10 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +141 -15
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts +14 -4
- package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.js +49 -38
- package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.d.ts +4 -1
- package/dist/services/canvas-bridge/canvas-bridge.d.ts.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.js +4 -1
- package/dist/services/canvas-bridge/canvas-bridge.js.map +1 -1
- package/dist/services/edgar/edgar-api-service.d.ts +82 -51
- package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
- package/dist/services/edgar/edgar-api-service.js +332 -167
- package/dist/services/edgar/edgar-api-service.js.map +1 -1
- package/dist/services/edgar/filing-headers.d.ts +37 -9
- package/dist/services/edgar/filing-headers.d.ts.map +1 -1
- package/dist/services/edgar/filing-headers.js +40 -11
- package/dist/services/edgar/filing-headers.js.map +1 -1
- package/dist/services/edgar/filing-to-text.d.ts.map +1 -1
- package/dist/services/edgar/filing-to-text.js +24 -2
- package/dist/services/edgar/filing-to-text.js.map +1 -1
- package/dist/services/edgar/mirror/tickers-sync.d.ts +4 -2
- package/dist/services/edgar/mirror/tickers-sync.d.ts.map +1 -1
- package/dist/services/edgar/mirror/tickers-sync.js +4 -2
- package/dist/services/edgar/mirror/tickers-sync.js.map +1 -1
- package/dist/services/edgar/mirror/types.d.ts +6 -2
- package/dist/services/edgar/mirror/types.d.ts.map +1 -1
- package/dist/services/edgar/ownership-parser.d.ts +16 -0
- package/dist/services/edgar/ownership-parser.d.ts.map +1 -1
- package/dist/services/edgar/ownership-parser.js +19 -0
- package/dist/services/edgar/ownership-parser.js.map +1 -1
- package/dist/services/edgar/submissions-archive.d.ts +78 -0
- package/dist/services/edgar/submissions-archive.d.ts.map +1 -0
- package/dist/services/edgar/submissions-archive.js +87 -0
- package/dist/services/edgar/submissions-archive.js.map +1 -0
- package/package.json +7 -7
- package/server.json +17 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR
|
|
3
|
-
* information table XML. Institution lookup only — `
|
|
3
|
+
* information table XML. Institution lookup only — `company` is the 13F filer.
|
|
4
4
|
* The reverse direction (which institutions hold an issuer) is secedgar_find_holders,
|
|
5
5
|
* which searches the information tables by CUSIP and returns filer CIKs to feed back
|
|
6
6
|
* into this tool (#81).
|
|
@@ -10,7 +10,8 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
10
10
|
import { JsonRpcErrorCode, McpError, validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
11
11
|
import { dataframeGuidance, getCanvasBridge, toDatasetField, } from '../../../services/canvas-bridge/canvas-bridge.js';
|
|
12
12
|
import { getEdgarApiService } from '../../../services/edgar/edgar-api-service.js';
|
|
13
|
-
import { parseInfoTableXml } from '../../../services/edgar/ownership-parser.js';
|
|
13
|
+
import { parseInfoTableXml, parseThirteenFCoverPage } from '../../../services/edgar/ownership-parser.js';
|
|
14
|
+
import { ARCHIVE_PAGE_SCAN_CAP, SubmissionsArchiveWalk, } from '../../../services/edgar/submissions-archive.js';
|
|
14
15
|
/**
|
|
15
16
|
* Map a quarter string like "2025-Q4" to its calendar quarter-end date (YYYY-MM-DD) — the
|
|
16
17
|
* filing's reporting-period end (`reportDate`) in the SEC submissions API. Returns undefined
|
|
@@ -82,37 +83,47 @@ function findInfoTableDocument(items) {
|
|
|
82
83
|
* secedgar_get_financials / secedgar_search_filings, not a 13F (#86).
|
|
83
84
|
*/
|
|
84
85
|
const OPERATING_COMPANY_FORMS = ['10-K', '10-K/A', '10-Q', '10-Q/A', '8-K', '8-K/A'];
|
|
86
|
+
/** The holdings report, and the notice a manager files instead when others report its holdings. */
|
|
87
|
+
const HOLDINGS_REPORT_FORM = '13F-HR';
|
|
88
|
+
const NOTICE_FORMS = new Set(['13F-NT', '13F-NT/A']);
|
|
85
89
|
/**
|
|
86
|
-
* Zip
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* operating-company classification (#86) — without a shared-method signature change
|
|
91
|
-
* that would ripple into the insider-transactions tool.
|
|
90
|
+
* Zip a submissions block (the recent window or an archive page) into its 13F-HR and
|
|
91
|
+
* 13F-NT rows, in block order — newest filed first. Read off the submissions fetch the
|
|
92
|
+
* tool already holds, which also feeds the 404 handling (#76) and the operating-company
|
|
93
|
+
* classification (#86).
|
|
92
94
|
*/
|
|
93
|
-
function
|
|
95
|
+
function thirteenFRows(block) {
|
|
94
96
|
const out = [];
|
|
95
|
-
for (let i = 0; i <
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
for (let i = 0; i < block.form.length; i++) {
|
|
98
|
+
const form = block.form[i] ?? '';
|
|
99
|
+
if (form !== HOLDINGS_REPORT_FORM && !NOTICE_FORMS.has(form))
|
|
100
|
+
continue;
|
|
101
|
+
out.push({
|
|
102
|
+
accessionNumber: block.accessionNumber[i] ?? '',
|
|
103
|
+
filingDate: block.filingDate[i] ?? '',
|
|
104
|
+
form,
|
|
105
|
+
reportDate: block.reportDate[i] ?? '',
|
|
106
|
+
});
|
|
104
107
|
}
|
|
105
108
|
return out;
|
|
106
109
|
}
|
|
110
|
+
/** The newest-filed 13F-HR and 13F-NT for one period among `rows`. */
|
|
111
|
+
function forPeriod(rows, periodEnd) {
|
|
112
|
+
const inPeriod = rows.filter((r) => r.reportDate === periodEnd);
|
|
113
|
+
return {
|
|
114
|
+
report: inPeriod.find((r) => r.form === HOLDINGS_REPORT_FORM),
|
|
115
|
+
notice: inPeriod.find((r) => NOTICE_FORMS.has(r.form)),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
107
118
|
export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_holdings', {
|
|
108
119
|
title: 'Get Institutional Holdings',
|
|
109
|
-
description: 'Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR information table XML.
|
|
120
|
+
description: 'Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR information table XML. company is the institutional filer — its 10-digit CIK (e.g. 0000102909), a ticker, or an entity name (names outside EDGAR\'s ticker file resolve through EDGAR entity search) — and the tool returns what that institution holds. A name that matches several EDGAR filers (some legal names are shared across entities) returns those candidates so you can retry with the exact CIK, rather than guessing. For the reverse direction — which institutions hold a given portfolio company — use secedgar_find_holders, whose filer_cik results feed straight back into this tool. The 13F information table lists each position: issuer name, CUSIP, shares held, market value (in whole USD), and put/call designation for options. Sub-lines for the same security are consolidated into distinct positions sorted by value by default (set consolidate=false for raw filing rows). The inline holdings list is one page of limit rows starting at offset — pass the returned next_offset to walk further down a large information table. The full parsed holdings set is also materialized as df_<id> when a canvas is available — inspect it with secedgar_dataframe_describe, then query it with secedgar_dataframe_query to aggregate the whole filing or self-join across quarters on cusip + reporting_period. Institutions with less than $100M in 13(f) securities are exempt and may not file. Use secedgar_search_filings with forms=["13F-HR"] for broader search.',
|
|
110
121
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
111
122
|
errors: [
|
|
112
123
|
{
|
|
113
124
|
reason: 'company_not_found',
|
|
114
125
|
code: JsonRpcErrorCode.NotFound,
|
|
115
|
-
when: 'The
|
|
126
|
+
when: 'The company input does not resolve to a known company or institution',
|
|
116
127
|
recovery: 'Use secedgar_company_search to find the correct CIK or full entity name.',
|
|
117
128
|
},
|
|
118
129
|
{
|
|
@@ -124,7 +135,7 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
124
135
|
{
|
|
125
136
|
reason: 'no_filings_found',
|
|
126
137
|
code: JsonRpcErrorCode.NotFound,
|
|
127
|
-
when: 'No 13F-HR
|
|
138
|
+
when: 'No 13F-HR matches — the entity files none, none exists for the requested quarter in the recent submissions window or the archive pages searched, or the manager filed a 13F-NT notice instead (for the requested quarter, or as its only recent 13F filing when no quarter is given)',
|
|
128
139
|
recovery: 'Use secedgar_search_filings with forms=["13F-HR"] for broader search, or check that the entity is an institutional investment manager.',
|
|
129
140
|
},
|
|
130
141
|
{
|
|
@@ -133,16 +144,24 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
133
144
|
when: 'The 13F-HR filing was found but the information table XML document could not be located',
|
|
134
145
|
recovery: 'Use secedgar_get_filing with the accession number to inspect the filing documents directly.',
|
|
135
146
|
},
|
|
147
|
+
{
|
|
148
|
+
reason: 'rate_limited',
|
|
149
|
+
code: JsonRpcErrorCode.RateLimited,
|
|
150
|
+
when: "SEC is rate-limiting this server's IP — SEC answered 429, or the call was refused without being sent while the cool-down after one runs",
|
|
151
|
+
recovery: 'Wait the retryAfter seconds the error carries, then retry — SEC lifts the block only once requests stop for ten minutes.',
|
|
152
|
+
retryable: true,
|
|
153
|
+
thrownBy: 'service',
|
|
154
|
+
},
|
|
136
155
|
],
|
|
137
156
|
input: z.object({
|
|
138
|
-
|
|
157
|
+
company: z
|
|
139
158
|
.string()
|
|
140
159
|
.min(1)
|
|
141
|
-
.describe('The institutional filer whose 13F to fetch — a 10-digit CIK (e.g. "0000102909" for VANGUARD GROUP INC, the most reliable form) or an entity name.
|
|
160
|
+
.describe('The institutional filer whose 13F to fetch — a 10-digit CIK (e.g. "0000102909" for VANGUARD GROUP INC, the most reliable form), a ticker, or an entity name. A name is matched against the registrants in EDGAR\'s ticker file first (current and former names) and, when none match, resolved through EDGAR entity search, which covers institutional managers absent from that file; a name matching several filers (some legal names are shared across entities) returns those candidates so you can retry with the exact CIK. This is NOT the portfolio company — passing an issuer ticker like "AAPL" finds that operating company\'s own filings (it files no 13F), not who holds it; use secedgar_find_holders for that direction.'),
|
|
142
161
|
quarter: z
|
|
143
162
|
.string()
|
|
144
163
|
.optional()
|
|
145
|
-
.describe('Reporting quarter to target, in "YYYY-QN" format (e.g., "2025-Q4"). When omitted, returns the most recent 13F-HR
|
|
164
|
+
.describe('Reporting quarter to target, in "YYYY-QN" format (e.g., "2025-Q4"), matched exactly against each 13F-HR\'s period of report. When omitted, returns the most recent 13F-HR in the submissions feed\'s recent window (the last year or 1,000 filings, whichever holds more). Quarters map to the filing window: Q4 2025 = filings submitted roughly Jan–Mar 2026. A quarter older than the recent window is looked up in the archive, reading forward from the quarter end up to 10 archive pages. A quarter the manager covered with a 13F-NT notice (holdings reported by other managers) fails naming that notice.'),
|
|
146
165
|
limit: z
|
|
147
166
|
.number()
|
|
148
167
|
.int()
|
|
@@ -161,6 +180,8 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
161
180
|
.default(true)
|
|
162
181
|
.describe('When true (default), info-table sub-lines for the same security (CUSIP + class + put/call) are summed into one position and results are sorted by market value descending, so `limit` returns the largest distinct holdings. Set false to return raw information-table rows in filing order (one per investment-discretion/manager sub-line), preserving investment_discretion.'),
|
|
163
182
|
}),
|
|
183
|
+
// Other tools' spellings of the company parameter, and this tool's former one (#115).
|
|
184
|
+
inputAliases: { ticker: 'company', cik: 'company', ticker_or_cik: 'company' },
|
|
164
185
|
output: z.object({
|
|
165
186
|
filer_name: z.string().describe('Name of the institutional filer (the 13F submitter).'),
|
|
166
187
|
filer_cik: z.string().describe('CIK of the 13F filer, zero-padded to 10 digits.'),
|
|
@@ -251,10 +272,10 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
251
272
|
// institutional managers, trusts, individuals — that company_tickers.json can never
|
|
252
273
|
// contain (#73). Both paths normalize to a candidate list so ambiguity is handled
|
|
253
274
|
// uniformly and index 0 is never taken silently.
|
|
254
|
-
const resolved = await api.resolveCik(input.
|
|
275
|
+
const resolved = await api.resolveCik(input.company);
|
|
255
276
|
const candidates = Array.isArray(resolved)
|
|
256
277
|
? resolved.length === 0
|
|
257
|
-
? (await api.resolveEntityByName(input.
|
|
278
|
+
? (await api.resolveEntityByName(input.company)).map((m) => ({
|
|
258
279
|
cik: m.cik,
|
|
259
280
|
name: m.name,
|
|
260
281
|
ticker: undefined,
|
|
@@ -267,14 +288,14 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
267
288
|
if (candidates.length > 1) {
|
|
268
289
|
const shown = candidates.slice(0, 10);
|
|
269
290
|
const list = shown.map((c) => `${c.cik}${c.name ? ` (${c.name})` : ''}`).join(', ');
|
|
270
|
-
throw ctx.fail('ambiguous_entity', `'${input.
|
|
291
|
+
throw ctx.fail('ambiguous_entity', `'${input.company}' matches multiple EDGAR entities: ${list}. Retry with the exact 10-digit CIK.`, {
|
|
271
292
|
...ctx.recoveryFor('ambiguous_entity'),
|
|
272
293
|
matches: shown.map((c) => ({ cik: c.cik, name: c.name, ticker: c.ticker })),
|
|
273
294
|
});
|
|
274
295
|
}
|
|
275
296
|
const [match] = candidates;
|
|
276
297
|
if (!match) {
|
|
277
|
-
throw ctx.fail('company_not_found', `Entity '${input.
|
|
298
|
+
throw ctx.fail('company_not_found', `Entity '${input.company}' not found.`, {
|
|
278
299
|
...ctx.recoveryFor('company_not_found'),
|
|
279
300
|
});
|
|
280
301
|
}
|
|
@@ -308,13 +329,59 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
308
329
|
// Each 13F-HR carries a reportDate (the period-end), so a requested quarter is
|
|
309
330
|
// matched exactly. No quarter → most-recent; with a quarter, a miss is reported,
|
|
310
331
|
// never silently the latest filing.
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
332
|
+
const recentRows = thirteenFRows(submissions.filings.recent);
|
|
333
|
+
// A 13F-HR or a notice either one marks a 13F manager; only an entity whose rows
|
|
334
|
+
// read hold neither gets the #86 classification below.
|
|
335
|
+
let filesThirteenF = recentRows.length > 0;
|
|
336
|
+
let filingMeta;
|
|
337
|
+
let notice;
|
|
338
|
+
let walk;
|
|
339
|
+
if (!periodEnd) {
|
|
340
|
+
filingMeta = recentRows.find((r) => r.form === HOLDINGS_REPORT_FORM);
|
|
341
|
+
// A manager whose recent filings are notices only: name its newest notice rather
|
|
342
|
+
// than calling it a non-filer (#133).
|
|
343
|
+
if (!filingMeta)
|
|
344
|
+
notice = recentRows.find((r) => NOTICE_FORMS.has(r.form));
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
({ report: filingMeta, notice } = forPeriod(recentRows, periodEnd));
|
|
348
|
+
// A quarter the recent window does not reach: a 13F-HR is filed after its period
|
|
349
|
+
// ends, so read the archive forward in time from the page covering the quarter
|
|
350
|
+
// end and stop on the first page holding a report or notice for it (#117, #133).
|
|
351
|
+
// A quarter ending on or after the window's oldest filing selects no page.
|
|
352
|
+
if (!filingMeta && !notice) {
|
|
353
|
+
walk = new SubmissionsArchiveWalk(api, submissions, {
|
|
354
|
+
filedAfter: periodEnd,
|
|
355
|
+
order: 'oldest-first',
|
|
356
|
+
});
|
|
357
|
+
for await (const { block } of walk) {
|
|
358
|
+
const rows = thirteenFRows(block);
|
|
359
|
+
filesThirteenF ||= rows.length > 0;
|
|
360
|
+
({ report: filingMeta, notice } = forPeriod(rows, periodEnd));
|
|
361
|
+
if (filingMeta || notice)
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
315
366
|
if (!filingMeta) {
|
|
316
|
-
if (
|
|
317
|
-
//
|
|
367
|
+
if (notice) {
|
|
368
|
+
// The manager filed a notice for this quarter — or, asked for no quarter, files
|
|
369
|
+
// only notices: another manager's 13F-HR carries its holdings, so there is no
|
|
370
|
+
// information table here to read (#133).
|
|
371
|
+
const scope = input.quarter
|
|
372
|
+
? `for quarter "${input.quarter}"`
|
|
373
|
+
: 'in its recent submissions window';
|
|
374
|
+
throw ctx.fail('no_filings_found', `No 13F-HR filed by '${input.company}' (${submissions.name}) ${scope} — it filed a ${notice.form} notice (accession ${notice.accessionNumber}, period ${notice.reportDate}, filed ${notice.filingDate}) instead: its holdings for that quarter are reported by other managers in their own 13F-HR filings.`, {
|
|
375
|
+
recovery: {
|
|
376
|
+
hint: `Read notice ${notice.accessionNumber} with secedgar_get_filing — its cover page lists the managers reporting these holdings — then call this tool with one of those managers' CIKs.`,
|
|
377
|
+
},
|
|
378
|
+
notice_accession_number: notice.accessionNumber,
|
|
379
|
+
notice_form: notice.form,
|
|
380
|
+
notice_period: notice.reportDate,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
if (!filesThirteenF) {
|
|
384
|
+
// Entity files no 13F-HR or notice at all. Classify from the recent-form list (#86): an
|
|
318
385
|
// entity filing 10-K/10-Q/8-K is an operating company, not an institutional
|
|
319
386
|
// manager — route the caller to the tools that fit. Use the submissions identity
|
|
320
387
|
// so it works for CIKs absent from the ticker cache too.
|
|
@@ -322,9 +389,9 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
322
389
|
const operatingForms = OPERATING_COMPANY_FORMS.filter((f) => recentForms.has(f));
|
|
323
390
|
if (operatingForms.length > 0) {
|
|
324
391
|
const tickerSuffix = submissions.tickers[0] ? ` (${submissions.tickers[0]})` : '';
|
|
325
|
-
throw ctx.fail('no_filings_found', `No 13F-HR filings found for '${input.
|
|
392
|
+
throw ctx.fail('no_filings_found', `No 13F-HR filings found for '${input.company}' — resolves to ${submissions.name}${tickerSuffix}, an operating company (files ${operatingForms.join(', ')}), not an institutional investment manager. To find which managers hold it, use secedgar_find_holders; for financials use secedgar_get_financials.`, {
|
|
326
393
|
recovery: {
|
|
327
|
-
hint: `${submissions.name} is an operating company, not a 13F filer. Use secedgar_find_holders with issuer "${input.
|
|
394
|
+
hint: `${submissions.name} is an operating company, not a 13F filer. Use secedgar_find_holders with issuer "${input.company}" to list its institutional holders.`,
|
|
328
395
|
},
|
|
329
396
|
resolved_cik: match.cik,
|
|
330
397
|
resolved_name: submissions.name,
|
|
@@ -346,10 +413,13 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
346
413
|
}
|
|
347
414
|
// No operating-company signal (e.g. a filing agent or an unusual filer) — a true
|
|
348
415
|
// unknown, so keep the generic recovery.
|
|
349
|
-
throw ctx.fail('no_filings_found', `No 13F-HR filings found for '${input.
|
|
416
|
+
throw ctx.fail('no_filings_found', `No 13F-HR filings found for '${input.company}' (resolves to ${submissions.name}). This entity is not a 13F institutional filer.`, { ...ctx.recoveryFor('no_filings_found') });
|
|
350
417
|
}
|
|
351
418
|
// 13F filings exist, but none for the requested quarter (#31) — a real 13F filer.
|
|
352
|
-
|
|
419
|
+
const searched = walk && walk.pagesRead > 0
|
|
420
|
+
? ` Searched the recent submissions window and ${walk.pagesRead} archive page${walk.pagesRead === 1 ? '' : 's'} filed from ${walk.scannedThrough} forward${walk.truncated ? `; the ${ARCHIVE_PAGE_SCAN_CAP}-page cap stopped the search before later pages` : ''}.`
|
|
421
|
+
: '';
|
|
422
|
+
throw ctx.fail('no_filings_found', `No 13F-HR filings found for '${input.company}' for quarter "${input.quarter}".${searched}`, { ...ctx.recoveryFor('no_filings_found') });
|
|
353
423
|
}
|
|
354
424
|
// Get the filing index to find the information table document
|
|
355
425
|
const filingIndex = await api.tryGetFilingIndex(match.cik, filingMeta.accessionNumber);
|
|
@@ -371,22 +441,10 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
371
441
|
// Pull reporting period and filing-manager name from the primary_doc.xml cover page.
|
|
372
442
|
// The CIK resolver only knows names for ticker-listed entities, but most 13F filers
|
|
373
443
|
// are investment managers that aren't listed — the cover page is the reliable source.
|
|
374
|
-
let reportingPeriod;
|
|
375
|
-
let filerName;
|
|
376
444
|
const primaryXml = await api.tryGetFilingDocument(match.cik, filingMeta.accessionNumber, 'primary_doc.xml');
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
primaryXml.match(/<reportCalendarOrQuarter>(\d{2}-\d{2}-\d{4})<\/reportCalendarOrQuarter>/);
|
|
381
|
-
if (periodMatch?.[1]) {
|
|
382
|
-
// Convert MM-DD-YYYY to YYYY-MM-DD
|
|
383
|
-
const [mm, dd, yyyy] = periodMatch[1].split('-');
|
|
384
|
-
reportingPeriod = `${yyyy}-${mm}-${dd}`;
|
|
385
|
-
}
|
|
386
|
-
const nameMatch = primaryXml.match(/<(?:\w+:)?filingManager>[\s\S]*?<(?:\w+:)?name>([^<]+)<\/(?:\w+:)?name>/i);
|
|
387
|
-
if (nameMatch?.[1])
|
|
388
|
-
filerName = nameMatch[1].trim();
|
|
389
|
-
}
|
|
445
|
+
const { filerName, reportingPeriod } = primaryXml
|
|
446
|
+
? parseThirteenFCoverPage(primaryXml)
|
|
447
|
+
: { filerName: undefined, reportingPeriod: undefined };
|
|
390
448
|
let parsed;
|
|
391
449
|
try {
|
|
392
450
|
parsed = parseInfoTableXml(xmlText);
|
|
@@ -437,7 +495,7 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
437
495
|
})),
|
|
438
496
|
sourceTool: 'secedgar_get_institutional_holdings',
|
|
439
497
|
queryParams: {
|
|
440
|
-
|
|
498
|
+
company: input.company,
|
|
441
499
|
cik: match.cik,
|
|
442
500
|
quarter: input.quarter,
|
|
443
501
|
consolidate: input.consolidate,
|
|
@@ -485,7 +543,7 @@ export const getInstitutionalHoldingsTool = tool('secedgar_get_institutional_hol
|
|
|
485
543
|
datasetName: dataset?.name,
|
|
486
544
|
});
|
|
487
545
|
return {
|
|
488
|
-
filer_name: filerName ?? match.name ?? input.
|
|
546
|
+
filer_name: filerName ?? match.name ?? input.company,
|
|
489
547
|
filer_cik: match.cik,
|
|
490
548
|
reporting_period: reportingPeriod,
|
|
491
549
|
filing_date: filingMeta.filingDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-institutional-holdings.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-institutional-holdings.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-institutional-holdings.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-institutional-holdings.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,13 @@ export declare const getMaterialEventsTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
54
54
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
55
55
|
readonly when: "The query is ambiguous and matches several companies";
|
|
56
56
|
readonly recovery: "Retry with a ticker symbol or the 10-digit CIK from the matches list.";
|
|
57
|
+
}, {
|
|
58
|
+
readonly reason: "rate_limited";
|
|
59
|
+
readonly code: JsonRpcErrorCode.RateLimited;
|
|
60
|
+
readonly when: "SEC is rate-limiting this server's IP — SEC answered 429, or the call was refused without being sent while the cool-down after one runs";
|
|
61
|
+
readonly recovery: "Wait the retryAfter seconds the error carries, then retry — SEC lifts the block only once requests stop for ten minutes.";
|
|
62
|
+
readonly retryable: true;
|
|
63
|
+
readonly thrownBy: "service";
|
|
57
64
|
}], {
|
|
58
65
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
59
66
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-material-events.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-material-events.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"get-material-events.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-material-events.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAwD3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmbhC,CAAC"}
|
|
@@ -7,15 +7,9 @@
|
|
|
7
7
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
8
8
|
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
9
9
|
import { dataframeGuidance, getCanvasBridge, toDatasetField, } from '../../../services/canvas-bridge/canvas-bridge.js';
|
|
10
|
-
import { getEdgarApiService,
|
|
10
|
+
import { getEdgarApiService, suggestCompanies } from '../../../services/edgar/edgar-api-service.js';
|
|
11
11
|
import { decodeEightKItem, EIGHT_K_ITEM_CODES, EIGHT_K_RENUMBERING_DATE, parseEightKItems, } from '../../../services/edgar/eight-k-items.js';
|
|
12
|
-
|
|
13
|
-
* Cap on submissions archive pages fetched in one call — bounds latency and the
|
|
14
|
-
* rate-limited request budget. Mirrors the same constant in company-search and
|
|
15
|
-
* search-filings; hitting it sets `dataset.truncated` and is disclosed by
|
|
16
|
-
* `history_scanned_through`.
|
|
17
|
-
*/
|
|
18
|
-
const ARCHIVE_PAGE_SCAN_CAP = 10;
|
|
12
|
+
import { SubmissionsArchiveWalk } from '../../../services/edgar/submissions-archive.js';
|
|
19
13
|
/** True for 8-K and its amendments (8-K/A), excluding the 8-K12B-family registration forms. */
|
|
20
14
|
function isMaterialEventForm(form) {
|
|
21
15
|
const upper = form.toUpperCase();
|
|
@@ -44,7 +38,7 @@ function zipEightKs(block) {
|
|
|
44
38
|
}
|
|
45
39
|
export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
46
40
|
title: 'Get Material Events',
|
|
47
|
-
description: "Retrieve a company's 8-K filings with their item codes decoded, optionally filtered to specific items. 8-K item codes are how material events are actually scoped — 1.01 material agreements, 2.02 results of operations, 4.02 non-reliance on previously issued financials, 5.02 officer and director departures — and filtering by them is narrower than any form-level filter in secedgar_search_filings or secedgar_company_search, neither of which can see items. Each row carries the accession number and primary document for secedgar_get_filing; press releases usually ride as EX-99 exhibits rather than in the primary document. Two numbering regimes exist: filings from 2004-08-23 onward use the x.xx codes, earlier ones use single integers (12 was the old results-of-operations item, 9 the old Regulation FD item), and both are accepted as filters and decoded in the response. A date window reaches filings older than the recent submissions window by
|
|
41
|
+
description: "Retrieve a company's 8-K filings with their item codes decoded, optionally filtered to specific items. 8-K item codes are how material events are actually scoped — 1.01 material agreements, 2.02 results of operations, 4.02 non-reliance on previously issued financials, 5.02 officer and director departures — and filtering by them is narrower than any form-level filter in secedgar_search_filings or secedgar_company_search, neither of which can see items. Each row carries the accession number and primary document for secedgar_get_filing; press releases usually ride as EX-99 exhibits rather than in the primary document. Two numbering regimes exist: filings from 2004-08-23 onward use the x.xx codes, earlier ones use single integers (12 was the old results-of-operations item, 9 the old Regulation FD item), and both are accepted as filters and decoded in the response. A date window reaches filings older than the recent submissions window by reading every archive page it overlaps, up to 10; without one, the scan reads back only as far as it needs to fill limit. Every scanned filing that passes the filter is materialized as df_<id> for item-distribution analysis over time (pass a date window to cover a longer span) — inspect it with secedgar_dataframe_describe, then analyze it with secedgar_dataframe_query.",
|
|
48
42
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
49
43
|
errors: [
|
|
50
44
|
{
|
|
@@ -59,6 +53,14 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
59
53
|
when: 'The query is ambiguous and matches several companies',
|
|
60
54
|
recovery: 'Retry with a ticker symbol or the 10-digit CIK from the matches list.',
|
|
61
55
|
},
|
|
56
|
+
{
|
|
57
|
+
reason: 'rate_limited',
|
|
58
|
+
code: JsonRpcErrorCode.RateLimited,
|
|
59
|
+
when: "SEC is rate-limiting this server's IP — SEC answered 429, or the call was refused without being sent while the cool-down after one runs",
|
|
60
|
+
recovery: 'Wait the retryAfter seconds the error carries, then retry — SEC lifts the block only once requests stop for ten minutes.',
|
|
61
|
+
retryable: true,
|
|
62
|
+
thrownBy: 'service',
|
|
63
|
+
},
|
|
62
64
|
],
|
|
63
65
|
input: z.object({
|
|
64
66
|
company: z
|
|
@@ -80,7 +82,7 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
80
82
|
.describe('YYYY-MM-DD'),
|
|
81
83
|
])
|
|
82
84
|
.optional()
|
|
83
|
-
.describe('Only include filings filed on or after this date (YYYY-MM-DD). A date filter routes the scan into the older submissions archive pages, so it reaches 8-K filings that predate the
|
|
85
|
+
.describe('Only include filings filed on or after this date (YYYY-MM-DD). A date filter routes the scan into the older submissions archive pages, so it reaches 8-K filings that predate the recent window (the last year or 1,000 filings of every form, whichever holds more).'),
|
|
84
86
|
filed_before: z
|
|
85
87
|
.union([
|
|
86
88
|
z.literal(''),
|
|
@@ -97,8 +99,18 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
97
99
|
.min(1)
|
|
98
100
|
.max(100)
|
|
99
101
|
.default(20)
|
|
100
|
-
.describe('Filings returned inline, newest first.
|
|
102
|
+
.describe('Filings returned inline, newest first. Every scanned filing that passes the filter is materialized as a dataframe when there are more than this and a canvas is available. Default 20.'),
|
|
101
103
|
}),
|
|
104
|
+
// Other spellings of the company and filing-date parameters in use across tools (#115).
|
|
105
|
+
inputAliases: {
|
|
106
|
+
ticker: 'company',
|
|
107
|
+
cik: 'company',
|
|
108
|
+
ticker_or_cik: 'company',
|
|
109
|
+
start_date: 'filed_after',
|
|
110
|
+
date_from: 'filed_after',
|
|
111
|
+
end_date: 'filed_before',
|
|
112
|
+
date_to: 'filed_before',
|
|
113
|
+
},
|
|
102
114
|
output: z.object({
|
|
103
115
|
cik: z
|
|
104
116
|
.string()
|
|
@@ -120,7 +132,7 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
120
132
|
history_scanned_through: z
|
|
121
133
|
.string()
|
|
122
134
|
.optional()
|
|
123
|
-
.describe('Oldest filing date reached by the scan (YYYY-MM-DD). Older filings were not examined: the recent window
|
|
135
|
+
.describe('Oldest filing date reached by the scan (YYYY-MM-DD). Older filings were not examined: the recent window holds the last year or 1,000 filings of every form, whichever is more, and archive pages are read only for a date filter (every page overlapping it, up to 10) or to fill limit (stopping on the page that fills it). Absent when no filings were scanned.'),
|
|
124
136
|
filings: z
|
|
125
137
|
.array(z
|
|
126
138
|
.object({
|
|
@@ -168,10 +180,10 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
168
180
|
expires_at: z.string().describe('ISO 8601 expiry timestamp.'),
|
|
169
181
|
truncated: z
|
|
170
182
|
.boolean()
|
|
171
|
-
.describe('True when
|
|
183
|
+
.describe('True when archive pages in range went unread — the 10-page cap ended the scan, or an undated call stopped once limit was filled, which is before any archive page when the recent window alone fills it — so older matching filings may exist beyond the dataframe. Pass filed_after / filed_before to reach them.'),
|
|
172
184
|
})
|
|
173
185
|
.optional()
|
|
174
|
-
.describe("Canvas dataframe holding
|
|
186
|
+
.describe("Canvas dataframe holding every scanned 8-K that passes the filter. Item codes ride as a comma-separated `item_codes` column, so item-frequency-over-time queries split it (`unnest(string_split(item_codes, ','))`). Absent when the result fits inline, canvas is unavailable, or materialization failed."),
|
|
175
187
|
}),
|
|
176
188
|
enrichment: {
|
|
177
189
|
notice: z
|
|
@@ -235,27 +247,31 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
235
247
|
const itemsFilter = input.items?.length ? input.items : undefined;
|
|
236
248
|
const inWindow = (row) => (!filedAfter || row.filing_date >= filedAfter) &&
|
|
237
249
|
(!filedBefore || row.filing_date <= filedBefore);
|
|
250
|
+
const passesItems = (row) => !itemsFilter || row.item_codes.some((code) => itemsFilter.includes(code));
|
|
238
251
|
const scanned = zipEightKs(submissions.filings.recent).filter(inWindow);
|
|
239
|
-
// Oldest date scanned so far — the recent window's tail (newest-first, so last).
|
|
240
|
-
let historyScannedThrough = submissions.filings.recent.filingDate.at(-1);
|
|
241
252
|
// Page into the older archive when the caller targets a date range that may
|
|
242
253
|
// predate the recent window, or when that window under-fills the inline list.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
254
|
+
// A date window reads every page overlapping it, up to the cap; the under-fill
|
|
255
|
+
// walk stops on the page that fills `limit` with rows passing the items filter,
|
|
256
|
+
// since an undated call asks for the newest `limit` and nothing older (#134).
|
|
257
|
+
const walk = new SubmissionsArchiveWalk(api, submissions, {
|
|
258
|
+
filedAfter,
|
|
259
|
+
filedBefore,
|
|
260
|
+
order: 'newest-first',
|
|
261
|
+
});
|
|
262
|
+
if (hasDateFilter || scanned.length < input.limit) {
|
|
263
|
+
let matchedSoFar = scanned.filter(passesItems).length;
|
|
264
|
+
for await (const { block } of walk) {
|
|
265
|
+
const rows = zipEightKs(block).filter(inWindow);
|
|
266
|
+
scanned.push(...rows);
|
|
267
|
+
matchedSoFar += rows.filter(passesItems).length;
|
|
268
|
+
if (!hasDateFilter && matchedSoFar >= input.limit)
|
|
253
269
|
break;
|
|
254
|
-
const block = await api.fetchArchivePage(page.name);
|
|
255
|
-
historyScannedThrough = page.filingFrom;
|
|
256
|
-
scanned.push(...zipEightKs(block).filter(inWindow));
|
|
257
270
|
}
|
|
258
271
|
}
|
|
272
|
+
// Oldest date reached — the deepest archive page read, else the recent window's tail.
|
|
273
|
+
const historyScannedThrough = walk.scannedThrough ?? submissions.filings.recent.filingDate.at(-1);
|
|
274
|
+
const archiveTruncated = walk.truncated;
|
|
259
275
|
scanned.sort((a, b) => b.filing_date.localeCompare(a.filing_date));
|
|
260
276
|
const itemDistribution = {};
|
|
261
277
|
for (const row of scanned) {
|
|
@@ -263,9 +279,7 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
263
279
|
itemDistribution[code] = (itemDistribution[code] ?? 0) + 1;
|
|
264
280
|
}
|
|
265
281
|
}
|
|
266
|
-
const matched =
|
|
267
|
-
? scanned.filter((row) => row.item_codes.some((code) => itemsFilter.includes(code)))
|
|
268
|
-
: scanned;
|
|
282
|
+
const matched = scanned.filter(passesItems);
|
|
269
283
|
let dataset;
|
|
270
284
|
const bridge = getCanvasBridge();
|
|
271
285
|
if (bridge && matched.length > input.limit) {
|
|
@@ -370,7 +384,7 @@ export const getMaterialEventsTool = tool('secedgar_get_material_events', {
|
|
|
370
384
|
}
|
|
371
385
|
if (result.dataset) {
|
|
372
386
|
const truncatedNote = result.dataset.truncated
|
|
373
|
-
? ' (truncated — older filings exist beyond the scanned
|
|
387
|
+
? ' (truncated — older filings exist beyond the scanned history)'
|
|
374
388
|
: '';
|
|
375
389
|
lines.push(`Dataset: ${result.dataset.name} (${result.dataset.row_count} rows, expires ${result.dataset.expires_at})${truncatedNote} — query with secedgar_dataframe_query.`);
|
|
376
390
|
}
|