@cyanheads/secedgar-mcp-server 0.12.5 → 0.13.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 -5
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts +89 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js +442 -0
- package/dist/mcp-server/tools/definitions/compare-companies.tool.js.map +1 -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 +1 -24
- package/dist/mcp-server/tools/definitions/fetch-frames.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-financials.tool.d.ts +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 +36 -56
- package/dist/mcp-server/tools/definitions/get-financials.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts +81 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js +254 -0
- package/dist/mcp-server/tools/definitions/get-snapshot.tool.js.map +1 -0
- package/dist/services/edgar/concept-map.d.ts +21 -1
- package/dist/services/edgar/concept-map.d.ts.map +1 -1
- package/dist/services/edgar/concept-map.js +16 -0
- package/dist/services/edgar/concept-map.js.map +1 -1
- package/dist/services/edgar/concept-series.d.ts +65 -0
- package/dist/services/edgar/concept-series.d.ts.map +1 -0
- package/dist/services/edgar/concept-series.js +91 -0
- package/dist/services/edgar/concept-series.js.map +1 -0
- package/dist/services/edgar/edgar-api-service.d.ts +8 -6
- package/dist/services/edgar/edgar-api-service.d.ts.map +1 -1
- package/dist/services/edgar/edgar-api-service.js +7 -3
- package/dist/services/edgar/edgar-api-service.js.map +1 -1
- package/dist/services/edgar/fiscal-periods.d.ts +37 -0
- package/dist/services/edgar/fiscal-periods.d.ts.map +1 -0
- package/dist/services/edgar/fiscal-periods.js +106 -0
- package/dist/services/edgar/fiscal-periods.js.map +1 -0
- package/dist/services/edgar/mirror/companyfacts-sync.d.ts +7 -10
- package/dist/services/edgar/mirror/companyfacts-sync.d.ts.map +1 -1
- package/dist/services/edgar/mirror/companyfacts-sync.js.map +1 -1
- package/dist/services/edgar/mirror/edgar-mirror.d.ts +10 -1
- package/dist/services/edgar/mirror/edgar-mirror.d.ts.map +1 -1
- package/dist/services/edgar/mirror/edgar-mirror.js +35 -1
- package/dist/services/edgar/mirror/edgar-mirror.js.map +1 -1
- package/dist/services/edgar/types.d.ts +20 -0
- package/dist/services/edgar/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
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
|
-
import {
|
|
9
|
+
import { resolveConceptTarget } from '../../../services/edgar/concept-map.js';
|
|
10
|
+
import { matchesPeriodType, resolveFrameSeries, } from '../../../services/edgar/concept-series.js';
|
|
10
11
|
import { getEdgarApiService } from '../../../services/edgar/edgar-api-service.js';
|
|
12
|
+
import { missingQuarterCaveats } from '../../../services/edgar/fiscal-periods.js';
|
|
11
13
|
export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
12
14
|
description: 'Get historical XBRL financial data for a company. Accepts friendly concept names (e.g., "revenue", "net_income", "assets") or raw XBRL tags. Discover available friendly names with secedgar_search_concepts. Handles historical tag changes and deduplicates data automatically.',
|
|
13
15
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
@@ -123,6 +125,10 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
123
125
|
})
|
|
124
126
|
.optional()
|
|
125
127
|
.describe('Canvas dataframe handle holding the same time series. Use for cross-company JOINs via secedgar_dataframe_query. The source-filing fiscal keys are materialized as source_filing_fy/source_filing_fp — order, group, and window by period_end, not by those columns. Absent when canvas is unavailable.'),
|
|
128
|
+
caveats: z
|
|
129
|
+
.array(z.string())
|
|
130
|
+
.optional()
|
|
131
|
+
.describe("Data-completeness warnings about the returned series. Populated on quarterly results when one calendar quarter is absent from every recent fully-reported year — SEC reports a filer's fiscal Q4 as the 10-K residual rather than a discrete quarterly fact, so the calendar quarter that fiscal Q4 spans has no frame-tagged value. Applies to calendar-year filers (no discrete Q4) as much as to off-calendar ones. Absent when the series has nothing to flag."),
|
|
126
132
|
}),
|
|
127
133
|
async handler(input, ctx) {
|
|
128
134
|
const api = getEdgarApiService();
|
|
@@ -157,22 +163,10 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
157
163
|
...ctx.recoveryFor('company_not_found'),
|
|
158
164
|
});
|
|
159
165
|
}
|
|
160
|
-
// Resolve concept to XBRL tag(s)
|
|
161
|
-
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
let taxonomy = input.taxonomy;
|
|
165
|
-
if (mapping && input.taxonomy === 'us-gaap') {
|
|
166
|
-
taxonomy = mapping.taxonomy;
|
|
167
|
-
}
|
|
168
|
-
// Use IFRS-specific tags when the effective taxonomy is ifrs-full and the mapping
|
|
169
|
-
// has confirmed IFRS variants; fall back to the standard tags otherwise.
|
|
170
|
-
const tags = mapping
|
|
171
|
-
? taxonomy === 'ifrs-full' && mapping.ifrsTags?.length
|
|
172
|
-
? mapping.ifrsTags
|
|
173
|
-
: mapping.tags
|
|
174
|
-
: [input.concept];
|
|
175
|
-
const label = mapping?.label ?? input.concept;
|
|
166
|
+
// Resolve concept to taxonomy + XBRL tag(s). The mapping's own taxonomy wins
|
|
167
|
+
// over the `us-gaap` default (e.g. `dei` for shares_outstanding); ifrs-full
|
|
168
|
+
// uses the confirmed IFRS variants when the mapping has them.
|
|
169
|
+
const { label, tags, taxonomy, unit: mappedUnit, } = resolveConceptTarget(input.concept, input.taxonomy);
|
|
176
170
|
// Default to "annual" for unset period_type; post-fetch fallback handles instant concepts (#48).
|
|
177
171
|
const effectivePeriodType = input.period_type ?? 'annual';
|
|
178
172
|
// Try each tag until we get data. `tryGetCompanyConcept` returns null for 404
|
|
@@ -184,7 +178,7 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
184
178
|
* resolve collisions by tag priority (#44). Index 0 = preferred total.
|
|
185
179
|
*/
|
|
186
180
|
const allUnits = [];
|
|
187
|
-
for (const [
|
|
181
|
+
for (const [tagIndex, tag] of tags.entries()) {
|
|
188
182
|
tagsTried.push(tag);
|
|
189
183
|
const resp = await api.tryGetCompanyConcept(match.cik, taxonomy, tag);
|
|
190
184
|
if (!resp)
|
|
@@ -199,7 +193,7 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
199
193
|
}
|
|
200
194
|
for (const units of Object.values(resp.units)) {
|
|
201
195
|
for (const u of units) {
|
|
202
|
-
allUnits.push({ ...u,
|
|
196
|
+
allUnits.push({ ...u, tagIndex });
|
|
203
197
|
}
|
|
204
198
|
}
|
|
205
199
|
}
|
|
@@ -239,50 +233,22 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
239
233
|
available_namespaces: availableNamespaces.length > 0 ? availableNamespaces : undefined,
|
|
240
234
|
});
|
|
241
235
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
236
|
+
/**
|
|
237
|
+
* Collapse to one value per standard calendar period — frame-bearing entries
|
|
238
|
+
* only, same-frame collisions resolved by tag priority then latest `filed`
|
|
239
|
+
* (#44). An empty map means the concept exists but has no frame-aligned entries.
|
|
240
|
+
*/
|
|
241
|
+
const byFrameClean = resolveFrameSeries(allUnits);
|
|
242
|
+
if (byFrameClean.size === 0) {
|
|
246
243
|
throw ctx.fail('no_frame_data', `'${conceptResponse.tag}' exists for this company but has no standard-period data.`, {
|
|
247
244
|
...ctx.recoveryFor('no_frame_data'),
|
|
248
245
|
tag: conceptResponse.tag,
|
|
249
246
|
});
|
|
250
247
|
}
|
|
251
|
-
/**
|
|
252
|
-
* Remove duplicates by frame value using tag-priority-aware selection (#44).
|
|
253
|
-
*
|
|
254
|
-
* When two facts share a frame, the one with the lower `_tagIdx` wins
|
|
255
|
-
* (index 0 = preferred total, e.g. IFRS `Revenue` > `RevenueFromContractsWithCustomers`).
|
|
256
|
-
* Ties within the same tag index are broken by latest `filed` to preserve
|
|
257
|
-
* restatement handling (amended filing replaces the original).
|
|
258
|
-
*/
|
|
259
|
-
const byFrame = new Map();
|
|
260
|
-
for (const unit of deduped) {
|
|
261
|
-
const existing = byFrame.get(unit.frame);
|
|
262
|
-
if (!existing) {
|
|
263
|
-
byFrame.set(unit.frame, unit);
|
|
264
|
-
}
|
|
265
|
-
else if (unit._tagIdx < existing._tagIdx ||
|
|
266
|
-
(unit._tagIdx === existing._tagIdx && unit.filed > existing.filed)) {
|
|
267
|
-
byFrame.set(unit.frame, unit);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
// Strip the internal _tagIdx from results before further use
|
|
271
|
-
const byFrameClean = new Map();
|
|
272
|
-
for (const [k, v] of byFrame) {
|
|
273
|
-
const { _tagIdx: _, ...rest } = v;
|
|
274
|
-
byFrameClean.set(k, rest);
|
|
275
|
-
}
|
|
276
248
|
// Filter by period type using frame pattern (fp reflects the filing, not the data point)
|
|
277
249
|
// resolvedPeriodType tracks the actual period type after the instant fallback (#48).
|
|
278
250
|
let resolvedPeriodType = effectivePeriodType;
|
|
279
|
-
let filtered = Array.from(byFrameClean.values());
|
|
280
|
-
if (effectivePeriodType === 'annual') {
|
|
281
|
-
filtered = filtered.filter((u) => /^CY\d{4}$/.test(u.frame));
|
|
282
|
-
}
|
|
283
|
-
else if (effectivePeriodType === 'quarterly') {
|
|
284
|
-
filtered = filtered.filter((u) => /^CY\d{4}Q\d/.test(u.frame));
|
|
285
|
-
}
|
|
251
|
+
let filtered = Array.from(byFrameClean.values()).filter((u) => matchesPeriodType(u.frame, effectivePeriodType));
|
|
286
252
|
// If period_type filter removed everything, check for instant-concept fallback (#48)
|
|
287
253
|
if (filtered.length === 0 && byFrameClean.size > 0) {
|
|
288
254
|
const sample = byFrameClean.values().next().value;
|
|
@@ -312,8 +278,18 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
312
278
|
}
|
|
313
279
|
// Sort newest first
|
|
314
280
|
filtered.sort((a, b) => b.end.localeCompare(a.end));
|
|
281
|
+
/**
|
|
282
|
+
* Off-calendar filers lose a whole calendar quarter from the frame-tagged
|
|
283
|
+
* series — SEC reports fiscal Q4 as the 10-K residual, never as a discrete
|
|
284
|
+
* quarterly fact — so a caller sees a gap with no way to tell "did not
|
|
285
|
+
* report" from "frame tagging does not expose it". `fetch_frames` already
|
|
286
|
+
* flags the same hazard from the period side; this names the specific
|
|
287
|
+
* quarter for this filer (#95). Detection reads the resolved frames, so it
|
|
288
|
+
* runs over the full deduped set rather than the period-filtered slice.
|
|
289
|
+
*/
|
|
290
|
+
const caveats = resolvedPeriodType === 'annual' ? [] : missingQuarterCaveats(byFrameClean.keys());
|
|
315
291
|
// Determine unit string
|
|
316
|
-
const unitKey = Object.keys(conceptResponse.units)[0] ??
|
|
292
|
+
const unitKey = Object.keys(conceptResponse.units)[0] ?? mappedUnit ?? 'USD';
|
|
317
293
|
const data = filtered.map((u) => ({
|
|
318
294
|
period: u.frame,
|
|
319
295
|
value: u.val,
|
|
@@ -383,6 +359,7 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
383
359
|
data: inlineData,
|
|
384
360
|
tags_tried: tagsTried.length > 1 ? tagsTried : undefined,
|
|
385
361
|
dataset,
|
|
362
|
+
caveats: caveats.length > 0 ? caveats : undefined,
|
|
386
363
|
};
|
|
387
364
|
},
|
|
388
365
|
format: (result) => {
|
|
@@ -415,6 +392,9 @@ export const getFinancialsTool = tool('secedgar_get_financials', {
|
|
|
415
392
|
: '';
|
|
416
393
|
lines.push(`\nDataset: ${result.dataset.name} (${result.dataset.row_count} rows, expires ${result.dataset.expires_at})${sliceNote} — query with secedgar_dataframe_query.`);
|
|
417
394
|
}
|
|
395
|
+
for (const caveat of result.caveats ?? []) {
|
|
396
|
+
lines.push(`\nCaveat: ${caveat}`);
|
|
397
|
+
}
|
|
418
398
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
419
399
|
},
|
|
420
400
|
});
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview One-call financial profile for a company. Reads the filer's
|
|
3
|
+
* whole XBRL fact set once and resolves every mapped friendly concept against
|
|
4
|
+
* it, instead of one upstream request per concept. Values come from the same
|
|
5
|
+
* frame dedup and tag priority `secedgar_get_financials` uses, so the two agree
|
|
6
|
+
* for any concept they both report.
|
|
7
|
+
* @module mcp-server/tools/definitions/get-snapshot
|
|
8
|
+
*/
|
|
9
|
+
import { z } from '@cyanheads/mcp-ts-core';
|
|
10
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
11
|
+
export declare const getSnapshotTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
12
|
+
company: z.ZodString;
|
|
13
|
+
taxonomy: z.ZodDefault<z.ZodEnum<{
|
|
14
|
+
"ifrs-full": "ifrs-full";
|
|
15
|
+
"us-gaap": "us-gaap";
|
|
16
|
+
}>>;
|
|
17
|
+
period_type: z.ZodDefault<z.ZodEnum<{
|
|
18
|
+
annual: "annual";
|
|
19
|
+
both: "both";
|
|
20
|
+
quarterly: "quarterly";
|
|
21
|
+
}>>;
|
|
22
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
23
|
+
company: z.ZodString;
|
|
24
|
+
cik: z.ZodString;
|
|
25
|
+
taxonomy: z.ZodString;
|
|
26
|
+
period_type: z.ZodString;
|
|
27
|
+
concepts_resolved: z.ZodNumber;
|
|
28
|
+
concepts_total: z.ZodNumber;
|
|
29
|
+
lines: z.ZodArray<z.ZodObject<{
|
|
30
|
+
concept: z.ZodString;
|
|
31
|
+
label: z.ZodString;
|
|
32
|
+
group: z.ZodString;
|
|
33
|
+
taxonomy: z.ZodString;
|
|
34
|
+
tag: z.ZodString;
|
|
35
|
+
unit: z.ZodString;
|
|
36
|
+
annual: z.ZodOptional<z.ZodObject<{
|
|
37
|
+
period: z.ZodString;
|
|
38
|
+
value: z.ZodNumber;
|
|
39
|
+
period_end: z.ZodString;
|
|
40
|
+
form: z.ZodString;
|
|
41
|
+
accession_number: z.ZodString;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
quarterly: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
period: z.ZodString;
|
|
45
|
+
value: z.ZodNumber;
|
|
46
|
+
period_end: z.ZodString;
|
|
47
|
+
form: z.ZodString;
|
|
48
|
+
accession_number: z.ZodString;
|
|
49
|
+
}, z.core.$strip>>;
|
|
50
|
+
instant: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
period: z.ZodString;
|
|
52
|
+
value: z.ZodNumber;
|
|
53
|
+
period_end: z.ZodString;
|
|
54
|
+
form: z.ZodString;
|
|
55
|
+
accession_number: z.ZodString;
|
|
56
|
+
}, z.core.$strip>>;
|
|
57
|
+
}, z.core.$strip>>;
|
|
58
|
+
gaps: z.ZodArray<z.ZodObject<{
|
|
59
|
+
concept: z.ZodString;
|
|
60
|
+
label: z.ZodString;
|
|
61
|
+
group: z.ZodString;
|
|
62
|
+
tags_tried: z.ZodArray<z.ZodString>;
|
|
63
|
+
}, z.core.$strip>>;
|
|
64
|
+
caveats: z.ZodArray<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>, readonly [{
|
|
66
|
+
readonly reason: "company_not_found";
|
|
67
|
+
readonly code: JsonRpcErrorCode.NotFound;
|
|
68
|
+
readonly when: "The company input does not resolve to a CIK";
|
|
69
|
+
readonly recovery: "Use a ticker symbol or 10-digit CIK number for an exact match.";
|
|
70
|
+
}, {
|
|
71
|
+
readonly reason: "ambiguous_company";
|
|
72
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
73
|
+
readonly when: "The company input resolves to multiple entities and the target is ambiguous";
|
|
74
|
+
readonly recovery: "Use a ticker symbol or 10-digit CIK from the matches list for an exact match.";
|
|
75
|
+
}, {
|
|
76
|
+
readonly reason: "no_company_facts";
|
|
77
|
+
readonly code: JsonRpcErrorCode.NotFound;
|
|
78
|
+
readonly when: "The filer has no XBRL facts at all — pre-XBRL, foreign private issuer, or a non-operating registrant";
|
|
79
|
+
readonly recovery: "Check the filer files XBRL financial statements, or read the filings directly with secedgar_search_filings.";
|
|
80
|
+
}], undefined>;
|
|
81
|
+
//# sourceMappingURL=get-snapshot.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-snapshot.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-snapshot.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAwCjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuQ1B,CAAC"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview One-call financial profile for a company. Reads the filer's
|
|
3
|
+
* whole XBRL fact set once and resolves every mapped friendly concept against
|
|
4
|
+
* it, instead of one upstream request per concept. Values come from the same
|
|
5
|
+
* frame dedup and tag priority `secedgar_get_financials` uses, so the two agree
|
|
6
|
+
* for any concept they both report.
|
|
7
|
+
* @module mcp-server/tools/definitions/get-snapshot
|
|
8
|
+
*/
|
|
9
|
+
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
10
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
11
|
+
import { listConcepts, resolveConceptTarget } from '../../../services/edgar/concept-map.js';
|
|
12
|
+
import { seriesFromCompanyFacts } from '../../../services/edgar/concept-series.js';
|
|
13
|
+
import { getEdgarApiService } from '../../../services/edgar/edgar-api-service.js';
|
|
14
|
+
import { missingQuarterCaveats } from '../../../services/edgar/fiscal-periods.js';
|
|
15
|
+
/** Full-year duration frame — `CY2024`. */
|
|
16
|
+
const ANNUAL = /^CY\d{4}$/;
|
|
17
|
+
/** Single-quarter duration frame — `CY2024Q2`. Excludes instants. */
|
|
18
|
+
const QUARTER = /^CY\d{4}Q[1-4]$/;
|
|
19
|
+
/** Point-in-time frame — `CY2024Q2I`. Balance-sheet and entity-info concepts. */
|
|
20
|
+
const INSTANT = /^CY\d{4}Q[1-4]I$/;
|
|
21
|
+
/** One reported value, trimmed to what a profile line needs. */
|
|
22
|
+
const pointSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
period: z.string().describe('Calendar period label (e.g. "CY2024", "CY2025Q2", "CY2025Q2I").'),
|
|
25
|
+
value: z.number().describe("Reported value, in the line's unit."),
|
|
26
|
+
period_end: z.string().describe('Period end date (YYYY-MM-DD).'),
|
|
27
|
+
form: z.string().describe('Source filing type (10-K, 10-Q, 20-F).'),
|
|
28
|
+
accession_number: z
|
|
29
|
+
.string()
|
|
30
|
+
.describe('Source filing accession number — pass to secedgar_get_filing.'),
|
|
31
|
+
})
|
|
32
|
+
.describe('One reported value with its period and source filing.');
|
|
33
|
+
/** Most recent value whose frame matches `pattern`, or undefined when none does. */
|
|
34
|
+
function latest(series, pattern) {
|
|
35
|
+
const hit = series.find((u) => pattern.test(u.frame));
|
|
36
|
+
return hit
|
|
37
|
+
? {
|
|
38
|
+
period: hit.frame,
|
|
39
|
+
value: hit.val,
|
|
40
|
+
period_end: hit.end,
|
|
41
|
+
form: hit.form,
|
|
42
|
+
accession_number: hit.accn,
|
|
43
|
+
}
|
|
44
|
+
: undefined;
|
|
45
|
+
}
|
|
46
|
+
export const getSnapshotTool = tool('secedgar_get_snapshot', {
|
|
47
|
+
description: 'Build a company financial profile in one call: the latest value of every supported XBRL concept, grouped by statement. Reads the filer\'s complete companyfacts payload once rather than one request per concept, so it replaces a run of secedgar_get_financials calls when the question is "what do this company\'s financials look like right now". Values use the same frame dedup and tag priority as secedgar_get_financials, so the two agree for any concept they both cover. Duration concepts (income statement, cash flow, per-share) report their latest full year and latest single quarter; balance-sheet and entity-info concepts report their latest point-in-time value, since that is the only form they are filed in. A concept the filer does not report is listed under gaps with the XBRL tags that were tried — never zero-filled or interpolated. Use secedgar_get_financials for a full time series of one concept, and secedgar_compare_companies to put several companies side by side.',
|
|
48
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
49
|
+
errors: [
|
|
50
|
+
{
|
|
51
|
+
reason: 'company_not_found',
|
|
52
|
+
code: JsonRpcErrorCode.NotFound,
|
|
53
|
+
when: 'The company input does not resolve to a CIK',
|
|
54
|
+
recovery: 'Use a ticker symbol or 10-digit CIK number for an exact match.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
reason: 'ambiguous_company',
|
|
58
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
59
|
+
when: 'The company input resolves to multiple entities and the target is ambiguous',
|
|
60
|
+
recovery: 'Use a ticker symbol or 10-digit CIK from the matches list for an exact match.',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
reason: 'no_company_facts',
|
|
64
|
+
code: JsonRpcErrorCode.NotFound,
|
|
65
|
+
when: 'The filer has no XBRL facts at all — pre-XBRL, foreign private issuer, or a non-operating registrant',
|
|
66
|
+
recovery: 'Check the filer files XBRL financial statements, or read the filings directly with secedgar_search_filings.',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
input: z.object({
|
|
70
|
+
company: z
|
|
71
|
+
.string()
|
|
72
|
+
.min(1)
|
|
73
|
+
.describe('Ticker symbol (e.g. "AAPL") or CIK number. Ticker is preferred.'),
|
|
74
|
+
taxonomy: z
|
|
75
|
+
.enum(['us-gaap', 'ifrs-full'])
|
|
76
|
+
.default('us-gaap')
|
|
77
|
+
.describe('XBRL taxonomy to resolve concepts under. Every concept is looked up in this one taxonomy, so ifrs-full covers only the concepts with confirmed IFRS tag variants and the rest — including the dei entity-info concepts — come back under gaps. Leave at us-gaap for domestic filers, where each concept uses its own preferred taxonomy.'),
|
|
78
|
+
period_type: z
|
|
79
|
+
.enum(['annual', 'quarterly', 'both'])
|
|
80
|
+
.default('both')
|
|
81
|
+
.describe('Which duration periods to report per concept: the latest full year, the latest single quarter, or both (default). Balance-sheet and entity-info concepts are point-in-time and always report their latest instant value regardless of this setting.'),
|
|
82
|
+
}),
|
|
83
|
+
output: z.object({
|
|
84
|
+
company: z.string().describe('Resolved entity name (SEC-conformed).'),
|
|
85
|
+
cik: z.string().describe('Resolved CIK, zero-padded to 10 digits.'),
|
|
86
|
+
taxonomy: z.string().describe('Taxonomy the concepts were resolved under, echoed from input.'),
|
|
87
|
+
period_type: z.string().describe('Duration periods reported, echoed from input.'),
|
|
88
|
+
concepts_resolved: z.number().describe('Concepts that produced at least one value.'),
|
|
89
|
+
concepts_total: z.number().describe('Concepts in the supported catalog that were attempted.'),
|
|
90
|
+
lines: z
|
|
91
|
+
.array(z
|
|
92
|
+
.object({
|
|
93
|
+
concept: z.string().describe('Friendly concept name (e.g. "revenue").'),
|
|
94
|
+
label: z.string().describe('Human-readable concept label.'),
|
|
95
|
+
group: z
|
|
96
|
+
.string()
|
|
97
|
+
.describe('Statement group: income_statement, balance_sheet, cash_flow, per_share, or entity_info.'),
|
|
98
|
+
taxonomy: z.string().describe('Taxonomy the value was read from.'),
|
|
99
|
+
tag: z.string().describe('XBRL tag that produced the value.'),
|
|
100
|
+
unit: z.string().describe('Unit of measure (e.g. "USD", "USD/shares", "shares").'),
|
|
101
|
+
annual: pointSchema
|
|
102
|
+
.optional()
|
|
103
|
+
.describe('Latest full-year (CY####) value. Absent for point-in-time concepts and when period_type excludes it.'),
|
|
104
|
+
quarterly: pointSchema
|
|
105
|
+
.optional()
|
|
106
|
+
.describe('Latest single-quarter (CY####Q#) value. Absent for point-in-time concepts and when period_type excludes it.'),
|
|
107
|
+
instant: pointSchema
|
|
108
|
+
.optional()
|
|
109
|
+
.describe('Latest point-in-time (CY####Q#I) value. Present for balance-sheet and entity-info concepts.'),
|
|
110
|
+
})
|
|
111
|
+
.describe('One resolved concept with its latest value per period kind.'))
|
|
112
|
+
.describe('Resolved concepts, ordered by statement group then concept name.'),
|
|
113
|
+
gaps: z
|
|
114
|
+
.array(z
|
|
115
|
+
.object({
|
|
116
|
+
concept: z.string().describe('Friendly concept name that produced no value.'),
|
|
117
|
+
label: z.string().describe('Human-readable concept label.'),
|
|
118
|
+
group: z.string().describe('Statement group the concept belongs to.'),
|
|
119
|
+
tags_tried: z
|
|
120
|
+
.array(z.string())
|
|
121
|
+
.describe('XBRL tags attempted, in priority order, before giving up.'),
|
|
122
|
+
})
|
|
123
|
+
.describe('One concept the filer does not report, with the tags that were tried.'))
|
|
124
|
+
.describe('Concepts with no value for this filer. Deliberately explicit — a missing concept is never zero-filled or interpolated.'),
|
|
125
|
+
caveats: z
|
|
126
|
+
.array(z.string())
|
|
127
|
+
.describe("Data-completeness warnings about the quarterly values. Populated when one calendar quarter is absent from every recent fully-reported year, because SEC reports a filer's fiscal Q4 as the 10-K residual rather than a discrete quarterly fact — this applies to calendar-year filers (no discrete Q4) as much as to off-calendar ones. Empty when nothing needs flagging."),
|
|
128
|
+
}),
|
|
129
|
+
async handler(input, ctx) {
|
|
130
|
+
const api = getEdgarApiService();
|
|
131
|
+
const resolved = await api.resolveCik(input.company);
|
|
132
|
+
if (Array.isArray(resolved) && resolved.length === 0) {
|
|
133
|
+
throw ctx.fail('company_not_found', `Company '${input.company}' not found.`, {
|
|
134
|
+
...ctx.recoveryFor('company_not_found'),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (Array.isArray(resolved) && resolved.length > 1) {
|
|
138
|
+
const shown = resolved.slice(0, 10);
|
|
139
|
+
const list = shown
|
|
140
|
+
.map((m) => `${m.cik} ${m.name ?? 'Unknown'}${m.ticker ? ` (${m.ticker})` : ''}`)
|
|
141
|
+
.join(', ');
|
|
142
|
+
throw ctx.fail('ambiguous_company', `'${input.company}' matches multiple companies: ${list}. Retry with one of these tickers or 10-digit CIKs.`, {
|
|
143
|
+
...ctx.recoveryFor('ambiguous_company'),
|
|
144
|
+
matches: shown.map((m) => ({ cik: m.cik, name: m.name, ticker: m.ticker })),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const match = Array.isArray(resolved) ? resolved[0] : resolved;
|
|
148
|
+
if (!match) {
|
|
149
|
+
throw ctx.fail('company_not_found', `Company '${input.company}' not found.`, {
|
|
150
|
+
...ctx.recoveryFor('company_not_found'),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const facts = await api.tryGetCompanyFacts(match.cik);
|
|
154
|
+
if (!facts || Object.keys(facts.facts).length === 0) {
|
|
155
|
+
throw ctx.fail('no_company_facts', `No XBRL facts on file for CIK ${match.cik}.`, {
|
|
156
|
+
...ctx.recoveryFor('no_company_facts'),
|
|
157
|
+
cik: match.cik,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const wantAnnual = input.period_type !== 'quarterly';
|
|
161
|
+
const wantQuarterly = input.period_type !== 'annual';
|
|
162
|
+
const lines = [];
|
|
163
|
+
const gaps = [];
|
|
164
|
+
const quarterFrames = [];
|
|
165
|
+
for (const entry of listConcepts()) {
|
|
166
|
+
const target = resolveConceptTarget(entry.name, input.taxonomy);
|
|
167
|
+
const series = seriesFromCompanyFacts(facts, target.taxonomy, target.tags);
|
|
168
|
+
if (!series) {
|
|
169
|
+
gaps.push({
|
|
170
|
+
concept: entry.name,
|
|
171
|
+
label: target.label,
|
|
172
|
+
group: entry.group,
|
|
173
|
+
tags_tried: target.tags,
|
|
174
|
+
});
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const annual = wantAnnual ? latest(series.series, ANNUAL) : undefined;
|
|
178
|
+
const quarterly = wantQuarterly ? latest(series.series, QUARTER) : undefined;
|
|
179
|
+
const instant = latest(series.series, INSTANT);
|
|
180
|
+
if (!annual && !quarterly && !instant) {
|
|
181
|
+
gaps.push({
|
|
182
|
+
concept: entry.name,
|
|
183
|
+
label: target.label,
|
|
184
|
+
group: entry.group,
|
|
185
|
+
tags_tried: series.tagsTried,
|
|
186
|
+
});
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
for (const unit of series.series) {
|
|
190
|
+
if (QUARTER.test(unit.frame))
|
|
191
|
+
quarterFrames.push(unit.frame);
|
|
192
|
+
}
|
|
193
|
+
lines.push({
|
|
194
|
+
concept: entry.name,
|
|
195
|
+
label: series.label || target.label,
|
|
196
|
+
group: entry.group,
|
|
197
|
+
taxonomy: series.taxonomy,
|
|
198
|
+
tag: series.tag,
|
|
199
|
+
unit: series.unit || target.unit || '',
|
|
200
|
+
...(annual ? { annual } : {}),
|
|
201
|
+
...(quarterly ? { quarterly } : {}),
|
|
202
|
+
...(instant ? { instant } : {}),
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
const caveats = wantQuarterly ? missingQuarterCaveats(quarterFrames) : [];
|
|
206
|
+
ctx.log.info('Snapshot built', {
|
|
207
|
+
company: match.cik,
|
|
208
|
+
resolved: lines.length,
|
|
209
|
+
gaps: gaps.length,
|
|
210
|
+
});
|
|
211
|
+
return {
|
|
212
|
+
company: match.name || input.company,
|
|
213
|
+
cik: match.cik,
|
|
214
|
+
taxonomy: input.taxonomy,
|
|
215
|
+
period_type: input.period_type,
|
|
216
|
+
concepts_resolved: lines.length,
|
|
217
|
+
concepts_total: lines.length + gaps.length,
|
|
218
|
+
lines,
|
|
219
|
+
gaps,
|
|
220
|
+
caveats,
|
|
221
|
+
};
|
|
222
|
+
},
|
|
223
|
+
format: (result) => {
|
|
224
|
+
const out = [
|
|
225
|
+
`**Financial snapshot** — ${result.company} (CIK ${result.cik}, ${result.taxonomy}, periods: ${result.period_type})`,
|
|
226
|
+
`${result.concepts_resolved} of ${result.concepts_total} concepts resolved`,
|
|
227
|
+
];
|
|
228
|
+
const point = (kind, p) => ` ${kind} ${p.period} = ${p.value} | ends ${p.period_end} | ${p.form} [${p.accession_number}]`;
|
|
229
|
+
let group = '';
|
|
230
|
+
for (const line of result.lines) {
|
|
231
|
+
if (line.group !== group) {
|
|
232
|
+
group = line.group;
|
|
233
|
+
out.push('', `### ${group}`);
|
|
234
|
+
}
|
|
235
|
+
out.push(`- ${line.label} [${line.concept} → ${line.taxonomy}:${line.tag}, ${line.unit}]`);
|
|
236
|
+
if (line.annual)
|
|
237
|
+
out.push(point('annual', line.annual));
|
|
238
|
+
if (line.quarterly)
|
|
239
|
+
out.push(point('quarterly', line.quarterly));
|
|
240
|
+
if (line.instant)
|
|
241
|
+
out.push(point('instant', line.instant));
|
|
242
|
+
}
|
|
243
|
+
if (result.gaps.length > 0) {
|
|
244
|
+
out.push('', `### Not reported (${result.gaps.length})`);
|
|
245
|
+
for (const gap of result.gaps) {
|
|
246
|
+
out.push(`- ${gap.label} [${gap.concept}, ${gap.group}] — tried: ${gap.tags_tried.join(', ')}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
for (const caveat of result.caveats)
|
|
250
|
+
out.push('', `Caveat: ${caveat}`);
|
|
251
|
+
return [{ type: 'text', text: out.join('\n') }];
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
//# sourceMappingURL=get-snapshot.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-snapshot.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-snapshot.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,32 @@
|
|
|
2
2
|
* @fileoverview Static mapping of friendly financial concept names to XBRL tags.
|
|
3
3
|
* @module services/edgar/concept-map
|
|
4
4
|
*/
|
|
5
|
-
import type { ConceptMapping } from './types.js';
|
|
5
|
+
import type { ConceptMapping, ConceptTaxonomy } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Resolve a concept input to its mapping. Accepts friendly names or raw XBRL tags.
|
|
8
8
|
* Returns undefined if the input is not a known friendly name (caller should treat it as a raw tag).
|
|
9
9
|
*/
|
|
10
10
|
export declare function resolveConcept(input: string): ConceptMapping | undefined;
|
|
11
|
+
/** What a caller-supplied concept resolves to before any lookup runs. */
|
|
12
|
+
export interface ConceptTarget {
|
|
13
|
+
/** Human-readable label — the mapping's label, or the raw tag itself. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Tags to try in priority order. Index 0 is the preferred total. */
|
|
16
|
+
tags: string[];
|
|
17
|
+
/** Taxonomy to look the tags up under. */
|
|
18
|
+
taxonomy: ConceptTaxonomy;
|
|
19
|
+
/** Expected unit of measure. Absent for raw XBRL tags. */
|
|
20
|
+
unit?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a concept input plus a requested taxonomy into the taxonomy and tag
|
|
24
|
+
* list to query. A friendly name that prefers its own taxonomy (`dei` for
|
|
25
|
+
* shares_outstanding) keeps it unless the caller asked for something other than
|
|
26
|
+
* the `us-gaap` default; `ifrs-full` uses the mapping's confirmed IFRS variants
|
|
27
|
+
* when it has them and falls back to the standard tags otherwise. Unknown input
|
|
28
|
+
* passes through as a raw XBRL tag under the requested taxonomy.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveConceptTarget(input: string, requestedTaxonomy: ConceptTaxonomy): ConceptTarget;
|
|
11
31
|
/** Get all concept mappings for reference resource generation. */
|
|
12
32
|
export declare function getAllConcepts(): Record<string, ConceptMapping>;
|
|
13
33
|
/** Entry returned by search/list operations — friendly name paired with its mapping. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concept-map.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/concept-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"concept-map.d.ts","sourceRoot":"","sources":["../../../src/services/edgar/concept-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8SlE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGxE;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,eAAe,CAAC;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,eAAe,GACjC,aAAa,CAQf;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAE/D;AAED,wFAAwF;AACxF,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAI7C;AAUD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAqB/E"}
|