@cyanheads/secedgar-mcp-server 0.13.1 → 0.14.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.
- package/README.md +34 -6
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js +2 -2
- package/dist/mcp-server/prompts/definitions/company-analysis.prompt.js.map +1 -1
- package/dist/mcp-server/resources/definitions/filing-types.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/filing-types.resource.js +18 -2
- package/dist/mcp-server/resources/definitions/filing-types.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js +25 -11
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts +61 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.js +396 -0
- package/dist/mcp-server/tools/definitions/find-holders.tool.js.map +1 -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 +34 -17
- package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-institutional-holdings.tool.d.ts +3 -2
- 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 +11 -6
- 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 +63 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js +380 -0
- package/dist/mcp-server/tools/definitions/get-material-events.tool.js.map +1 -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 +30 -8
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-filings.tool.js +3 -15
- package/dist/mcp-server/tools/definitions/search-filings.tool.js.map +1 -1
- package/dist/services/edgar/concept-map.d.ts +3 -1
- package/dist/services/edgar/concept-map.d.ts.map +1 -1
- package/dist/services/edgar/concept-map.js +45 -5
- package/dist/services/edgar/concept-map.js.map +1 -1
- package/dist/services/edgar/concept-series.d.ts +94 -22
- package/dist/services/edgar/concept-series.d.ts.map +1 -1
- package/dist/services/edgar/concept-series.js +171 -33
- package/dist/services/edgar/concept-series.js.map +1 -1
- package/dist/services/edgar/edgar-api-service.d.ts +7 -0
- package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
- package/dist/services/edgar/edgar-api-service.js +13 -0
- package/dist/services/edgar/edgar-api-service.js.map +1 -1
- package/dist/services/edgar/eight-k-items.d.ts +62 -0
- package/dist/services/edgar/eight-k-items.d.ts.map +1 -0
- package/dist/services/edgar/eight-k-items.js +131 -0
- package/dist/services/edgar/eight-k-items.js.map +1 -0
- package/dist/services/edgar/types.d.ts +39 -0
- package/dist/services/edgar/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Reverse 13F lookup — which institutions reported holding an issuer.
|
|
3
|
+
* Searches the EDGAR full-text index scoped to 13F-HR within one quarter's filing
|
|
4
|
+
* window and returns the filer list, each row chaining into
|
|
5
|
+
* secedgar_get_institutional_holdings for the actual position.
|
|
6
|
+
* @module mcp-server/tools/definitions/find-holders
|
|
7
|
+
*/
|
|
8
|
+
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
9
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
10
|
+
import { getCanvasBridge, toDatasetField } from '../../../services/canvas-bridge/canvas-bridge.js';
|
|
11
|
+
import { cleanDisplayName, getEdgarApiService } from '../../../services/edgar/edgar-api-service.js';
|
|
12
|
+
/**
|
|
13
|
+
* Hits returned by one EFTS request. The endpoint ignores the `size` parameter
|
|
14
|
+
* and always answers with a full page, so paging is done with `from` alone.
|
|
15
|
+
*/
|
|
16
|
+
const EFTS_PAGE_SIZE = 100;
|
|
17
|
+
/**
|
|
18
|
+
* Pages fetched in one call — 500 filer rows. Measured against the Q1 2026
|
|
19
|
+
* filing window (2026-04-01 → 2026-06-30): Apple (CUSIP 037833100) draws 6,652
|
|
20
|
+
* 13F-HR filings, so the budget returns a 500-row sample with the exact total
|
|
21
|
+
* still reported and `dataset.truncated` set; Liberty Live Holdings (530909100)
|
|
22
|
+
* draws 246 and Louisiana-Pacific (546347105) 451, both complete. Five requests
|
|
23
|
+
* at ~0.4s each keeps a call around two seconds and well inside SEC's 10 req/s
|
|
24
|
+
* limit, and the list is unranked either way — a deeper sample buys no ordering
|
|
25
|
+
* the caller can use.
|
|
26
|
+
*/
|
|
27
|
+
const FETCH_PAGE_BUDGET = 5;
|
|
28
|
+
/** Days after a quarter end by which a 13F-HR is due. */
|
|
29
|
+
const FILING_DEADLINE_DAYS = 45;
|
|
30
|
+
const QUARTER_END_SUFFIX = ['03-31', '06-30', '09-30', '12-31'];
|
|
31
|
+
/** Shift a YYYY-MM-DD date by whole days, staying in UTC. */
|
|
32
|
+
function addDays(date, days) {
|
|
33
|
+
const d = new Date(`${date}T00:00:00Z`);
|
|
34
|
+
d.setUTCDate(d.getUTCDate() + days);
|
|
35
|
+
return d.toISOString().slice(0, 10);
|
|
36
|
+
}
|
|
37
|
+
/** Calendar quarter-end date (YYYY-MM-DD) for a `YYYY-QN` string. */
|
|
38
|
+
function quarterEndDate(quarter) {
|
|
39
|
+
const [year, q] = quarter.split('-Q');
|
|
40
|
+
return `${year}-${QUARTER_END_SUFFIX[Number(q) - 1]}`;
|
|
41
|
+
}
|
|
42
|
+
/** End date of the quarter after `quarter` — the close of its filing window. */
|
|
43
|
+
function nextQuarterEndDate(quarter) {
|
|
44
|
+
const [year, q] = quarter.split('-Q');
|
|
45
|
+
const n = Number(q);
|
|
46
|
+
return n === 4 ? `${Number(year) + 1}-03-31` : `${year}-${QUARTER_END_SUFFIX[n]}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Newest reporting quarter whose 13F-HR deadline has already passed as of
|
|
50
|
+
* `today` — the default target, so an unqualified call returns a quarter that
|
|
51
|
+
* institutions have actually filed for rather than an empty in-flight one.
|
|
52
|
+
*/
|
|
53
|
+
function latestClosedQuarter(today) {
|
|
54
|
+
const cutoff = addDays(today, -FILING_DEADLINE_DAYS);
|
|
55
|
+
const year = Number(cutoff.slice(0, 4));
|
|
56
|
+
// Suffixes ascend, so the last one at or before the cutoff is the newest closed quarter.
|
|
57
|
+
const quarter = QUARTER_END_SUFFIX.findLastIndex((suffix) => `${year}-${suffix}` <= cutoff) + 1;
|
|
58
|
+
return quarter > 0 ? `${year}-Q${quarter}` : `${year - 1}-Q4`;
|
|
59
|
+
}
|
|
60
|
+
function hitToHolder(hit) {
|
|
61
|
+
const displayName = hit._source.display_names?.[0] ?? '';
|
|
62
|
+
return {
|
|
63
|
+
accession_number: hit._source.adsh || hit._id.split(':')[0] || hit._id,
|
|
64
|
+
filer_cik: hit._source.ciks?.[0] ?? '',
|
|
65
|
+
filer_name: cleanDisplayName(displayName),
|
|
66
|
+
filing_date: hit._source.file_date,
|
|
67
|
+
form: hit._source.form ?? undefined,
|
|
68
|
+
period_ending: hit._source.period_ending ?? undefined,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export const findHoldersTool = tool('secedgar_find_holders', {
|
|
72
|
+
title: 'Find Holders',
|
|
73
|
+
description: 'Find which institutional managers reported holding an issuer, by searching 13F-HR information tables for one reporting quarter. This is the reverse direction of secedgar_get_institutional_holdings: that tool takes a manager and returns its portfolio, this one takes an issuer and returns its managers — pass a returned filer_cik plus the same quarter to read the actual position. Searching by cusip is the precise path, matching the identifier the information table itself carries; without it the issuer name is matched as a phrase against the filing text, which both over-matches (unrelated issuers sharing a word) and under-matches (managers writing the name differently), so prefer cusip whenever one is known. A CUSIP cannot be derived from a ticker here — read one off any 13F information table returned by secedgar_get_institutional_holdings. The returned list is unranked: the search index scores by text relevance, which carries no signal about position size, and no ordering by shares or market value is available without opening each filing. Managers holding under $100M in 13(f) securities are exempt from filing at all.',
|
|
74
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
75
|
+
errors: [
|
|
76
|
+
{
|
|
77
|
+
reason: 'issuer_not_found',
|
|
78
|
+
code: JsonRpcErrorCode.NotFound,
|
|
79
|
+
when: 'No cusip was given and the issuer does not resolve to a known EDGAR company',
|
|
80
|
+
recovery: 'Confirm the issuer with secedgar_company_search, or pass the cusip parameter to search the information tables directly.',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
reason: 'ambiguous_issuer',
|
|
84
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
85
|
+
when: 'The issuer name matches several EDGAR companies and no cusip was given',
|
|
86
|
+
recovery: 'Retry with the ticker or the 10-digit CIK of the intended issuer from the matches list.',
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
input: z.object({
|
|
90
|
+
issuer: z
|
|
91
|
+
.string()
|
|
92
|
+
.trim()
|
|
93
|
+
.min(1, 'Issuer cannot be blank')
|
|
94
|
+
.describe('The portfolio company whose holders you want — a ticker ("AAPL"), a 10-digit CIK ("0000320193"), or a company name. Without cusip, this resolves to the company\'s EDGAR-conformed name and that name is phrase-matched against 13F information tables, so it must identify one company. With cusip supplied, it is used only to label the result.'),
|
|
95
|
+
cusip: z
|
|
96
|
+
.union([
|
|
97
|
+
z.literal(''),
|
|
98
|
+
z
|
|
99
|
+
.string()
|
|
100
|
+
.regex(/^[0-9A-Za-z]{9}$/, 'Expected a 9-character CUSIP or CINS identifier')
|
|
101
|
+
.describe('9-character CUSIP/CINS'),
|
|
102
|
+
])
|
|
103
|
+
.optional()
|
|
104
|
+
.describe('The issuer\'s 9-character CUSIP (e.g. "037833100" for Apple common stock; foreign issuers use a CINS starting with a letter, e.g. "H1467J104"). The precise match key — information tables identify every position by CUSIP, so this avoids the name-phrase misses. Each share class has its own CUSIP, so a multi-class issuer needs one call per class. Read a CUSIP off the holdings returned by secedgar_get_institutional_holdings.'),
|
|
105
|
+
quarter: z
|
|
106
|
+
.union([
|
|
107
|
+
z.literal(''),
|
|
108
|
+
z
|
|
109
|
+
.string()
|
|
110
|
+
.regex(/^\d{4}-Q[1-4]$/, 'Expected YYYY-QN, e.g. 2026-Q1')
|
|
111
|
+
.describe('YYYY-QN'),
|
|
112
|
+
])
|
|
113
|
+
.optional()
|
|
114
|
+
.describe('Reporting quarter to search, "YYYY-QN" (e.g. "2026-Q1"). Omit for the newest quarter whose 45-day filing deadline has passed — the applied quarter and its filing window are echoed in the response. A quarter still inside its deadline returns nothing, because the filings do not exist yet.'),
|
|
115
|
+
limit: z
|
|
116
|
+
.number()
|
|
117
|
+
.int()
|
|
118
|
+
.min(1)
|
|
119
|
+
.max(100)
|
|
120
|
+
.default(20)
|
|
121
|
+
.describe('Filer rows returned inline. The full fetched set (up to 500 rows) is materialized as a dataframe when a canvas is available. Default 20.'),
|
|
122
|
+
}),
|
|
123
|
+
output: z.object({
|
|
124
|
+
issuer: z.string().describe('The issuer input, echoed.'),
|
|
125
|
+
resolved_issuer_name: z
|
|
126
|
+
.string()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe('EDGAR-conformed company name the issuer resolved to, and the phrase that was searched. Absent when cusip was supplied (no company lookup runs).'),
|
|
129
|
+
resolved_issuer_cik: z
|
|
130
|
+
.string()
|
|
131
|
+
.optional()
|
|
132
|
+
.describe('CIK of the resolved issuer, zero-padded to 10 digits. Absent when cusip was supplied.'),
|
|
133
|
+
search_mode: z
|
|
134
|
+
.enum(['cusip', 'name'])
|
|
135
|
+
.describe('Which key matched the information tables. "cusip" matches the identifier the table itself carries; "name" phrase-matches the filing text and is looser in both directions.'),
|
|
136
|
+
search_key: z.string().describe('The exact term searched — the CUSIP, or the quoted phrase.'),
|
|
137
|
+
quarter: z
|
|
138
|
+
.string()
|
|
139
|
+
.describe('Reporting quarter searched, "YYYY-QN" — the requested one, or the applied default.'),
|
|
140
|
+
filed_from: z.string().describe('Start of the filing window searched (YYYY-MM-DD).'),
|
|
141
|
+
filed_to: z.string().describe('End of the filing window searched (YYYY-MM-DD).'),
|
|
142
|
+
total_filings: z
|
|
143
|
+
.number()
|
|
144
|
+
.describe("Total 13F-HR filings matching the search key inside the filing window, as reported by the index. A slight over-count of this quarter's holders on two counts, both of which the returned rows correct for: a few percent are amendments restating an older quarter, and a few more are managers amending their own report for this quarter, which puts them in the window twice."),
|
|
145
|
+
total_is_exact: z
|
|
146
|
+
.boolean()
|
|
147
|
+
.describe('False when total_filings is a lower bound (the index capped the count).'),
|
|
148
|
+
fetched: z
|
|
149
|
+
.number()
|
|
150
|
+
.describe('Filings retrieved from the index, capped by the fetch budget of 500. Equals total_filings when the whole window fit inside the budget.'),
|
|
151
|
+
holders_in_quarter: z
|
|
152
|
+
.number()
|
|
153
|
+
.describe('Distinct managers among the fetched filings reporting this quarter as their period — the set paged by limit and materialized on the dataframe. Lower than fetched by the filings dropped as amendments restating other quarters, and by managers that amended this quarter (kept once, at their latest filing).'),
|
|
154
|
+
holders: z
|
|
155
|
+
.array(z
|
|
156
|
+
.object({
|
|
157
|
+
filer_name: z
|
|
158
|
+
.string()
|
|
159
|
+
.describe('Institutional manager that filed, with ticker/CIK parentheticals stripped.'),
|
|
160
|
+
filer_cik: z
|
|
161
|
+
.string()
|
|
162
|
+
.describe("Filer CIK, zero-padded to 10 digits. Pass as ticker_or_cik to secedgar_get_institutional_holdings for this manager's positions."),
|
|
163
|
+
accession_number: z
|
|
164
|
+
.string()
|
|
165
|
+
.describe('Accession number of the 13F-HR — pass to secedgar_get_filing.'),
|
|
166
|
+
filing_date: z.string().describe('Date the 13F-HR was submitted (YYYY-MM-DD).'),
|
|
167
|
+
form: z
|
|
168
|
+
.string()
|
|
169
|
+
.optional()
|
|
170
|
+
.describe('Form type, "13F-HR" or "13F-HR/A" for an amendment. Absent when the index carries no form tag.'),
|
|
171
|
+
})
|
|
172
|
+
.describe('One institutional manager reporting a position in this issuer.'))
|
|
173
|
+
.describe('One page of filers, capped at limit. Order carries no position-size meaning — see the ordering note.'),
|
|
174
|
+
dataset: z
|
|
175
|
+
.object({
|
|
176
|
+
name: z
|
|
177
|
+
.string()
|
|
178
|
+
.describe('Dataframe handle (df_XXXXX_XXXXX) — pass to secedgar_dataframe_query.'),
|
|
179
|
+
row_count: z.number().describe('Rows materialized in the dataframe.'),
|
|
180
|
+
expires_at: z.string().describe('ISO 8601 expiry timestamp.'),
|
|
181
|
+
truncated: z
|
|
182
|
+
.boolean()
|
|
183
|
+
.describe('True when more filers exist beyond the fetch budget — total_filings exceeds fetched.'),
|
|
184
|
+
})
|
|
185
|
+
.optional()
|
|
186
|
+
.describe('Canvas dataframe holding every fetched filer row, each carrying the issuer key and quarter so it joins across issuers and quarters. Absent when the result fits inline, canvas is unavailable, or materialization failed. Query with secedgar_dataframe_query.'),
|
|
187
|
+
}),
|
|
188
|
+
enrichment: {
|
|
189
|
+
ordering: z
|
|
190
|
+
.string()
|
|
191
|
+
.describe('How the holder list is ordered, and what that ordering does not mean.'),
|
|
192
|
+
notice: z
|
|
193
|
+
.string()
|
|
194
|
+
.optional()
|
|
195
|
+
.describe('Guidance when the search returned no filers — names the likely cause.'),
|
|
196
|
+
truncated: z.boolean().optional().describe('True when the inline holders list was capped.'),
|
|
197
|
+
shown: z.number().optional().describe('Number of filers shown inline.'),
|
|
198
|
+
cap: z.number().optional().describe('The limit cap applied.'),
|
|
199
|
+
},
|
|
200
|
+
async handler(input, ctx) {
|
|
201
|
+
const api = getEdgarApiService();
|
|
202
|
+
const cusip = input.cusip?.toUpperCase() || undefined;
|
|
203
|
+
// With a CUSIP in hand the information tables are matched directly, so no
|
|
204
|
+
// company lookup runs and the issuer input is carried through as a label.
|
|
205
|
+
let resolvedName;
|
|
206
|
+
let resolvedCik;
|
|
207
|
+
if (!cusip) {
|
|
208
|
+
const resolved = await api.resolveCik(input.issuer);
|
|
209
|
+
const candidates = Array.isArray(resolved) ? resolved : [resolved];
|
|
210
|
+
if (candidates.length > 1) {
|
|
211
|
+
const shown = candidates.slice(0, 10);
|
|
212
|
+
const list = shown.map((c) => `${c.ticker ?? c.cik} (${c.name ?? 'Unknown'})`).join(', ');
|
|
213
|
+
throw ctx.fail('ambiguous_issuer', `'${input.issuer}' matches multiple EDGAR companies: ${list}.`, {
|
|
214
|
+
...ctx.recoveryFor('ambiguous_issuer'),
|
|
215
|
+
matches: shown.map((c) => ({ cik: c.cik, name: c.name, ticker: c.ticker })),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
const match = candidates[0];
|
|
219
|
+
// A bare numeric CIK absent from the ticker cache resolves without a name,
|
|
220
|
+
// leaving nothing to phrase-match — that is a miss, not a silent broadening.
|
|
221
|
+
if (!match?.name) {
|
|
222
|
+
throw ctx.fail('issuer_not_found', `No EDGAR company name found for issuer '${input.issuer}', so there is nothing to match against 13F information tables.`, { ...ctx.recoveryFor('issuer_not_found') });
|
|
223
|
+
}
|
|
224
|
+
resolvedName = match.name;
|
|
225
|
+
resolvedCik = match.cik;
|
|
226
|
+
}
|
|
227
|
+
const quarter = input.quarter || latestClosedQuarter(new Date().toISOString().slice(0, 10));
|
|
228
|
+
const quarterEnd = quarterEndDate(quarter);
|
|
229
|
+
// The window runs from the day after the reporting quarter to the end of the
|
|
230
|
+
// next one. It covers the 45-day deadline with room for late filers, and stops
|
|
231
|
+
// before the following quarter's originals start arriving — those report a
|
|
232
|
+
// different period and would otherwise be counted as this quarter's holders.
|
|
233
|
+
const filedFrom = addDays(quarterEnd, 1);
|
|
234
|
+
const filedTo = nextQuarterEndDate(quarter);
|
|
235
|
+
const searchKey = cusip ?? `"${resolvedName}"`;
|
|
236
|
+
const searchMode = cusip ? 'cusip' : 'name';
|
|
237
|
+
// EFTS answers with a full page regardless of the requested size, so the
|
|
238
|
+
// budget is expressed in pages and `from` walks the window.
|
|
239
|
+
/**
|
|
240
|
+
* One row per manager, keyed by filer CIK. A manager that amended its report
|
|
241
|
+
* for this same quarter files twice inside one window — 7 of Cracker Barrel's
|
|
242
|
+
* 256 Q1 2026 filings — and listing it twice would inflate a holder count by
|
|
243
|
+
* a few percent. The later filing wins: the amendment supersedes the original
|
|
244
|
+
* and its accession is the one worth reading.
|
|
245
|
+
*/
|
|
246
|
+
const byFiler = new Map();
|
|
247
|
+
const seen = new Set();
|
|
248
|
+
let total = 0;
|
|
249
|
+
let totalIsExact = true;
|
|
250
|
+
let hitsFetched = 0;
|
|
251
|
+
for (let page = 0; page < FETCH_PAGE_BUDGET; page++) {
|
|
252
|
+
const response = await api.searchFilings({
|
|
253
|
+
query: searchKey,
|
|
254
|
+
forms: ['13F-HR'],
|
|
255
|
+
startDate: filedFrom,
|
|
256
|
+
endDate: filedTo,
|
|
257
|
+
from: page * EFTS_PAGE_SIZE,
|
|
258
|
+
size: EFTS_PAGE_SIZE,
|
|
259
|
+
});
|
|
260
|
+
if (page === 0) {
|
|
261
|
+
total = response.hits.total.value;
|
|
262
|
+
totalIsExact = response.hits.total.relation === 'eq';
|
|
263
|
+
}
|
|
264
|
+
const hits = response.hits.hits;
|
|
265
|
+
hitsFetched += hits.length;
|
|
266
|
+
for (const hit of hits) {
|
|
267
|
+
const row = hitToHolder(hit);
|
|
268
|
+
// One filing can match on several documents; the filer is listed once.
|
|
269
|
+
if (seen.has(row.accession_number))
|
|
270
|
+
continue;
|
|
271
|
+
seen.add(row.accession_number);
|
|
272
|
+
// Amendments to older quarters keep arriving inside any filing window —
|
|
273
|
+
// roughly 6% of the Q1 2026 window — so the reported period is what
|
|
274
|
+
// decides membership, not the filing date.
|
|
275
|
+
if (row.period_ending !== quarterEnd)
|
|
276
|
+
continue;
|
|
277
|
+
const existing = byFiler.get(row.filer_cik);
|
|
278
|
+
if (!existing || row.filing_date > existing.filing_date) {
|
|
279
|
+
byFiler.set(row.filer_cik, row);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (hits.length < EFTS_PAGE_SIZE || hitsFetched >= total)
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
const rows = [...byFiler.values()];
|
|
286
|
+
const truncated = hitsFetched < total;
|
|
287
|
+
let dataset;
|
|
288
|
+
const bridge = getCanvasBridge();
|
|
289
|
+
if (bridge && rows.length > input.limit) {
|
|
290
|
+
const registered = await bridge.registerDataframe(ctx, {
|
|
291
|
+
rows: rows.map((row) => ({
|
|
292
|
+
issuer: input.issuer,
|
|
293
|
+
issuer_cusip: cusip ?? null,
|
|
294
|
+
issuer_cik: resolvedCik ?? null,
|
|
295
|
+
quarter,
|
|
296
|
+
reporting_period: quarterEnd,
|
|
297
|
+
filer_name: row.filer_name,
|
|
298
|
+
filer_cik: row.filer_cik,
|
|
299
|
+
accession_number: row.accession_number,
|
|
300
|
+
filing_date: row.filing_date,
|
|
301
|
+
form: row.form ?? null,
|
|
302
|
+
})),
|
|
303
|
+
sourceTool: 'secedgar_find_holders',
|
|
304
|
+
queryParams: {
|
|
305
|
+
issuer: input.issuer,
|
|
306
|
+
cusip,
|
|
307
|
+
quarter,
|
|
308
|
+
filed_from: filedFrom,
|
|
309
|
+
filed_to: filedTo,
|
|
310
|
+
search_mode: searchMode,
|
|
311
|
+
},
|
|
312
|
+
truncated,
|
|
313
|
+
});
|
|
314
|
+
if (registered)
|
|
315
|
+
dataset = { ...toDatasetField(registered), truncated };
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* The budget slices the window in relevance order, so once it binds the
|
|
319
|
+
* result is a sample rather than a short list — an aggregate over it is an
|
|
320
|
+
* aggregate over that sample, which is worth saying before someone counts it.
|
|
321
|
+
*/
|
|
322
|
+
const sampleNote = truncated
|
|
323
|
+
? ` The fetch budget stopped at ${hitsFetched} of ${total} matching filings, and the index served them in that same relevance order, so this is a sample of the holders rather than the first ones by any measure.`
|
|
324
|
+
: '';
|
|
325
|
+
ctx.enrich({
|
|
326
|
+
ordering: `Filers are listed in EDGAR search-relevance order, which reflects text match strength only — it is not a ranking by shares held or market value.${sampleNote} Read a manager's actual position with secedgar_get_institutional_holdings using its filer_cik and quarter "${quarter}".`,
|
|
327
|
+
});
|
|
328
|
+
const searchedTerm = searchMode === 'cusip' ? `CUSIP ${searchKey}` : `the phrase ${searchKey}`;
|
|
329
|
+
if (total === 0) {
|
|
330
|
+
const deadline = addDays(quarterEnd, FILING_DEADLINE_DAYS);
|
|
331
|
+
const cause = deadline > new Date().toISOString().slice(0, 10)
|
|
332
|
+
? `13F-HR filings for ${quarter} are not due until ${deadline}, so few or none exist yet — search an earlier quarter.`
|
|
333
|
+
: searchMode === 'cusip'
|
|
334
|
+
? 'Verify the CUSIP identifies a 13(f)-reportable security and covers the intended share class, or drop cusip to phrase-match the issuer name instead.'
|
|
335
|
+
: 'The issuer name is phrase-matched against filing text and managers may write it differently — pass cusip for an exact match, read one off any secedgar_get_institutional_holdings result.';
|
|
336
|
+
ctx.enrich.notice(`No 13F-HR filings matched ${searchedTerm} filed ${filedFrom} to ${filedTo}. ${cause}`);
|
|
337
|
+
}
|
|
338
|
+
else if (rows.length === 0) {
|
|
339
|
+
ctx.enrich.notice(`${total} 13F-HR filings matched ${searchedTerm} in the ${filedFrom} to ${filedTo} window, but none of the ${hitsFetched} fetched report ${quarter} (period ending ${quarterEnd}) — they are amendments restating other quarters. Search the quarter those amendments cover, or a later one.`);
|
|
340
|
+
}
|
|
341
|
+
else if (rows.length > input.limit) {
|
|
342
|
+
ctx.enrich.truncated({
|
|
343
|
+
shown: input.limit,
|
|
344
|
+
cap: input.limit,
|
|
345
|
+
guidance: truncated
|
|
346
|
+
? `${total} filings matched in the window; the fetch budget of ${FETCH_PAGE_BUDGET * EFTS_PAGE_SIZE} retrieved ${hitsFetched}, resolving to ${rows.length} managers reporting ${quarter}. Query that set with secedgar_dataframe_query, or narrow to a single share class with cusip.`
|
|
347
|
+
: 'Query the full matched set with secedgar_dataframe_query.',
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
ctx.log.info('Holder search completed', {
|
|
351
|
+
issuer: input.issuer,
|
|
352
|
+
searchMode,
|
|
353
|
+
quarter,
|
|
354
|
+
total,
|
|
355
|
+
fetched: hitsFetched,
|
|
356
|
+
inQuarter: rows.length,
|
|
357
|
+
datasetName: dataset?.name,
|
|
358
|
+
});
|
|
359
|
+
return {
|
|
360
|
+
issuer: input.issuer,
|
|
361
|
+
resolved_issuer_name: resolvedName,
|
|
362
|
+
resolved_issuer_cik: resolvedCik,
|
|
363
|
+
search_mode: searchMode,
|
|
364
|
+
search_key: searchKey,
|
|
365
|
+
quarter,
|
|
366
|
+
filed_from: filedFrom,
|
|
367
|
+
filed_to: filedTo,
|
|
368
|
+
total_filings: total,
|
|
369
|
+
total_is_exact: totalIsExact,
|
|
370
|
+
fetched: hitsFetched,
|
|
371
|
+
holders_in_quarter: rows.length,
|
|
372
|
+
holders: rows.slice(0, input.limit),
|
|
373
|
+
dataset,
|
|
374
|
+
};
|
|
375
|
+
},
|
|
376
|
+
format: (result) => {
|
|
377
|
+
const lines = [
|
|
378
|
+
`**13F holders of ${result.issuer}** — ${result.quarter}, filed ${result.filed_from} to ${result.filed_to}`,
|
|
379
|
+
];
|
|
380
|
+
if (result.resolved_issuer_name) {
|
|
381
|
+
lines.push(`Resolved issuer: ${result.resolved_issuer_name} (CIK ${result.resolved_issuer_cik})`);
|
|
382
|
+
}
|
|
383
|
+
lines.push(`Matched by ${result.search_mode}: ${result.search_key}`, `${result.total_filings} filings in the window (${result.total_is_exact ? 'exact count' : 'lower bound'}); ${result.fetched} fetched, ${result.holders_in_quarter} managers reporting ${result.quarter}, ${result.holders.length} shown`);
|
|
384
|
+
for (const h of result.holders) {
|
|
385
|
+
lines.push(`- ${h.filer_name} (CIK ${h.filer_cik}) — ${h.form ?? '13F-HR'} ${h.filing_date} [${h.accession_number}]`);
|
|
386
|
+
}
|
|
387
|
+
if (result.dataset) {
|
|
388
|
+
const truncatedNote = result.dataset.truncated
|
|
389
|
+
? ' (truncated — more filers exist beyond the fetch budget)'
|
|
390
|
+
: '';
|
|
391
|
+
lines.push(`\nDataset: ${result.dataset.name} (${result.dataset.row_count} rows, expires ${result.dataset.expires_at})${truncatedNote} — query with secedgar_dataframe_query.`);
|
|
392
|
+
}
|
|
393
|
+
return [{ type: 'text', text: lines.join('\n') }];
|
|
394
|
+
},
|
|
395
|
+
});
|
|
396
|
+
//# sourceMappingURL=find-holders.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-holders.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-holders.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-financials.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-financials.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"get-financials.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-financials.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAejE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkf5B,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
7
7
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
8
8
|
import { getCanvasBridge, toDatasetField } from '../../../services/canvas-bridge/canvas-bridge.js';
|
|
9
9
|
import { resolveConceptTarget } from '../../../services/edgar/concept-map.js';
|
|
10
|
-
import {
|
|
10
|
+
import { matchesPeriodType, preferredTagIndex, resolveFrameSeries, seriesStalenessCaveats, } from '../../../services/edgar/concept-series.js';
|
|
11
11
|
import { getEdgarApiService } from '../../../services/edgar/edgar-api-service.js';
|
|
12
12
|
import { missingQuarterCaveats } from '../../../services/edgar/fiscal-periods.js';
|
|
13
13
|
export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
@@ -128,7 +128,7 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
128
128
|
caveats: z
|
|
129
129
|
.array(z.string())
|
|
130
130
|
.optional()
|
|
131
|
-
.describe("Data-completeness warnings about the returned series. Two kinds. On quarterly results, one entry when one or two calendar quarters are absent from every recent qualifying year — SEC reports a filer's fiscal Q4 as the 10-K residual rather than a discrete quarterly fact, so the calendar quarter fiscal Q4 spans has no frame-tagged value, and a filer whose other fiscal quarters span non-calendar durations loses a second quarter the same way. Applies to calendar-year filers (no discrete Q4) as much as to off-calendar ones. On any result, one entry when the concept resolved to an XBRL tag SEC has retired from the taxonomy
|
|
131
|
+
.describe("Data-completeness warnings about the returned series. Two kinds. On quarterly results, one entry when one or two calendar quarters are absent from every recent qualifying year — SEC reports a filer's fiscal Q4 as the 10-K residual rather than a discrete quarterly fact, so the calendar quarter fiscal Q4 spans has no frame-tagged value, and a filer whose other fiscal quarters span non-calendar durations loses a second quarter the same way. Applies to calendar-year filers (no discrete Q4) as much as to off-calendar ones. On any result, one entry when the series stops well short of today — either because the concept resolved to an XBRL tag SEC has retired from the taxonomy (the current tags reported nothing), or because a current tag's series ends more than two years plus a filing window back, which is what a filer migrating to a different element or dropping the disclosure looks like. Absent when the series has nothing to flag."),
|
|
132
132
|
}),
|
|
133
133
|
async handler(input, ctx) {
|
|
134
134
|
const api = getEdgarApiService();
|
|
@@ -166,12 +166,13 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
166
166
|
// Resolve concept to taxonomy + XBRL tag(s). The mapping's own taxonomy wins
|
|
167
167
|
// over the `us-gaap` default (e.g. `dei` for shares_outstanding); ifrs-full
|
|
168
168
|
// uses the confirmed IFRS variants when the mapping has them.
|
|
169
|
-
const { label, tags, taxonomy, unit: mappedUnit, } = resolveConceptTarget(input.concept, input.taxonomy);
|
|
169
|
+
const { label, tagSelection, tags, taxonomy, unit: mappedUnit, } = resolveConceptTarget(input.concept, input.taxonomy);
|
|
170
170
|
// Default to "annual" for unset period_type; post-fetch fallback handles instant concepts (#48).
|
|
171
171
|
const effectivePeriodType = input.period_type ?? 'annual';
|
|
172
172
|
// Try each tag until we get data. `tryGetCompanyConcept` returns null for 404
|
|
173
173
|
// (tag not reported by this company); other errors propagate.
|
|
174
|
-
|
|
174
|
+
/** Responding tags keyed by array position, in declared order. */
|
|
175
|
+
const responses = new Map();
|
|
175
176
|
const tagsTried = [];
|
|
176
177
|
/**
|
|
177
178
|
* Each unit is augmented with its source-tag index so the frame dedup can
|
|
@@ -183,20 +184,24 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
183
184
|
const resp = await api.tryGetCompanyConcept(match.cik, taxonomy, tag);
|
|
184
185
|
if (!resp)
|
|
185
186
|
continue;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
};
|
|
193
|
-
}
|
|
187
|
+
responses.set(tagIndex, {
|
|
188
|
+
units: resp.units,
|
|
189
|
+
label: resp.label,
|
|
190
|
+
description: resp.description ?? undefined,
|
|
191
|
+
tag: resp.tag,
|
|
192
|
+
});
|
|
194
193
|
for (const units of Object.values(resp.units)) {
|
|
195
194
|
for (const u of units) {
|
|
196
195
|
allUnits.push({ ...u, tagIndex });
|
|
197
196
|
}
|
|
198
197
|
}
|
|
199
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* The concept is described by the tag that won for this filer, which under a
|
|
201
|
+
* `coverage` selection is not the first one to respond (#101).
|
|
202
|
+
*/
|
|
203
|
+
const winningTagIndex = preferredTagIndex(allUnits, tagSelection);
|
|
204
|
+
const conceptResponse = winningTagIndex !== undefined ? responses.get(winningTagIndex) : undefined;
|
|
200
205
|
if (!conceptResponse || allUnits.length === 0) {
|
|
201
206
|
// Probe companyfacts to discover what namespaces and tags this filer actually reports.
|
|
202
207
|
// Only on the error path — one extra request, never on the happy path.
|
|
@@ -238,7 +243,7 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
238
243
|
* only, same-frame collisions resolved by tag priority then latest `filed`
|
|
239
244
|
* (#44). An empty map means the concept exists but has no frame-aligned entries.
|
|
240
245
|
*/
|
|
241
|
-
const byFrameClean = resolveFrameSeries(allUnits);
|
|
246
|
+
const byFrameClean = resolveFrameSeries(allUnits, tagSelection);
|
|
242
247
|
if (byFrameClean.size === 0) {
|
|
243
248
|
throw ctx.fail('no_frame_data', `'${conceptResponse.tag}' exists for this company but has no standard-period data.`, {
|
|
244
249
|
...ctx.recoveryFor('no_frame_data'),
|
|
@@ -278,6 +283,12 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
278
283
|
}
|
|
279
284
|
// Sort newest first
|
|
280
285
|
filtered.sort((a, b) => b.end.localeCompare(a.end));
|
|
286
|
+
/**
|
|
287
|
+
* Read from the full deduped set, not the period-filtered slice: an annual
|
|
288
|
+
* view that stops a year behind a still-current quarterly series is a
|
|
289
|
+
* property of the filter, not of the concept.
|
|
290
|
+
*/
|
|
291
|
+
const newestFramed = [...byFrameClean.values()].reduce((newest, unit) => (!newest || unit.end > newest.end ? unit : newest), undefined);
|
|
281
292
|
/**
|
|
282
293
|
* Off-calendar filers lose a whole calendar quarter from the frame-tagged
|
|
283
294
|
* series — SEC reports fiscal Q4 as the 10-K residual, never as a discrete
|
|
@@ -290,11 +301,17 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
290
301
|
const caveats = [
|
|
291
302
|
...(resolvedPeriodType === 'annual' ? [] : missingQuarterCaveats(byFrameClean.keys())),
|
|
292
303
|
/**
|
|
293
|
-
* The tag that won the
|
|
294
|
-
*
|
|
295
|
-
*
|
|
304
|
+
* The tag that won the walk can be one SEC retired years ago, which
|
|
305
|
+
* happens exactly when no current tag reports for this filer; the values
|
|
306
|
+
* look ordinary and the taxonomy label is the only tell (#98). A current
|
|
307
|
+
* tag whose series simply stops carries no tell at all, so the gap to
|
|
308
|
+
* today is the signal — one companyconcept payload is all this tool reads,
|
|
309
|
+
* and it holds no filer-wide period to compare against (#102).
|
|
296
310
|
*/
|
|
297
|
-
...
|
|
311
|
+
...seriesStalenessCaveats(conceptResponse.tag, conceptResponse.label, newestFramed, {
|
|
312
|
+
date: new Date().toISOString().slice(0, 10),
|
|
313
|
+
kind: 'current-date',
|
|
314
|
+
}),
|
|
298
315
|
];
|
|
299
316
|
// Determine unit string
|
|
300
317
|
const unitKey = Object.keys(conceptResponse.units)[0] ?? mappedUnit ?? 'USD';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-financials.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-financials.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-financials.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-financials.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IAC/D,WAAW,EACT,mRAAmR;IACrR,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,UAAU,EAAE;QACV,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC9F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACxE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KAC9D;IAED,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,6CAA6C;YACnD,QAAQ,EAAE,gEAAgE;SAC3E;QACD;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,6EAA6E;YACnF,QAAQ,EAAE,+EAA+E;SAC1F;QACD;YACE,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,iFAAiF;YACvF,QAAQ,EAAE,6EAA6E;SACxF;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,4EAA4E;YAClF,QAAQ,EAAE,uEAAuE;SAClF;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,gEAAgE;YACtE,QAAQ,EAAE,qEAAqE;SAChF;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,sOAAsO,CACvO;QACH,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aACrC,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,kHAAkH,CACnH;QACH,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aACpC,QAAQ,EAAE;aACV,QAAQ,CACP,+PAA+P,CAChQ;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2OAA2O,CAC5O;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACrE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACnE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wGAAwG,CACzG;QACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACnF,IAAI,EAAE,CAAC;aACJ,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC7C,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACzD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mPAAmP,CACpP;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,2IAA2I,CAC5I;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAChF,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,CAAC,yDAAyD,CAAC;SACvE,CAAC;aACD,QAAQ,CAAC,wEAAwE,CAAC,CACtF;aACA,QAAQ,CAAC,yCAAyC,CAAC;QACtD,UAAU,EAAE,CAAC;aACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,4FAA4F,CAC7F;QACH,OAAO,EAAE,CAAC;aACP,MAAM,CAAC;YACN,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,uEAAuE,CAAC;YACpF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SAC9D,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CACP,wSAAwS,CACzS;QACH,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,46BAA46B,CAC76B;KACJ,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAEjC,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,KAAK,CAAC,OAAO,cAAc,EAAE;gBAC3E,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,4EAA4E;YAC5E,0EAA0E;YAC1E,oEAAoE;YACpE,8EAA8E;YAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;iBAChF,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,GAAG,CAAC,IAAI,CACZ,mBAAmB,EACnB,IAAI,KAAK,CAAC,OAAO,iCAAiC,IAAI,qDAAqD,EAC3G;gBACE,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC;gBACvC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzB,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC,CAAC;aACJ,CACF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,KAAK,CAAC,OAAO,cAAc,EAAE;gBAC3E,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,8DAA8D;QAC9D,MAAM,EACJ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,IAAI,EAAE,UAAU,GACjB,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExD,iGAAiG;QACjG,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC;QAE1D,8EAA8E;QAC9E,8DAA8D;QAC9D,kEAAkE;QAClE,MAAM,SAAS,GAAG,IAAI,GAAG,EAQtB,CAAC;QACJ,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B;;;WAGG;QACH,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;gBAC1C,GAAG,EAAE,IAAI,CAAC,GAAG;aACd,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,eAAe,GACnB,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7E,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,uFAAuF;YACvF,uEAAuE;YACvE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAElE,IAAI,IAAY,CAAC;YACjB,IAAI,KAAK,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,gBAAgB,GAAG,mBAAmB;qBACzC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBACV,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAClD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;oBACvE,sFAAsF;oBACtF,MAAM,YAAY,GAAG,UAAU;wBAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;wBACxE,CAAC,CAAC,EAAE,CAAC;oBACP,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC;wBAC5B,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,MAAM,eAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAClE,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,MAAM,QAAQ,CAAC;gBACtC,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,GAAG,6BAA6B,gBAAgB,iFAAiF,CAAC;YACxI,CAAC;iBAAM,CAAC;gBACN,IAAI;oBACF,QAAQ,KAAK,WAAW;wBACtB,CAAC,CAAC,gFAAgF;wBAClF,CAAC,CAAC,uFAAuF,CAAC;YAChG,CAAC;YAED,MAAM,GAAG,CAAC,IAAI,CACZ,iBAAiB,EACjB,qBAAqB,KAAK,CAAC,OAAO,WAAW,QAAQ,oBAAoB,EACzE;gBACE,QAAQ,EAAE,EAAE,IAAI,EAAE;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ;gBACR,UAAU,EAAE,SAAS;gBACrB,oBAAoB,EAAE,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aACvF,CACF,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAC,IAAI,CACZ,eAAe,EACf,IAAI,eAAe,CAAC,GAAG,4DAA4D,EACnF;gBACE,GAAG,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC;gBACnC,GAAG,EAAE,eAAe,CAAC,GAAG;aACzB,CACF,CAAC;QACJ,CAAC;QAED,yFAAyF;QACzF,qFAAqF;QACrF,IAAI,kBAAkB,GAAG,mBAAmB,CAAC;QAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5D,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAChD,CAAC;QAEF,qFAAqF;QACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClD,MAAM,UAAU,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAErD;;;;;eAKG;YACH,IAAI,UAAU,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBAClD,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,kBAAkB,GAAG,KAAK,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,UAAU;oBACrB,CAAC,CAAC,iFAAiF;oBACnF,CAAC,CAAC,mBAAmB,KAAK,QAAQ;wBAChC,CAAC,CAAC,+DAA+D;wBACjE,CAAC,CAAC,+DAA+D,CAAC;gBACtE,MAAM,GAAG,CAAC,IAAI,CACZ,gBAAgB,EAChB,MAAM,mBAAmB,cAAc,eAAe,CAAC,GAAG,IAAI,EAC9D;oBACE,QAAQ,EAAE,EAAE,IAAI,EAAE;oBAClB,GAAG,EAAE,eAAe,CAAC,GAAG;oBACxB,WAAW,EAAE,mBAAmB;iBACjC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpD;;;;WAIG;QACH,MAAM,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EACpE,SAAS,CACV,CAAC;QAEF;;;;;;;;WAQG;QACH,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;YACtF;;;;;;;eAOG;YACH,GAAG,sBAAsB,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE;gBAClF,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3C,IAAI,EAAE,cAAc;aACrB,CAAC;SACH,CAAC;QAEF,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,KAAK,CAAC;QAE7E,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,CAAC,KAAK;YACf,KAAK,EAAE,CAAC,CAAC,GAAG;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;YAC3B,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,WAAW,EAAE,CAAC,CAAC,EAAE;YACjB,aAAa,EAAE,CAAC,CAAC,EAAE;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,gBAAgB,EAAE,CAAC,CAAC,IAAI;SACzB,CAAC,CAAC,CAAC;QAEJ,IAAI,OAA4E,CAAC;QACjF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;gBAC/B,OAAO,EAAE,eAAe,CAAC,GAAG;gBAC5B,QAAQ;gBACR,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;gBAC7B,UAAU,EAAE,CAAC,CAAC,GAAG;gBACjB,oEAAoE;gBACpE,mEAAmE;gBACnE,2DAA2D;gBAC3D,gBAAgB,EAAE,CAAC,CAAC,WAAW;gBAC/B,gBAAgB,EAAE,CAAC,CAAC,aAAa;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;aACrC,CAAC,CAAC,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACrD,IAAI;gBACJ,UAAU,EAAE,yBAAyB;gBACrC,WAAW,EAAE;oBACX,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,OAAO,EAAE,eAAe,CAAC,GAAG;oBAC5B,QAAQ;oBACR,WAAW,EAAE,kBAAkB;iBAChC;aACF,CAAC,CAAC;YACH,IAAI,UAAU;gBAAE,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QAED,wEAAwE;QACxE,+EAA+E;QAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACnC,OAAO,EAAE,KAAK,CAAC,GAAG;YAClB,OAAO,EAAE,eAAe,CAAC,GAAG;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,EAAE,IAAI;SAC3B,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO;YACpC,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,eAAe,CAAC,GAAG;YAC5B,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,KAAK;YACrC,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,SAAS;YACrD,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACxD,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAClD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,KAAK,KAAK;gBACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBACzC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;oBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAC1B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC;YACnC,MAAM,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACxD,MAAM,SAAS,GAAG,SAAS;gBACzB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,WAAW,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,gBAAgB,GAAG;gBACrE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,gBAAgB,GAAG,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,SAAS,CAAC,CAAC,KAAK,OAAO,KAAK,MAAM,SAAS,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,SAAS,GACb,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC3C,CAAC,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,mBAAmB,MAAM,CAAC,OAAO,CAAC,SAAS,+CAA+C;gBAChI,CAAC,CAAC,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CACR,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,kBAAkB,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,yCAAyC,CAChK,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR
|
|
3
3
|
* information table XML. Institution lookup only — `ticker_or_cik` is the 13F filer.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The reverse direction (which institutions hold an issuer) is secedgar_find_holders,
|
|
5
|
+
* which searches the information tables by CUSIP and returns filer CIKs to feed back
|
|
6
|
+
* into this tool (#81).
|
|
6
7
|
* @module mcp-server/tools/definitions/get-institutional-holdings
|
|
7
8
|
*/
|
|
8
9
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-institutional-holdings.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-institutional-holdings.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"get-institutional-holdings.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-institutional-holdings.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,+BAA+B,CAAC;AAqI5F,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmiBvC,CAAC"}
|