@causari/mcp-server 0.1.1 → 0.1.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.js","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MCP tool definitions for Causari.
3
+ *
4
+ * Each tool wraps a CKG query function and shapes the result for LLM consumption.
5
+ * Output shape priorities:
6
+ * 1. Token-efficient — drop redundant fields
7
+ * 2. Self-explanatory — include relationship + evidence so LLM doesn't need to re-query
8
+ * 3. Calibrated — surface confidence + sources so LLM can communicate uncertainty
9
+ */
10
+ import { CKGStore } from '@causari/ckg';
11
+ export interface ToolDef {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: 'object';
16
+ properties: Record<string, unknown>;
17
+ required?: string[];
18
+ };
19
+ handler: (args: Record<string, unknown>, store: CKGStore) => unknown;
20
+ }
21
+ export declare const queryEventsT: ToolDef;
22
+ export declare const causalChainT: ToolDef;
23
+ export declare const historicalResonanceT: ToolDef;
24
+ export declare const orgKnowledgeT: ToolDef;
25
+ export declare const predictScenariosT: ToolDef;
26
+ export declare const ALL_TOOLS: ToolDef[];
27
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,QAAQ,EAQT,MAAM,cAAc,CAAC;AAWtB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CACtE;AAwBD,eAAO,MAAM,YAAY,EAAE,OA4D1B,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,OA6F1B,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,OA0ClC,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,OAyB3B,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,OAqD/B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,OAAO,EAM9B,CAAC"}
package/dist/tools.js ADDED
@@ -0,0 +1,306 @@
1
+ /**
2
+ * MCP tool definitions for Causari.
3
+ *
4
+ * Each tool wraps a CKG query function and shapes the result for LLM consumption.
5
+ * Output shape priorities:
6
+ * 1. Token-efficient — drop redundant fields
7
+ * 2. Self-explanatory — include relationship + evidence so LLM doesn't need to re-query
8
+ * 3. Calibrated — surface confidence + sources so LLM can communicate uncertainty
9
+ */
10
+ import { queryEvents, causalChain, historicalResonance, orgKnowledge, predictScenarios, } from '@causari/ckg';
11
+ import { ValidationError, requireString, optionalString, optionalNumber, optionalDomains, requireStringArray, optionalEnum, } from './validate.js';
12
+ const yearRangeSchema = {
13
+ yearFrom: {
14
+ type: 'number',
15
+ description: 'Inclusive start year. Negative = BCE. Example: -3500 for 3500 BCE, 1900 for 1900 CE.',
16
+ },
17
+ yearTo: {
18
+ type: 'number',
19
+ description: 'Inclusive end year. Negative = BCE.',
20
+ },
21
+ };
22
+ const domainsSchema = {
23
+ type: 'array',
24
+ items: {
25
+ type: 'string',
26
+ enum: ['technology', 'humanities', 'systems', 'science', 'economy', 'geopolitics', 'philosophy', 'environment', 'culture', 'health', 'other'],
27
+ },
28
+ description: 'Filter to events in these knowledge domains.',
29
+ };
30
+ // ── Tool 1: query_events ────────────────────────────────────────────────
31
+ export const queryEventsT = {
32
+ name: 'query_events',
33
+ description: 'Search the Causari causal knowledge graph for historical events matching given criteria. ' +
34
+ 'Returns structured event records with title, description, year, domains, impact score, and tags. ' +
35
+ 'Use this when you need historical context for a topic, time period, or domain.',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ ...yearRangeSchema,
40
+ domains: domainsSchema,
41
+ minImpact: {
42
+ type: 'number',
43
+ minimum: 0,
44
+ maximum: 1,
45
+ description: 'Filter to events with impact score >= this. Use 0.7+ for major events only.',
46
+ },
47
+ query: {
48
+ type: 'string',
49
+ description: 'Free-text search across title, description, and tags. Case-insensitive.',
50
+ },
51
+ limit: { type: 'number', description: 'Max events to return. Default 20.', default: 20 },
52
+ },
53
+ },
54
+ handler: (args, store) => {
55
+ const yearFrom = optionalNumber(args.yearFrom, 'yearFrom', { integer: true });
56
+ const yearTo = optionalNumber(args.yearTo, 'yearTo', { integer: true });
57
+ if (yearFrom !== undefined && yearTo !== undefined && yearFrom > yearTo) {
58
+ throw new ValidationError(`"yearFrom" (${yearFrom}) must be <= "yearTo" (${yearTo}).`);
59
+ }
60
+ const result = queryEvents(store, {
61
+ yearFrom,
62
+ yearTo,
63
+ domains: optionalDomains(args.domains),
64
+ minImpact: optionalNumber(args.minImpact, 'minImpact', { min: 0, max: 1 }),
65
+ query: optionalString(args.query, 'query'),
66
+ limit: optionalNumber(args.limit, 'limit', { min: 1, max: 200, integer: true }),
67
+ });
68
+ return {
69
+ events: result.events.map((e) => ({
70
+ id: e.id,
71
+ title: e.title,
72
+ year: e.yearLabel,
73
+ yearNum: e.yearNum,
74
+ description: e.description,
75
+ domains: e.domains,
76
+ impactScore: e.impactScore,
77
+ tags: e.tags,
78
+ ...(e.forecastConfidence !== undefined && {
79
+ forecast: { confidence: e.forecastConfidence, reasoning: e.forecastReasoning },
80
+ }),
81
+ })),
82
+ totalMatched: result.totalMatched,
83
+ truncated: result.truncated,
84
+ ...(result.truncated && {
85
+ hint: `${result.totalMatched} events matched but only ${result.events.length} returned. Use minImpact or domains to narrow.`,
86
+ }),
87
+ };
88
+ },
89
+ };
90
+ // ── Tool 2: causal_chain ─────────────────────────────────────────────────
91
+ export const causalChainT = {
92
+ name: 'causal_chain',
93
+ description: 'Trace cause-effect chains from a historical event. Returns structured causal graph showing what led to the event (causes) and/or what it enabled (effects), with evidence and confidence scores. ' +
94
+ 'This is the most powerful Causari tool for understanding WHY something happened or what consequences flow from a development. ' +
95
+ "Example: causal_chain('printing press', direction='effects', depth=2) returns the cascade from Gutenberg through Renaissance to Industrial Revolution.",
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ event: {
100
+ type: 'string',
101
+ description: 'Event ID (e.g. "printing", "internet") or title substring (e.g. "industrial").',
102
+ },
103
+ direction: {
104
+ type: 'string',
105
+ enum: ['causes', 'effects', 'both'],
106
+ description: 'causes = what led to this event. effects = what flowed from it. both = full chain.',
107
+ default: 'both',
108
+ },
109
+ depth: {
110
+ type: 'number',
111
+ minimum: 1,
112
+ maximum: 5,
113
+ description: 'Hops to traverse from the root event. Default 2.',
114
+ default: 2,
115
+ },
116
+ minConfidence: {
117
+ type: 'number',
118
+ minimum: 0,
119
+ maximum: 1,
120
+ description: 'Filter out causal links below this confidence. Default 0 (include all).',
121
+ },
122
+ },
123
+ required: ['event'],
124
+ },
125
+ handler: (args, store) => {
126
+ const result = causalChain(store, {
127
+ event: requireString(args.event, 'event'),
128
+ direction: optionalEnum(args.direction, 'direction', ['causes', 'effects', 'both']),
129
+ depth: optionalNumber(args.depth, 'depth', { min: 1, max: 5, integer: true }),
130
+ minConfidence: optionalNumber(args.minConfidence, 'minConfidence', { min: 0, max: 1 }),
131
+ });
132
+ if ('notFound' in result && result.notFound) {
133
+ return {
134
+ error: `No event found matching "${result.notFound}". Try query_events first to find the right ID.`,
135
+ };
136
+ }
137
+ const r = result;
138
+ return {
139
+ root: {
140
+ id: r.root.id,
141
+ title: r.root.title,
142
+ year: r.root.yearLabel,
143
+ description: r.root.description,
144
+ },
145
+ causes: r.nodes
146
+ .filter((n) => n.direction === 'cause')
147
+ .map((n) => ({
148
+ id: n.event.id,
149
+ title: n.event.title,
150
+ year: n.event.yearLabel,
151
+ hop: n.hop,
152
+ relationship: n.via?.relationship,
153
+ confidence: n.via?.confidence,
154
+ evidence: n.via?.evidence,
155
+ })),
156
+ effects: r.nodes
157
+ .filter((n) => n.direction === 'effect')
158
+ .map((n) => ({
159
+ id: n.event.id,
160
+ title: n.event.title,
161
+ year: n.event.yearLabel,
162
+ hop: n.hop,
163
+ relationship: n.via?.relationship,
164
+ confidence: n.via?.confidence,
165
+ evidence: n.via?.evidence,
166
+ })),
167
+ relatedPatterns: r.relatedInsights.map((i) => ({
168
+ pattern: i.pattern,
169
+ description: i.description,
170
+ predictiveValue: i.predictiveValue,
171
+ })),
172
+ meta: {
173
+ totalNodes: r.nodes.length,
174
+ totalLinks: r.links.length,
175
+ },
176
+ };
177
+ },
178
+ };
179
+ // ── Tool 3: historical_resonance ─────────────────────────────────────────
180
+ export const historicalResonanceT = {
181
+ name: 'historical_resonance',
182
+ description: 'Find historical patterns similar to a current situation. Useful for understanding contemporary events through historical parallels — e.g., "rapid AI adoption displacing knowledge workers" might resonate with the printing press disrupting clergy. ' +
183
+ 'Returns matched patterns with exemplar historical events and predictive value scores.',
184
+ inputSchema: {
185
+ type: 'object',
186
+ properties: {
187
+ situation: {
188
+ type: 'string',
189
+ description: 'Free-text description of the current situation, technology shift, or social pattern you want to find historical parallels for.',
190
+ },
191
+ domains: domainsSchema,
192
+ maxResults: { type: 'number', default: 3 },
193
+ },
194
+ required: ['situation'],
195
+ },
196
+ handler: (args, store) => {
197
+ const result = historicalResonance(store, {
198
+ situation: requireString(args.situation, 'situation'),
199
+ domains: optionalDomains(args.domains),
200
+ maxResults: optionalNumber(args.maxResults, 'maxResults', { min: 1, max: 20, integer: true }),
201
+ });
202
+ return {
203
+ matches: result.matches.map((m) => ({
204
+ pattern: m.insight.pattern,
205
+ description: m.insight.description,
206
+ matchScore: Number(m.matchScore.toFixed(2)),
207
+ predictiveValue: m.insight.predictiveValue,
208
+ reasoning: m.reasoning,
209
+ exemplars: m.exemplarEvents.map((e) => ({
210
+ title: e.title,
211
+ year: e.yearLabel,
212
+ why: e.description.slice(0, 160),
213
+ })),
214
+ })),
215
+ ...(result.matches.length === 0 && {
216
+ hint: 'No strong matches. Try adding more keywords or removing domain filters.',
217
+ }),
218
+ };
219
+ },
220
+ };
221
+ // ── Tool 4: org_knowledge (Enterprise stub) ──────────────────────────────
222
+ export const orgKnowledgeT = {
223
+ name: 'org_knowledge',
224
+ description: "[Enterprise tier] Query the organization's internal causal knowledge graph — decisions, events, technical milestones, and their consequences. " +
225
+ 'Returns events scoped to the org and the causal context linking them. ' +
226
+ 'Note: requires enterprise tier API key with org scope; returns empty result + message if no org graph configured.',
227
+ inputSchema: {
228
+ type: 'object',
229
+ properties: {
230
+ query: { type: 'string', description: 'Free-text query for org-internal events.' },
231
+ orgId: { type: 'string', description: 'Organization identifier (provisioned by enterprise admin).' },
232
+ team: { type: 'string', description: 'Optional team/department filter.' },
233
+ ...yearRangeSchema,
234
+ },
235
+ required: ['query', 'orgId'],
236
+ },
237
+ handler: (args, store) => {
238
+ return orgKnowledge(store, {
239
+ query: requireString(args.query, 'query'),
240
+ orgId: requireString(args.orgId, 'orgId'),
241
+ team: optionalString(args.team, 'team'),
242
+ yearFrom: optionalNumber(args.yearFrom, 'yearFrom', { integer: true }),
243
+ yearTo: optionalNumber(args.yearTo, 'yearTo', { integer: true }),
244
+ });
245
+ },
246
+ };
247
+ // ── Tool 5: predict_scenarios ────────────────────────────────────────────
248
+ export const predictScenariosT = {
249
+ name: 'predict_scenarios',
250
+ description: 'Generate plausible future scenarios based on historical causal patterns and current conditions. ' +
251
+ 'Returns multiple scenario branches (optimistic / cautious / discontinuous) with probability estimates, reasoning, and historical basis. ' +
252
+ 'Useful for strategic planning, risk assessment, and stress-testing assumptions.',
253
+ inputSchema: {
254
+ type: 'object',
255
+ properties: {
256
+ conditions: {
257
+ type: 'array',
258
+ items: { type: 'string' },
259
+ description: 'List of current conditions or trends. e.g., ["AI capability accelerating", "open-source LLMs improving"].',
260
+ },
261
+ horizon: {
262
+ type: 'number',
263
+ description: 'Year horizon for scenarios. Default 2040.',
264
+ default: 2040,
265
+ },
266
+ domains: domainsSchema,
267
+ maxScenarios: { type: 'number', default: 3 },
268
+ },
269
+ required: ['conditions'],
270
+ },
271
+ handler: (args, store) => {
272
+ const result = predictScenarios(store, {
273
+ conditions: requireStringArray(args.conditions, 'conditions'),
274
+ horizon: optionalNumber(args.horizon, 'horizon', { min: -100000, max: 1_000_000, integer: true }),
275
+ domains: optionalDomains(args.domains),
276
+ maxScenarios: optionalNumber(args.maxScenarios, 'maxScenarios', { min: 1, max: 10, integer: true }),
277
+ });
278
+ return {
279
+ scenarios: result.scenarios.map((s) => ({
280
+ name: s.name,
281
+ probability: Number(s.probability.toFixed(2)),
282
+ reasoning: s.reasoning,
283
+ historicalBasis: s.historicalBasis,
284
+ keyEvents: s.events.map((e) => ({
285
+ title: e.title,
286
+ year: e.yearLabel,
287
+ forecastConfidence: e.forecastConfidence,
288
+ description: e.description,
289
+ })),
290
+ })),
291
+ meta: {
292
+ ...result.basedOn,
293
+ disclaimer: 'Scenarios are derived from historical pattern matching, not guaranteed forecasts. ' +
294
+ 'Confidence reflects internal CKG calibration only.',
295
+ },
296
+ };
297
+ },
298
+ };
299
+ export const ALL_TOOLS = [
300
+ queryEventsT,
301
+ causalChainT,
302
+ historicalResonanceT,
303
+ orgKnowledgeT,
304
+ predictScenariosT,
305
+ ];
306
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Input validation for MCP tool arguments.
3
+ *
4
+ * MCP clients are LLM-driven and can send malformed arguments — wrong types,
5
+ * NaN, out-of-range numbers, empty required strings. The JSON schema advertised
6
+ * in tools/list is advisory; clients are not required to enforce it. So we
7
+ * validate at the handler boundary and return a clear, agent-readable error
8
+ * instead of letting a bad value reach the query engine.
9
+ *
10
+ * Validators throw {@link ValidationError}; tool handlers let it propagate to
11
+ * the transport layer, which converts it into an MCP isError tool result with
12
+ * a remediation hint.
13
+ */
14
+ declare const DOMAINS: readonly ["technology", "humanities", "systems", "science", "economy", "geopolitics", "philosophy", "environment", "culture", "health", "other"];
15
+ export type ValidDomain = (typeof DOMAINS)[number];
16
+ /** Thrown when a tool argument fails validation. Message is agent-facing. */
17
+ export declare class ValidationError extends Error {
18
+ constructor(message: string);
19
+ }
20
+ /**
21
+ * Require a non-empty string. Trims; rejects empty/whitespace-only.
22
+ */
23
+ export declare function requireString(value: unknown, field: string): string;
24
+ /**
25
+ * Optional finite number within [min, max]. Returns undefined when absent.
26
+ * Rejects NaN, Infinity, and non-number types so they never reach the query layer.
27
+ */
28
+ export declare function optionalNumber(value: unknown, field: string, opts?: {
29
+ min?: number;
30
+ max?: number;
31
+ integer?: boolean;
32
+ }): number | undefined;
33
+ /**
34
+ * Optional array of domain enum values. Returns undefined when absent.
35
+ * Rejects non-arrays and unknown domain strings.
36
+ */
37
+ export declare function optionalDomains(value: unknown, field?: string): ValidDomain[] | undefined;
38
+ /**
39
+ * Required non-empty array of non-empty strings. Used for free-text list inputs
40
+ * (e.g. predict_scenarios.conditions).
41
+ */
42
+ export declare function requireStringArray(value: unknown, field: string): string[];
43
+ /**
44
+ * Optional one-of enum string. Returns the value if valid, undefined if absent.
45
+ */
46
+ export declare function optionalEnum<T extends string>(value: unknown, field: string, allowed: readonly T[]): T | undefined;
47
+ /**
48
+ * Optional non-empty string. Returns undefined when absent, but rejects
49
+ * present-but-empty (a likely client bug worth surfacing).
50
+ */
51
+ export declare function optionalString(value: unknown, field: string): string | undefined;
52
+ export {};
53
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,QAAA,MAAM,OAAO,kJAGH,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,6EAA6E;AAC7E,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3D,MAAM,GAAG,SAAS,CAepB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAY,GAAG,WAAW,EAAE,GAAG,SAAS,CAc5F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAe1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,CAAC,EAAE,GACpB,CAAC,GAAG,SAAS,CAQf;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Input validation for MCP tool arguments.
3
+ *
4
+ * MCP clients are LLM-driven and can send malformed arguments — wrong types,
5
+ * NaN, out-of-range numbers, empty required strings. The JSON schema advertised
6
+ * in tools/list is advisory; clients are not required to enforce it. So we
7
+ * validate at the handler boundary and return a clear, agent-readable error
8
+ * instead of letting a bad value reach the query engine.
9
+ *
10
+ * Validators throw {@link ValidationError}; tool handlers let it propagate to
11
+ * the transport layer, which converts it into an MCP isError tool result with
12
+ * a remediation hint.
13
+ */
14
+ const DOMAINS = [
15
+ 'technology', 'humanities', 'systems', 'science', 'economy',
16
+ 'geopolitics', 'philosophy', 'environment', 'culture', 'health', 'other',
17
+ ];
18
+ /** Thrown when a tool argument fails validation. Message is agent-facing. */
19
+ export class ValidationError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'ValidationError';
23
+ }
24
+ }
25
+ /**
26
+ * Require a non-empty string. Trims; rejects empty/whitespace-only.
27
+ */
28
+ export function requireString(value, field) {
29
+ if (typeof value !== 'string') {
30
+ throw new ValidationError(`"${field}" must be a string, got ${typeName(value)}.`);
31
+ }
32
+ const trimmed = value.trim();
33
+ if (trimmed.length === 0) {
34
+ throw new ValidationError(`"${field}" must not be empty.`);
35
+ }
36
+ return trimmed;
37
+ }
38
+ /**
39
+ * Optional finite number within [min, max]. Returns undefined when absent.
40
+ * Rejects NaN, Infinity, and non-number types so they never reach the query layer.
41
+ */
42
+ export function optionalNumber(value, field, opts = {}) {
43
+ if (value === undefined || value === null)
44
+ return undefined;
45
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
46
+ throw new ValidationError(`"${field}" must be a finite number, got ${typeName(value)}.`);
47
+ }
48
+ if (opts.integer && !Number.isInteger(value)) {
49
+ throw new ValidationError(`"${field}" must be an integer, got ${value}.`);
50
+ }
51
+ if (opts.min !== undefined && value < opts.min) {
52
+ throw new ValidationError(`"${field}" must be >= ${opts.min}, got ${value}.`);
53
+ }
54
+ if (opts.max !== undefined && value > opts.max) {
55
+ throw new ValidationError(`"${field}" must be <= ${opts.max}, got ${value}.`);
56
+ }
57
+ return value;
58
+ }
59
+ /**
60
+ * Optional array of domain enum values. Returns undefined when absent.
61
+ * Rejects non-arrays and unknown domain strings.
62
+ */
63
+ export function optionalDomains(value, field = 'domains') {
64
+ if (value === undefined || value === null)
65
+ return undefined;
66
+ if (!Array.isArray(value)) {
67
+ throw new ValidationError(`"${field}" must be an array of domain strings.`);
68
+ }
69
+ for (const d of value) {
70
+ if (typeof d !== 'string' || !DOMAINS.includes(d)) {
71
+ throw new ValidationError(`"${field}" contains invalid domain ${JSON.stringify(d)}. ` +
72
+ `Valid domains: ${DOMAINS.join(', ')}.`);
73
+ }
74
+ }
75
+ return value;
76
+ }
77
+ /**
78
+ * Required non-empty array of non-empty strings. Used for free-text list inputs
79
+ * (e.g. predict_scenarios.conditions).
80
+ */
81
+ export function requireStringArray(value, field) {
82
+ if (!Array.isArray(value)) {
83
+ throw new ValidationError(`"${field}" must be an array of strings.`);
84
+ }
85
+ if (value.length === 0) {
86
+ throw new ValidationError(`"${field}" must contain at least one item.`);
87
+ }
88
+ const out = [];
89
+ for (const item of value) {
90
+ if (typeof item !== 'string' || item.trim().length === 0) {
91
+ throw new ValidationError(`"${field}" items must be non-empty strings.`);
92
+ }
93
+ out.push(item.trim());
94
+ }
95
+ return out;
96
+ }
97
+ /**
98
+ * Optional one-of enum string. Returns the value if valid, undefined if absent.
99
+ */
100
+ export function optionalEnum(value, field, allowed) {
101
+ if (value === undefined || value === null)
102
+ return undefined;
103
+ if (typeof value !== 'string' || !allowed.includes(value)) {
104
+ throw new ValidationError(`"${field}" must be one of: ${allowed.join(', ')}. Got ${JSON.stringify(value)}.`);
105
+ }
106
+ return value;
107
+ }
108
+ /**
109
+ * Optional non-empty string. Returns undefined when absent, but rejects
110
+ * present-but-empty (a likely client bug worth surfacing).
111
+ */
112
+ export function optionalString(value, field) {
113
+ if (value === undefined || value === null)
114
+ return undefined;
115
+ return requireString(value, field);
116
+ }
117
+ function typeName(value) {
118
+ if (value === null)
119
+ return 'null';
120
+ if (Array.isArray(value))
121
+ return 'array';
122
+ if (typeof value === 'number' && Number.isNaN(value))
123
+ return 'NaN';
124
+ return typeof value;
125
+ }
126
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Single source of truth for the server version.
3
+ *
4
+ * Kept in sync with package.json "version" manually on release. Imported by
5
+ * cli/server/worker so the version is reported identically across stdio +
6
+ * HTTP transports, the health endpoint, and the discovery manifest.
7
+ */
8
+ export declare const VERSION = "0.1.3";
9
+ /** Protocol version this server implements (MCP spec revision). */
10
+ export declare const MCP_PROTOCOL_VERSION = "2024-11-05";
11
+ /** Stable server identifier reported in serverInfo + health. */
12
+ export declare const SERVER_NAME = "causari-mcp-server";
13
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,WAAW,uBAAuB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Single source of truth for the server version.
3
+ *
4
+ * Kept in sync with package.json "version" manually on release. Imported by
5
+ * cli/server/worker so the version is reported identically across stdio +
6
+ * HTTP transports, the health endpoint, and the discovery manifest.
7
+ */
8
+ export const VERSION = '0.1.3';
9
+ /** Protocol version this server implements (MCP spec revision). */
10
+ export const MCP_PROTOCOL_VERSION = '2024-11-05';
11
+ /** Stable server identifier reported in serverInfo + health. */
12
+ export const SERVER_NAME = 'causari-mcp-server';
13
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEjD,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Causari MCP Server — Cloudflare Worker HTTP transport.
3
+ *
4
+ * Implements the MCP "Streamable HTTP" transport as a stateless JSON-RPC endpoint.
5
+ * Each POST /mcp is one request-response cycle — no session state required since
6
+ * all Causari tools are read-only queries against the in-memory CKGStore.
7
+ *
8
+ * Routes:
9
+ * POST /mcp — MCP JSON-RPC endpoint
10
+ * GET / — Info page (server stats + install docs)
11
+ * GET /health — Health check
12
+ * GET /.well-known/mcp.json — MCP server discovery manifest
13
+ * OPTIONS * — CORS preflight
14
+ *
15
+ * Auth: if CAUSARI_API_KEY env var is set, require Authorization: Bearer <key>.
16
+ * Rate limiting: handled by Cloudflare Workers platform.
17
+ */
18
+ interface Env {
19
+ CAUSARI_API_KEY?: string;
20
+ }
21
+ declare const _default: {
22
+ fetch(request: Request, env: Env): Promise<Response>;
23
+ };
24
+ export default _default;
25
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,UAAU,GAAG;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;;mBA6PsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBA2BE"}