@cyanheads/earthquake-mcp-server 0.2.0 → 0.3.1
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/CLAUDE.md +2 -2
- package/README.md +18 -9
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.d.ts +72 -4
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.js +52 -8
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-count.tool.d.ts +21 -1
- package/dist/mcp-server/tools/definitions/earthquake-count.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-count.tool.js +83 -5
- package/dist/mcp-server/tools/definitions/earthquake-count.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-get-event.tool.d.ts +65 -3
- package/dist/mcp-server/tools/definitions/earthquake-get-event.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-get-event.tool.js +49 -10
- package/dist/mcp-server/tools/definitions/earthquake-get-event.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-get-feed.tool.d.ts +14 -4
- package/dist/mcp-server/tools/definitions/earthquake-get-feed.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-get-feed.tool.js +17 -1
- package/dist/mcp-server/tools/definitions/earthquake-get-feed.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-search.tool.d.ts +27 -4
- package/dist/mcp-server/tools/definitions/earthquake-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-search.tool.js +85 -7
- package/dist/mcp-server/tools/definitions/earthquake-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/fdsn-error.d.ts +33 -0
- package/dist/mcp-server/tools/fdsn-error.d.ts.map +1 -0
- package/dist/mcp-server/tools/fdsn-error.js +84 -0
- package/dist/mcp-server/tools/fdsn-error.js.map +1 -0
- package/dist/mcp-server/tools/query-params.d.ts +8 -1
- package/dist/mcp-server/tools/query-params.d.ts.map +1 -1
- package/dist/mcp-server/tools/query-params.js +19 -1
- package/dist/mcp-server/tools/query-params.js.map +1 -1
- package/dist/mcp-server/tools/schemas.d.ts +65 -3
- package/dist/mcp-server/tools/schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/schemas.js +246 -12
- package/dist/mcp-server/tools/schemas.js.map +1 -1
- package/dist/services/emsc/emsc-service.d.ts.map +1 -1
- package/dist/services/emsc/emsc-service.js +14 -3
- package/dist/services/emsc/emsc-service.js.map +1 -1
- package/dist/services/usgs/types.d.ts +125 -4
- package/dist/services/usgs/types.d.ts.map +1 -1
- package/dist/services/usgs/usgs-service.d.ts +11 -3
- package/dist/services/usgs/usgs-service.d.ts.map +1 -1
- package/dist/services/usgs/usgs-service.js +115 -3
- package/dist/services/usgs/usgs-service.js.map +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
|
@@ -27,20 +27,82 @@ export declare const earthquakeGetEvent: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
27
27
|
orange: "orange";
|
|
28
28
|
red: "red";
|
|
29
29
|
}>>;
|
|
30
|
-
tsunami: z.ZodNumber
|
|
30
|
+
tsunami: z.ZodNullable<z.ZodNumber>;
|
|
31
31
|
significance: z.ZodNullable<z.ZodNumber>;
|
|
32
|
-
status: z.ZodEnum<{
|
|
32
|
+
status: z.ZodNullable<z.ZodEnum<{
|
|
33
33
|
automatic: "automatic";
|
|
34
34
|
reviewed: "reviewed";
|
|
35
35
|
deleted: "deleted";
|
|
36
|
-
}
|
|
36
|
+
}>>;
|
|
37
|
+
source_catalog: z.ZodOptional<z.ZodString>;
|
|
38
|
+
auth: z.ZodOptional<z.ZodString>;
|
|
39
|
+
event_type: z.ZodOptional<z.ZodString>;
|
|
37
40
|
event_url: z.ZodOptional<z.ZodString>;
|
|
38
41
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
39
42
|
}, z.core.$strip>;
|
|
43
|
+
detail: z.ZodOptional<z.ZodObject<{
|
|
44
|
+
losspager: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
alert_level: z.ZodOptional<z.ZodString>;
|
|
46
|
+
report_url: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}, z.core.$strip>>;
|
|
48
|
+
shakemap: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
max_mmi: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
max_pga: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
max_pgv: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
intensity_map_url: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$strip>>;
|
|
54
|
+
dyfi: z.ZodOptional<z.ZodObject<{
|
|
55
|
+
responses: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
max_cdi: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
map_url: z.ZodOptional<z.ZodString>;
|
|
58
|
+
}, z.core.$strip>>;
|
|
59
|
+
moment_tensor: z.ZodOptional<z.ZodObject<{
|
|
60
|
+
scalar_moment_nm: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
derived_depth_km: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
nodal_plane_1: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
strike: z.ZodNumber;
|
|
64
|
+
dip: z.ZodNumber;
|
|
65
|
+
rake: z.ZodNumber;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
nodal_plane_2: z.ZodOptional<z.ZodObject<{
|
|
68
|
+
strike: z.ZodNumber;
|
|
69
|
+
dip: z.ZodNumber;
|
|
70
|
+
rake: z.ZodNumber;
|
|
71
|
+
}, z.core.$strip>>;
|
|
72
|
+
}, z.core.$strip>>;
|
|
73
|
+
ground_failure: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
landslide_alert: z.ZodOptional<z.ZodString>;
|
|
75
|
+
liquefaction_alert: z.ZodOptional<z.ZodString>;
|
|
76
|
+
}, z.core.$strip>>;
|
|
77
|
+
origin: z.ZodOptional<z.ZodObject<{
|
|
78
|
+
azimuthal_gap_deg: z.ZodOptional<z.ZodNumber>;
|
|
79
|
+
num_stations_used: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
horizontal_error_km: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
depth_error_km: z.ZodOptional<z.ZodNumber>;
|
|
82
|
+
review_status: z.ZodOptional<z.ZodString>;
|
|
83
|
+
}, z.core.$strip>>;
|
|
84
|
+
finite_fault: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
rupture_length_km: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
rupture_width_km: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
model_url: z.ZodOptional<z.ZodString>;
|
|
88
|
+
}, z.core.$strip>>;
|
|
89
|
+
}, z.core.$strip>>;
|
|
40
90
|
}, z.core.$strip>, readonly [{
|
|
41
91
|
readonly reason: "not_found";
|
|
42
92
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
43
93
|
readonly when: "No event matches the provided event_id.";
|
|
44
94
|
readonly recovery: string;
|
|
95
|
+
}, {
|
|
96
|
+
readonly reason: "source_unavailable";
|
|
97
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
98
|
+
readonly when: "The USGS event API returns a 5xx, serves HTML, or is unreachable.";
|
|
99
|
+
readonly retryable: true;
|
|
100
|
+
readonly recovery: string;
|
|
101
|
+
}, {
|
|
102
|
+
readonly reason: "source_timeout";
|
|
103
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
104
|
+
readonly when: "The USGS event API did not answer before the request deadline.";
|
|
105
|
+
readonly retryable: true;
|
|
106
|
+
readonly recovery: string;
|
|
45
107
|
}], undefined>;
|
|
46
108
|
//# sourceMappingURL=earthquake-get-event.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-get-event.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-event.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"earthquake-get-event.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-event.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAS3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2G7B,CAAC"}
|
|
@@ -4,13 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
-
import { EarthquakeEventSchema, formatEvent } from '../../../mcp-server/tools/schemas.js';
|
|
7
|
+
import { EarthquakeDetailSchema, EarthquakeEventSchema, formatEvent, formatEventDetail, } from '../../../mcp-server/tools/schemas.js';
|
|
8
8
|
import { getUsgsService } from '../../../services/usgs/usgs-service.js';
|
|
9
9
|
export const earthquakeGetEvent = tool('earthquake_get_event', {
|
|
10
10
|
title: 'Get Earthquake Event Detail',
|
|
11
11
|
description: 'Fetch detail for a specific earthquake by USGS event ID. ' +
|
|
12
|
-
'Returns
|
|
13
|
-
'
|
|
12
|
+
'Returns the same normalized event a search result carries, plus a projection of the ' +
|
|
13
|
+
'analysis products only the single-event response holds: PAGER impact alert and report link, ' +
|
|
14
|
+
'ShakeMap peak intensity and ground motion, DYFI felt-report totals, the moment-tensor focal ' +
|
|
15
|
+
'mechanism, landslide and liquefaction alerts, origin quality (azimuthal gap, station count, ' +
|
|
16
|
+
'location uncertainty), and finite-fault rupture dimensions. ' +
|
|
17
|
+
'Products are omitted when USGS produced none — a small automatic event typically has no ' +
|
|
18
|
+
'detail at all, while a large reviewed one has most of it. ' +
|
|
14
19
|
'Event IDs appear in the "id" field of earthquake_get_feed and earthquake_search results. ' +
|
|
15
20
|
'This tool is USGS-only — EMSC events have no per-event detail endpoint.',
|
|
16
21
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
@@ -22,6 +27,8 @@ export const earthquakeGetEvent = tool('earthquake_get_event', {
|
|
|
22
27
|
}),
|
|
23
28
|
output: z.object({
|
|
24
29
|
event: EarthquakeEventSchema.describe('Full earthquake event detail.'),
|
|
30
|
+
detail: EarthquakeDetailSchema.optional().describe('Analysis products USGS attached to this event. Absent when the event carries none — ' +
|
|
31
|
+
'that means no product was produced, not that impact was zero.'),
|
|
25
32
|
}),
|
|
26
33
|
errors: [
|
|
27
34
|
{
|
|
@@ -31,28 +38,60 @@ export const earthquakeGetEvent = tool('earthquake_get_event', {
|
|
|
31
38
|
recovery: 'Verify the event ID from a feed or search result. ' +
|
|
32
39
|
'IDs are network-specific strings like "us6000sznj" or "hv74966427".',
|
|
33
40
|
},
|
|
41
|
+
{
|
|
42
|
+
reason: 'source_unavailable',
|
|
43
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
44
|
+
when: 'The USGS event API returns a 5xx, serves HTML, or is unreachable.',
|
|
45
|
+
retryable: true,
|
|
46
|
+
recovery: 'Retry after a short delay. The same event also appears in earthquake_search and ' +
|
|
47
|
+
'earthquake_get_feed results, which carry the normalized record without the products.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
reason: 'source_timeout',
|
|
51
|
+
code: JsonRpcErrorCode.Timeout,
|
|
52
|
+
when: 'The USGS event API did not answer before the request deadline.',
|
|
53
|
+
retryable: true,
|
|
54
|
+
recovery: 'Retry the same event ID — a single-event lookup carries no filters to reduce. If it ' +
|
|
55
|
+
'keeps timing out, read the event from an earthquake_search or earthquake_get_feed result.',
|
|
56
|
+
},
|
|
34
57
|
],
|
|
35
58
|
async handler(input, ctx) {
|
|
36
59
|
ctx.log.info('Fetching earthquake event detail', { event_id: input.event_id });
|
|
37
|
-
let
|
|
60
|
+
let result;
|
|
38
61
|
try {
|
|
39
|
-
|
|
62
|
+
result = await getUsgsService().getEvent(input.event_id, ctx);
|
|
40
63
|
}
|
|
41
64
|
catch (err) {
|
|
42
65
|
if (err instanceof McpError && err.code === JsonRpcErrorCode.NotFound) {
|
|
43
|
-
throw ctx.fail('not_found', `No earthquake event found for ID "${input.event_id}". Verify the ID from a feed or search result
|
|
66
|
+
throw ctx.fail('not_found', `No earthquake event found for ID "${input.event_id}". Verify the ID from a feed or search result.`, { ...ctx.recoveryFor('not_found') });
|
|
67
|
+
}
|
|
68
|
+
if (err instanceof McpError && err.code === JsonRpcErrorCode.ServiceUnavailable) {
|
|
69
|
+
throw ctx.fail('source_unavailable', err.message, {
|
|
70
|
+
...ctx.recoveryFor('source_unavailable'),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// A timeout classifies as Timeout, not ServiceUnavailable — it needs its own
|
|
74
|
+
// branch or it bypasses the contract and reaches the caller with no recovery hint.
|
|
75
|
+
if (err instanceof McpError && err.code === JsonRpcErrorCode.Timeout) {
|
|
76
|
+
throw ctx.fail('source_timeout', err.message, {
|
|
77
|
+
...ctx.recoveryFor('source_timeout'),
|
|
78
|
+
});
|
|
44
79
|
}
|
|
45
80
|
throw err;
|
|
46
81
|
}
|
|
47
82
|
ctx.log.info('Event fetched', {
|
|
48
83
|
event_id: input.event_id,
|
|
49
|
-
magnitude: event.magnitude,
|
|
50
|
-
place: event.place,
|
|
84
|
+
magnitude: result.event.magnitude,
|
|
85
|
+
place: result.event.place,
|
|
86
|
+
products: result.detail != null ? Object.keys(result.detail) : [],
|
|
51
87
|
});
|
|
52
|
-
return {
|
|
88
|
+
return {
|
|
89
|
+
event: result.event,
|
|
90
|
+
...(result.detail ? { detail: result.detail } : {}),
|
|
91
|
+
};
|
|
53
92
|
},
|
|
54
93
|
format: (result) => {
|
|
55
|
-
const lines = formatEvent(result.event);
|
|
94
|
+
const lines = [...formatEvent(result.event), ...formatEventDetail(result.detail)];
|
|
56
95
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
57
96
|
},
|
|
58
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-get-event.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-event.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"earthquake-get-event.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-event.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,13 +43,16 @@ export declare const earthquakeGetFeed: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
43
43
|
orange: "orange";
|
|
44
44
|
red: "red";
|
|
45
45
|
}>>;
|
|
46
|
-
tsunami: z.ZodNumber
|
|
46
|
+
tsunami: z.ZodNullable<z.ZodNumber>;
|
|
47
47
|
significance: z.ZodNullable<z.ZodNumber>;
|
|
48
|
-
status: z.ZodEnum<{
|
|
48
|
+
status: z.ZodNullable<z.ZodEnum<{
|
|
49
49
|
automatic: "automatic";
|
|
50
50
|
reviewed: "reviewed";
|
|
51
51
|
deleted: "deleted";
|
|
52
|
-
}
|
|
52
|
+
}>>;
|
|
53
|
+
source_catalog: z.ZodOptional<z.ZodString>;
|
|
54
|
+
auth: z.ZodOptional<z.ZodString>;
|
|
55
|
+
event_type: z.ZodOptional<z.ZodString>;
|
|
53
56
|
event_url: z.ZodOptional<z.ZodString>;
|
|
54
57
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
55
58
|
}, z.core.$strip>>;
|
|
@@ -57,8 +60,15 @@ export declare const earthquakeGetFeed: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
57
60
|
}, z.core.$strip>, readonly [{
|
|
58
61
|
readonly reason: "feed_unavailable";
|
|
59
62
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
60
|
-
readonly when: "USGS feed endpoint returns
|
|
63
|
+
readonly when: "USGS feed endpoint returns a 5xx, HTML, or is unreachable.";
|
|
64
|
+
readonly retryable: true;
|
|
61
65
|
readonly recovery: "Try a smaller time_window, or use earthquake_search as a fallback.";
|
|
66
|
+
}, {
|
|
67
|
+
readonly reason: "feed_timeout";
|
|
68
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
69
|
+
readonly when: "USGS feed endpoint did not answer before the request deadline.";
|
|
70
|
+
readonly retryable: true;
|
|
71
|
+
readonly recovery: string;
|
|
62
72
|
}], {
|
|
63
73
|
readonly totalCount: z.ZodOptional<z.ZodNumber>;
|
|
64
74
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-get-feed.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-feed.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAU3E,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"earthquake-get-feed.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-feed.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAU3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8N5B,CAAC"}
|
|
@@ -95,9 +95,18 @@ export const earthquakeGetFeed = tool('earthquake_get_feed', {
|
|
|
95
95
|
{
|
|
96
96
|
reason: 'feed_unavailable',
|
|
97
97
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
98
|
-
when: 'USGS feed endpoint returns
|
|
98
|
+
when: 'USGS feed endpoint returns a 5xx, HTML, or is unreachable.',
|
|
99
|
+
retryable: true,
|
|
99
100
|
recovery: 'Try a smaller time_window, or use earthquake_search as a fallback.',
|
|
100
101
|
},
|
|
102
|
+
{
|
|
103
|
+
reason: 'feed_timeout',
|
|
104
|
+
code: JsonRpcErrorCode.Timeout,
|
|
105
|
+
when: 'USGS feed endpoint did not answer before the request deadline.',
|
|
106
|
+
retryable: true,
|
|
107
|
+
recovery: 'Retry the call, or request a smaller time_window — the "month" and "all" feeds are ' +
|
|
108
|
+
'the largest documents and the slowest to transfer.',
|
|
109
|
+
},
|
|
101
110
|
],
|
|
102
111
|
async handler(input, ctx) {
|
|
103
112
|
ctx.log.info('Fetching USGS feed', {
|
|
@@ -116,6 +125,13 @@ export const earthquakeGetFeed = tool('earthquake_get_feed', {
|
|
|
116
125
|
...ctx.recoveryFor('feed_unavailable'),
|
|
117
126
|
});
|
|
118
127
|
}
|
|
128
|
+
// A timeout classifies as Timeout, not ServiceUnavailable — it needs its own
|
|
129
|
+
// branch or it bypasses the contract and reaches the caller with no recovery hint.
|
|
130
|
+
if (err instanceof McpError && err.code === JsonRpcErrorCode.Timeout) {
|
|
131
|
+
throw ctx.fail('feed_timeout', err.message, {
|
|
132
|
+
...ctx.recoveryFor('feed_timeout'),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
119
135
|
throw err;
|
|
120
136
|
}
|
|
121
137
|
ctx.log.info('Feed fetched', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-get-feed.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-feed.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"earthquake-get-feed.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-get-feed.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
22
22
|
}>>;
|
|
23
23
|
min_felt: z.ZodOptional<z.ZodNumber>;
|
|
24
24
|
min_significance: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
event_type: z.ZodOptional<z.ZodString>;
|
|
25
26
|
source: z.ZodDefault<z.ZodEnum<{
|
|
26
27
|
usgs: "usgs";
|
|
27
28
|
emsc: "emsc";
|
|
@@ -60,13 +61,16 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
60
61
|
orange: "orange";
|
|
61
62
|
red: "red";
|
|
62
63
|
}>>;
|
|
63
|
-
tsunami: z.ZodNumber
|
|
64
|
+
tsunami: z.ZodNullable<z.ZodNumber>;
|
|
64
65
|
significance: z.ZodNullable<z.ZodNumber>;
|
|
65
|
-
status: z.ZodEnum<{
|
|
66
|
+
status: z.ZodNullable<z.ZodEnum<{
|
|
66
67
|
automatic: "automatic";
|
|
67
68
|
reviewed: "reviewed";
|
|
68
69
|
deleted: "deleted";
|
|
69
|
-
}
|
|
70
|
+
}>>;
|
|
71
|
+
source_catalog: z.ZodOptional<z.ZodString>;
|
|
72
|
+
auth: z.ZodOptional<z.ZodString>;
|
|
73
|
+
event_type: z.ZodOptional<z.ZodString>;
|
|
70
74
|
event_url: z.ZodOptional<z.ZodString>;
|
|
71
75
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
72
76
|
}, z.core.$strip>>;
|
|
@@ -78,13 +82,31 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
78
82
|
}, {
|
|
79
83
|
readonly reason: "source_unavailable";
|
|
80
84
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
81
|
-
readonly when: "Selected source API returns
|
|
85
|
+
readonly when: "Selected source API returns a 5xx or is unreachable.";
|
|
86
|
+
readonly retryable: true;
|
|
82
87
|
readonly recovery: "Try the other source (usgs or emsc) or retry after a short delay.";
|
|
88
|
+
}, {
|
|
89
|
+
readonly reason: "source_timeout";
|
|
90
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
91
|
+
readonly when: "Selected source API did not answer before the request deadline.";
|
|
92
|
+
readonly retryable: true;
|
|
93
|
+
readonly recovery: string;
|
|
94
|
+
}, {
|
|
95
|
+
readonly reason: "upstream_rejected";
|
|
96
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
97
|
+
readonly when: "The source API rejected the query parameters and explained why in its response body.";
|
|
98
|
+
readonly recovery: string;
|
|
99
|
+
}, {
|
|
100
|
+
readonly reason: "upstream_rejected_no_reason";
|
|
101
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
102
|
+
readonly when: "The source API rejected the query but its response body carried no usable explanation.";
|
|
103
|
+
readonly recovery: string;
|
|
83
104
|
}], {
|
|
84
105
|
readonly totalCount: z.ZodOptional<z.ZodNumber>;
|
|
85
106
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
86
107
|
readonly nextOffset: z.ZodOptional<z.ZodNumber>;
|
|
87
108
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
109
|
+
readonly ignoredFilters: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
88
110
|
readonly queryEcho: z.ZodOptional<z.ZodObject<{
|
|
89
111
|
start_time: z.ZodOptional<z.ZodString>;
|
|
90
112
|
end_time: z.ZodOptional<z.ZodString>;
|
|
@@ -98,6 +120,7 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
98
120
|
alert_level: z.ZodOptional<z.ZodString>;
|
|
99
121
|
min_felt: z.ZodOptional<z.ZodNumber>;
|
|
100
122
|
min_significance: z.ZodOptional<z.ZodNumber>;
|
|
123
|
+
event_type: z.ZodOptional<z.ZodString>;
|
|
101
124
|
source: z.ZodEnum<{
|
|
102
125
|
usgs: "usgs";
|
|
103
126
|
emsc: "emsc";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"earthquake-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAS3E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8d3B,CAAC"}
|
|
@@ -5,16 +5,21 @@
|
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getServerConfig } from '../../../config/server-config.js';
|
|
8
|
-
import {
|
|
8
|
+
import { upstreamRejection } from '../../../mcp-server/tools/fdsn-error.js';
|
|
9
|
+
import { buildQueryParams, ignoredUsgsFilters } from '../../../mcp-server/tools/query-params.js';
|
|
9
10
|
import { EarthquakeEventSchema, formatEvent } from '../../../mcp-server/tools/schemas.js';
|
|
10
11
|
import { getEmscService } from '../../../services/emsc/emsc-service.js';
|
|
11
12
|
import { getUsgsService } from '../../../services/usgs/usgs-service.js';
|
|
12
13
|
export const earthquakeSearch = tool('earthquake_search', {
|
|
13
14
|
title: 'Search Earthquakes',
|
|
14
15
|
description: 'Search earthquakes by time range, magnitude, depth, location radius, PAGER alert level, or felt reports. ' +
|
|
15
|
-
'Supports USGS (global, richer metadata: PAGER, DYFI, ShakeMap) and EMSC
|
|
16
|
+
'Supports USGS (global, richer metadata: PAGER, DYFI, ShakeMap) and EMSC, an independent global ' +
|
|
17
|
+
'catalog operated by the European-Mediterranean Seismological Centre. ' +
|
|
16
18
|
'For location-based queries, provide latitude, longitude, and radius_km together. ' +
|
|
17
|
-
'
|
|
19
|
+
'Both catalogs include non-tectonic records (quarry blasts, explosions) — every event carries ' +
|
|
20
|
+
'its event_type, and event_type="earthquake" filters the rest out on USGS. ' +
|
|
21
|
+
'USGS-specific filters (alert_level, event_type, min_felt, min_significance) are not sent when ' +
|
|
22
|
+
'source=emsc — the response names them in ignoredFilters. ' +
|
|
18
23
|
'Use earthquake_count first to gauge result size before requesting large result sets. ' +
|
|
19
24
|
'A single call returns at most 20,000 events; larger result sets are retrieved by paging with ' +
|
|
20
25
|
'offset, which is passed straight through to the upstream FDSN API. When a result is capped, ' +
|
|
@@ -84,13 +89,22 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
84
89
|
.describe('Minimum USGS significance score (0–2000+). ' +
|
|
85
90
|
'Combines magnitude, felt reports, and PAGER estimates. ' +
|
|
86
91
|
'Significant events typically score 600+. Only available from USGS.'),
|
|
92
|
+
event_type: z
|
|
93
|
+
.string()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Filter by upstream event classification, e.g. "earthquake" to exclude quarry blasts and ' +
|
|
96
|
+
'explosions, or "quarry blast" to see only those. Matched verbatim against the USGS ' +
|
|
97
|
+
'catalog, which accepts any string and returns zero matches for an unrecognized one. ' +
|
|
98
|
+
'Only available from USGS.'),
|
|
87
99
|
source: z
|
|
88
100
|
.enum(['usgs', 'emsc'])
|
|
89
101
|
.default('usgs')
|
|
90
|
-
.describe('Data source. ' +
|
|
102
|
+
.describe('Data source. Both catalogs are global. ' +
|
|
91
103
|
'"usgs" covers global events with PAGER, DYFI, and ShakeMap metadata. ' +
|
|
92
|
-
'"emsc"
|
|
93
|
-
'
|
|
104
|
+
'"emsc" is an independent global catalog operated by the European-Mediterranean ' +
|
|
105
|
+
'Seismological Centre — use it to cross-check any event, anywhere, against a separate ' +
|
|
106
|
+
'network. It publishes no PAGER, DYFI, or ShakeMap metadata and no per-event detail ' +
|
|
107
|
+
'endpoint; its station coverage is densest around Europe and the Mediterranean.'),
|
|
94
108
|
limit: z
|
|
95
109
|
.number()
|
|
96
110
|
.int()
|
|
@@ -146,6 +160,12 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
146
160
|
.optional()
|
|
147
161
|
.describe('Recovery guidance when results are empty or capped — how to broaden filters or get the full count. ' +
|
|
148
162
|
'Absent when the result set is non-empty and within the limit.'),
|
|
163
|
+
ignoredFilters: z
|
|
164
|
+
.array(z.string().describe('Name of an input filter that was not applied.'))
|
|
165
|
+
.optional()
|
|
166
|
+
.describe('USGS-only filters supplied in the input but not sent upstream because source=emsc ' +
|
|
167
|
+
'does not support them. The result set is NOT constrained by these — re-run with ' +
|
|
168
|
+
'source=usgs to apply them. Absent when every supplied filter was applied.'),
|
|
149
169
|
queryEcho: z
|
|
150
170
|
.object({
|
|
151
171
|
start_time: z
|
|
@@ -178,6 +198,10 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
178
198
|
.number()
|
|
179
199
|
.optional()
|
|
180
200
|
.describe('Significance filter sent upstream. Absent for EMSC — not supported there.'),
|
|
201
|
+
event_type: z
|
|
202
|
+
.string()
|
|
203
|
+
.optional()
|
|
204
|
+
.describe('Event-type filter sent upstream. Absent for EMSC — not supported there.'),
|
|
181
205
|
source: z.enum(['usgs', 'emsc']).describe('Data source queried.'),
|
|
182
206
|
limit: z.number().describe('Effective result limit sent upstream.'),
|
|
183
207
|
offset: z
|
|
@@ -196,6 +220,10 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
196
220
|
.map(([key, value]) => `${key}=${String(value)}`)
|
|
197
221
|
.join(' · ')}`,
|
|
198
222
|
},
|
|
223
|
+
ignoredFilters: {
|
|
224
|
+
render: (f) => `**Ignored filters (not supported by EMSC, not sent upstream):** ${(f ?? []).join(', ')} — ` +
|
|
225
|
+
'these results are NOT constrained by the listed filters. Re-run with source=usgs to apply them.',
|
|
226
|
+
},
|
|
199
227
|
},
|
|
200
228
|
errors: [
|
|
201
229
|
{
|
|
@@ -207,9 +235,33 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
207
235
|
{
|
|
208
236
|
reason: 'source_unavailable',
|
|
209
237
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
210
|
-
when: 'Selected source API returns
|
|
238
|
+
when: 'Selected source API returns a 5xx or is unreachable.',
|
|
239
|
+
retryable: true,
|
|
211
240
|
recovery: 'Try the other source (usgs or emsc) or retry after a short delay.',
|
|
212
241
|
},
|
|
242
|
+
{
|
|
243
|
+
reason: 'source_timeout',
|
|
244
|
+
code: JsonRpcErrorCode.Timeout,
|
|
245
|
+
when: 'Selected source API did not answer before the request deadline.',
|
|
246
|
+
retryable: true,
|
|
247
|
+
recovery: 'Narrow the time range, raise min_magnitude, or lower limit so the upstream query ' +
|
|
248
|
+
'returns faster, then retry. Use earthquake_count first to size the match set.',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
reason: 'upstream_rejected',
|
|
252
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
253
|
+
when: 'The source API rejected the query parameters and explained why in its response body.',
|
|
254
|
+
recovery: 'Read the upstream reason in the error message — it names the offending parameter and ' +
|
|
255
|
+
'the accepted format. Correct that parameter and call again.',
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
reason: 'upstream_rejected_no_reason',
|
|
259
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
260
|
+
when: 'The source API rejected the query but its response body carried no usable explanation.',
|
|
261
|
+
recovery: 'The service named no offending parameter. Re-check the parameters you supplied — ' +
|
|
262
|
+
'time range format, magnitude bounds, and the lat/lon/radius trio are the usual causes — ' +
|
|
263
|
+
'or retry with the other source to see whether it accepts the same query.',
|
|
264
|
+
},
|
|
213
265
|
],
|
|
214
266
|
async handler(input, ctx) {
|
|
215
267
|
// Validate radius params — all three must be provided together
|
|
@@ -249,6 +301,26 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
249
301
|
...ctx.recoveryFor('source_unavailable'),
|
|
250
302
|
});
|
|
251
303
|
}
|
|
304
|
+
// A timeout classifies as Timeout, not ServiceUnavailable — it needs its own
|
|
305
|
+
// branch or it bypasses the contract and reaches the caller with no recovery hint.
|
|
306
|
+
if (err instanceof McpError && err.code === JsonRpcErrorCode.Timeout) {
|
|
307
|
+
throw ctx.fail('source_timeout', err.message, {
|
|
308
|
+
...ctx.recoveryFor('source_timeout'),
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
// A 4xx means the upstream rejected the parameters, and its body usually says
|
|
312
|
+
// which one. The framework leaves that body out of the message, so fold it in
|
|
313
|
+
// here — otherwise content[]-only clients see a bare status code. A body with no
|
|
314
|
+
// usable reason still gets a contract reason of its own, so the raw upstream text
|
|
315
|
+
// (which echoes an internal hostname) never substitutes for an explanation.
|
|
316
|
+
const rejection = upstreamRejection(err);
|
|
317
|
+
if (rejection) {
|
|
318
|
+
const source = input.source.toUpperCase();
|
|
319
|
+
if (rejection.reason != null) {
|
|
320
|
+
throw ctx.fail('upstream_rejected', `${source} rejected the query: ${rejection.reason}`, { ...ctx.recoveryFor('upstream_rejected'), status: rejection.status }, { cause: err });
|
|
321
|
+
}
|
|
322
|
+
throw ctx.fail('upstream_rejected_no_reason', `${source} rejected the query (HTTP ${rejection.status}) — the service gave no reason.`, { ...ctx.recoveryFor('upstream_rejected_no_reason'), status: rejection.status }, { cause: err });
|
|
323
|
+
}
|
|
252
324
|
throw err;
|
|
253
325
|
}
|
|
254
326
|
ctx.log.info('Search completed', { source: input.source, count: result.count });
|
|
@@ -271,12 +343,18 @@ export const earthquakeSearch = tool('earthquake_search', {
|
|
|
271
343
|
...(isUsgs && params.minSignificance != null
|
|
272
344
|
? { min_significance: params.minSignificance }
|
|
273
345
|
: {}),
|
|
346
|
+
...(isUsgs && params.eventType != null ? { event_type: params.eventType } : {}),
|
|
274
347
|
source: input.source,
|
|
275
348
|
limit,
|
|
276
349
|
...(input.offset != null ? { offset: input.offset } : {}),
|
|
277
350
|
order_by: input.order_by,
|
|
278
351
|
},
|
|
279
352
|
});
|
|
353
|
+
// An absence from queryEcho is too quiet a signal that a supplied filter never
|
|
354
|
+
// constrained the results — name the dropped filters outright.
|
|
355
|
+
const ignoredFilters = ignoredUsgsFilters(input, input.source);
|
|
356
|
+
if (ignoredFilters.length > 0)
|
|
357
|
+
ctx.enrich({ ignoredFilters });
|
|
280
358
|
// Offsets are 1-based upstream, so the events consumed through this page are
|
|
281
359
|
// (offset - 1) + count and the next page starts at offset + count. A full page
|
|
282
360
|
// that exactly exhausts a known total is the last page, not a truncated one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAoB,MAAM,iCAAiC,CAAC;AAEnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE;IACxD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,2GAA2G;QAC3G,yHAAyH;QACzH,mFAAmF;QACnF,gGAAgG;QAChG,uFAAuF;QACvF,+FAA+F;QAC/F,8FAA8F;QAC9F,2FAA2F;IAC7F,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,gFAAgF;YAC9E,gFAAgF;YAChF,6DAA6D,CAChE;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qEAAqE,CAAC;QAClF,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CACP,6CAA6C;YAC3C,mEAAmE,CACtE;QACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACnF,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,CAAC;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,GAAG,CAAC;aACT,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CACP,sDAAsD;YACpD,+DAA+D;YAC/D,gDAAgD,CACnD;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,+BAA+B;YAC7B,0FAA0F,CAC7F;QACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC5E,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;aAC1C,QAAQ,EAAE;aACV,QAAQ,CACP,2EAA2E;YACzE,sEAAsE,CACzE;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,qDAAqD;YACnD,4EAA4E,CAC/E;QACH,gBAAgB,EAAE,CAAC;aAChB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACP,6CAA6C;YAC3C,yDAAyD;YACzD,oEAAoE,CACvE;QACH,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACtB,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CACP,eAAe;YACb,uEAAuE;YACvE,gFAAgF;YAChF,4DAA4D,CAC/D;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CACP,kDAAkD;YAChD,gEAAgE;YAChE,6EAA6E,CAChF;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,oFAAoF;YAClF,mFAAmF;YACnF,oFAAoF;YACpF,gEAAgE,CACnE;QACH,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;aACxD,OAAO,CAAC,MAAM,CAAC;aACf,QAAQ,CAAC,6EAA6E,CAAC;KAC3F,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC9D,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;aACnE,QAAQ,CAAC,6BAA6B,CAAC;KAC3C,CAAC;IAEF,iFAAiF;IACjF,mFAAmF;IACnF,oFAAoF;IACpF,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,gEAAgE;YAC9D,gGAAgG,CACnG;QACH,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,+EAA+E;YAC7E,mFAAmF;YACnF,yBAAyB,CAC5B;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sFAAsF;YACpF,uFAAuF,CAC1F;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,qGAAqG;YACnG,+DAA+D,CAClE;QACH,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wGAAwG,CACzG;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,uGAAuG,CACxG;YACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACxF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACnF,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACnF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACnF,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+EAA+E,CAChF;YACH,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;YACxF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACnE,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SAC3D,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CACP,iGAAiG;YAC/F,2FAA2F,CAC9F;KACJ;IAED,iBAAiB,EAAE;QACjB,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,mBAAmB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;iBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;iBAChD,IAAI,CAAC,KAAK,CAAC,EAAE;SACnB;KACF;IAED,MAAM,EAAE;QACN;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,kEAAkE;YACxE,QAAQ,EAAE,kFAAkF;SAC7F;QACD;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,mDAAmD;YACzD,QAAQ,EAAE,mEAAmE;SAC9E;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,+DAA+D;QAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAC5C,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QAE/C,IACE,CAAC,WAAW,IAAI,WAAW,IAAI,cAAc,CAAC;YAC9C,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,cAAc,CAAC,EAC/C,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,CACZ,gBAAgB,EAChB,yFAAyF,EACzF,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CACzC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC;QAEjD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;QAEH,8EAA8E;QAC9E,MAAM,MAAM,GAA0B;YACpC,GAAG,gBAAgB,CAAC,KAAK,CAAC;YAC1B,KAAK;YACL,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,EAAE,KAAK,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAI,MAAwD,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM;gBACJ,KAAK,CAAC,MAAM,KAAK,MAAM;oBACrB,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;oBAClD,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBAChF,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,EAAE;oBAChD,GAAG,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEhF,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;QACvC,GAAG,CAAC,MAAM,CAAC;YACT,SAAS,EAAE;gBACT,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI;oBAC1C,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK;gBACL,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB;SACF,CAAC,CAAC;QAEH,6EAA6E;QAC7E,+EAA+E;QAC/E,6EAA6E;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9D,MAAM,SAAS,GACb,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAE7F,6EAA6E;QAC7E,4EAA4E;QAC5E,kDAAkD;QAClD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7E,IAAI,SAAS;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3D,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,MAAM,CACf,MAAM,GAAG,CAAC;gBACR,CAAC,CAAC,uBAAuB,MAAM,yCAAyC;oBACpE,uFAAuF;gBAC3F,CAAC,CAAC,+BAA+B;oBAC7B,iFAAiF,CACxF,CAAC;QACJ,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,MAAM,CAAC,MAAM,CACf,MAAM,CAAC,UAAU,IAAI,IAAI;gBACvB,CAAC,CAAC,kBAAkB,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,YAAY;oBACvF,0BAA0B,UAAU,iEAAiE;gBACzG,CAAC,CAAC,gCAAgC,KAAK,KAAK;oBACxC,0BAA0B,UAAU,2CAA2C;oBAC/E,6DAA6D,CACpE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa;YACtB,eAAe,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,MAAM,CAAC,KAAK,EAAE;YACzE,EAAE;SACH,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"earthquake-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-search.tool.ts"],"names":[],"mappings":"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"}
|