@cyanheads/earthquake-mcp-server 0.2.0 → 0.3.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/CLAUDE.md +2 -2
- package/README.md +9 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.d.ts +5 -3
- package/dist/mcp-server/resources/definitions/earthquake-event.resource.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/earthquake-count.tool.d.ts +14 -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 +55 -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 +5 -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 +1 -1
- 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 +13 -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 +19 -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 +57 -7
- package/dist/mcp-server/tools/definitions/earthquake-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/fdsn-error.d.ts +27 -0
- package/dist/mcp-server/tools/fdsn-error.d.ts.map +1 -0
- package/dist/mcp-server/tools/fdsn-error.js +71 -0
- package/dist/mcp-server/tools/fdsn-error.js.map +1 -0
- package/dist/mcp-server/tools/query-params.d.ts +7 -1
- package/dist/mcp-server/tools/query-params.d.ts.map +1 -1
- package/dist/mcp-server/tools/query-params.js +13 -1
- package/dist/mcp-server/tools/query-params.js.map +1 -1
- package/dist/mcp-server/tools/schemas.d.ts +5 -3
- package/dist/mcp-server/tools/schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/schemas.js +44 -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 +8 -2
- package/dist/services/emsc/emsc-service.js.map +1 -1
- package/dist/services/usgs/types.d.ts +14 -3
- package/dist/services/usgs/types.d.ts.map +1 -1
- package/dist/services/usgs/usgs-service.d.ts.map +1 -1
- package/dist/services/usgs/usgs-service.js +5 -1
- package/dist/services/usgs/usgs-service.js.map +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
package/CLAUDE.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
**Server:** earthquake-mcp-server
|
|
4
4
|
**Package:** `@cyanheads/earthquake-mcp-server`
|
|
5
|
-
**Version:** 0.
|
|
6
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.
|
|
5
|
+
**Version:** 0.3.0
|
|
6
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.17`
|
|
7
7
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
8
8
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
9
9
|
**Zod:** ^4.4.3
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/earthquake-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/earthquake-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -56,7 +56,7 @@ Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time w
|
|
|
56
56
|
|
|
57
57
|
Search earthquakes by time range, magnitude, depth, location radius, PAGER alert level, or felt reports.
|
|
58
58
|
|
|
59
|
-
- Dual-source: USGS (global, richer metadata) or EMSC (European-Mediterranean
|
|
59
|
+
- Dual-source: USGS (global, richer metadata) or EMSC (an independent global catalog from the European-Mediterranean Seismological Centre, for cross-verification anywhere)
|
|
60
60
|
- Full FDSN ComCat query API parameters: time range, magnitude, depth, location radius
|
|
61
61
|
- USGS-specific filters: PAGER alert level (`green`/`yellow`/`orange`/`red`), DYFI felt reports count, significance score
|
|
62
62
|
- Location-based queries: provide `latitude`, `longitude`, and `radius_km` together
|
|
@@ -64,7 +64,7 @@ Search earthquakes by time range, magnitude, depth, location radius, PAGER alert
|
|
|
64
64
|
- One call returns at most 20,000 events; page beyond that with `offset`, forwarded straight to the upstream FDSN `offset` parameter on both sources
|
|
65
65
|
- `offset` counts from 1, matching both upstream APIs — a capped result carries `totalCount` and the `nextOffset` to pass on the following call
|
|
66
66
|
- Use `earthquake_count` first to gauge result size
|
|
67
|
-
- USGS-specific filters are
|
|
67
|
+
- USGS-specific filters are not supported by EMSC — when `source=emsc` they are dropped and named in `ignoredFilters`, so an unconstrained result set is never mistaken for a filtered one
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -77,6 +77,7 @@ Count earthquakes matching filters without fetching full records.
|
|
|
77
77
|
- Returns `exceeds_limit` flag when count exceeds 20,000 — signals a full search needs paging
|
|
78
78
|
- Echoes the effective query back as `queryEcho`, including the resolved time window — omitting `start_time` counts only the last 30 days
|
|
79
79
|
- USGS returns the `max_allowed` cap (20,000); EMSC count endpoint does not expose this field (`max_allowed` will be null)
|
|
80
|
+
- USGS-specific filters are dropped and named in `ignoredFilters` when `source=emsc`, the same as on `earthquake_search`
|
|
80
81
|
|
|
81
82
|
---
|
|
82
83
|
|
|
@@ -108,7 +109,7 @@ Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core):
|
|
|
108
109
|
|
|
109
110
|
Earthquake-specific:
|
|
110
111
|
|
|
111
|
-
- Two independent data sources: USGS ComCat (
|
|
112
|
+
- Two independent global data sources: USGS ComCat (full metadata) and EMSC SeismicPortal (an independent catalog from the European-Mediterranean Seismological Centre, with no PAGER/DYFI/ShakeMap metadata and station coverage densest around Europe and the Mediterranean)
|
|
112
113
|
- USGS real-time GeoJSON feeds (CDN-cached, fast availability) plus FDSN event query API
|
|
113
114
|
- EMSC FDSN-WS event and count endpoints
|
|
114
115
|
- No API key required — both USGS and EMSC are fully public
|
|
@@ -117,7 +118,10 @@ Agent-friendly output:
|
|
|
117
118
|
|
|
118
119
|
- Source attribution on every response (`usgs` / `emsc`) so agents can reason about data provenance
|
|
119
120
|
- `exceeds_limit` flag on count responses surfaces truncation risk before a full search
|
|
120
|
-
-
|
|
121
|
+
- Fields a source does not publish come back `null`, never as a fabricated zero — `tsunami` and `status` are null on EMSC events, and the rendered text says "not published by source" rather than "no tsunami" or "reviewed"
|
|
122
|
+
- `source_catalog` and `auth` carry provenance (which catalog and which authoritative agency produced a solution) so agents can weigh two sources against each other
|
|
123
|
+
- USGS-only filters dropped for an EMSC query are named in `ignoredFilters` on both `earthquake_search` and `earthquake_count`
|
|
124
|
+
- An upstream 4xx surfaces the service's own explanation (the offending parameter and its accepted format) in the error message, not just a status code
|
|
121
125
|
|
|
122
126
|
## Getting started
|
|
123
127
|
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ await createApp({
|
|
|
19
19
|
instructions: 'Use the earthquake_* tools to query seismic data from USGS ComCat and the EMSC SeismicPortal; no API key required. ' +
|
|
20
20
|
'earthquake_get_feed gives USGS real-time magnitude tiers for current activity; earthquake_search handles historical or filtered queries, sized first with earthquake_count (search caps at 20,000 events). ' +
|
|
21
21
|
'Both emit network-specific event IDs (e.g. us6000sznj) for earthquake_get_event, which returns full USGS detail (EMSC has no per-event endpoint). ' +
|
|
22
|
-
'USGS carries richer metadata (PAGER, DYFI, ShakeMap); source=emsc
|
|
22
|
+
'USGS carries richer metadata (PAGER, DYFI, ShakeMap); source=emsc is an independent global catalog from the European-Mediterranean Seismological Centre, useful for cross-checking an event of any region against a separate network, and does not apply USGS-only filters (the response names them in ignoredFilters).',
|
|
23
23
|
tools: [earthquakeGetFeed, earthquakeSearch, earthquakeGetEvent, earthquakeCount],
|
|
24
24
|
resources: [earthquakeFeedResource, earthquakeEventResource],
|
|
25
25
|
prompts: [],
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0DAA0D,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,uBAAuB;IAC9B,YAAY,EACV,qHAAqH;QACrH,6MAA6M;QAC7M,oJAAoJ;QACpJ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,yDAAyD,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,0DAA0D,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,uBAAuB;IAC9B,YAAY,EACV,qHAAqH;QACrH,6MAA6M;QAC7M,oJAAoJ;QACpJ,yTAAyT;IAC3T,KAAK,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC;IACjF,SAAS,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IAC5D,OAAO,EAAE,EAAE;IACX,OAAO,EAAE;QACP,0EAA0E;QAC1E,2FAA2F;QAC3F,WAAW,EAAE,KAAK;KACnB;IACD,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxF,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1F,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -26,13 +26,15 @@ export declare const earthquakeEventResource: import("@cyanheads/mcp-ts-core").R
|
|
|
26
26
|
orange: "orange";
|
|
27
27
|
red: "red";
|
|
28
28
|
}>>;
|
|
29
|
-
tsunami: z.ZodNumber
|
|
29
|
+
tsunami: z.ZodNullable<z.ZodNumber>;
|
|
30
30
|
significance: z.ZodNullable<z.ZodNumber>;
|
|
31
|
-
status: z.ZodEnum<{
|
|
31
|
+
status: z.ZodNullable<z.ZodEnum<{
|
|
32
32
|
automatic: "automatic";
|
|
33
33
|
reviewed: "reviewed";
|
|
34
34
|
deleted: "deleted";
|
|
35
|
-
}
|
|
35
|
+
}>>;
|
|
36
|
+
source_catalog: z.ZodOptional<z.ZodString>;
|
|
37
|
+
auth: z.ZodOptional<z.ZodString>;
|
|
36
38
|
event_url: z.ZodOptional<z.ZodString>;
|
|
37
39
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
38
40
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-event.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/earthquake-event.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAMrD,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"earthquake-event.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/earthquake-event.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAMrD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAkClC,CAAC"}
|
|
@@ -42,8 +42,20 @@ export declare const earthquakeCount: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
42
42
|
}, {
|
|
43
43
|
readonly reason: "source_unavailable";
|
|
44
44
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
45
|
-
readonly when: "Selected source API returns
|
|
45
|
+
readonly when: "Selected source API returns a 5xx or is unreachable.";
|
|
46
|
+
readonly retryable: true;
|
|
46
47
|
readonly recovery: "Try the other source (usgs or emsc) or retry after a short delay.";
|
|
48
|
+
}, {
|
|
49
|
+
readonly reason: "source_timeout";
|
|
50
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
51
|
+
readonly when: "Selected source API did not answer before the request deadline.";
|
|
52
|
+
readonly retryable: true;
|
|
53
|
+
readonly recovery: string;
|
|
54
|
+
}, {
|
|
55
|
+
readonly reason: "upstream_rejected";
|
|
56
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
57
|
+
readonly when: "The source API rejected the query parameters with a 4xx response.";
|
|
58
|
+
readonly recovery: string;
|
|
47
59
|
}], {
|
|
48
60
|
readonly queryEcho: z.ZodOptional<z.ZodObject<{
|
|
49
61
|
start_time: z.ZodOptional<z.ZodString>;
|
|
@@ -63,5 +75,6 @@ export declare const earthquakeCount: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
63
75
|
emsc: "emsc";
|
|
64
76
|
}>;
|
|
65
77
|
}, z.core.$strip>>;
|
|
78
|
+
readonly ignoredFilters: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
66
79
|
}>;
|
|
67
80
|
//# sourceMappingURL=earthquake-count.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-count.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-count.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-count.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-count.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAO3E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsV1B,CAAC"}
|
|
@@ -4,7 +4,8 @@
|
|
|
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 {
|
|
7
|
+
import { upstreamRejection } from '../../../mcp-server/tools/fdsn-error.js';
|
|
8
|
+
import { buildQueryParams, ignoredUsgsFilters } from '../../../mcp-server/tools/query-params.js';
|
|
8
9
|
import { getEmscService } from '../../../services/emsc/emsc-service.js';
|
|
9
10
|
import { getUsgsService } from '../../../services/usgs/usgs-service.js';
|
|
10
11
|
export const earthquakeCount = tool('earthquake_count', {
|
|
@@ -18,7 +19,8 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
18
19
|
'narrow filters before fetching. ' +
|
|
19
20
|
'USGS returns the max_allowed cap (20,000); EMSC count endpoint does not return this field ' +
|
|
20
21
|
'(max_allowed will be null). ' +
|
|
21
|
-
'USGS-specific filters (alert_level, min_felt, min_significance) are
|
|
22
|
+
'USGS-specific filters (alert_level, min_felt, min_significance) are not sent when source=emsc — ' +
|
|
23
|
+
'the response names them in ignoredFilters.',
|
|
22
24
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
23
25
|
input: z.object({
|
|
24
26
|
start_time: z
|
|
@@ -86,9 +88,12 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
86
88
|
source: z
|
|
87
89
|
.enum(['usgs', 'emsc'])
|
|
88
90
|
.default('usgs')
|
|
89
|
-
.describe('Data source. ' +
|
|
91
|
+
.describe('Data source. Both catalogs are global. ' +
|
|
90
92
|
'"usgs" covers global events with PAGER, DYFI, and ShakeMap metadata. ' +
|
|
91
|
-
'"emsc"
|
|
93
|
+
'"emsc" is an independent global catalog operated by the European-Mediterranean ' +
|
|
94
|
+
'Seismological Centre — use it to cross-check a count from a separate network. ' +
|
|
95
|
+
'It has no PAGER, DYFI, or ShakeMap metadata; its station coverage is densest around ' +
|
|
96
|
+
'Europe and the Mediterranean, so counts of small events differ most by region.'),
|
|
92
97
|
}),
|
|
93
98
|
output: z.object({
|
|
94
99
|
count: z.number().describe('Number of events matching the query.'),
|
|
@@ -146,6 +151,12 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
146
151
|
.describe('Echo of the effective parameters the count covers, including server-resolved defaults. ' +
|
|
147
152
|
'Read start_time and end_time to know which window the count spans — a filter absent ' +
|
|
148
153
|
'here was not sent upstream.'),
|
|
154
|
+
ignoredFilters: z
|
|
155
|
+
.array(z.string().describe('Name of an input filter that was not applied.'))
|
|
156
|
+
.optional()
|
|
157
|
+
.describe('USGS-only filters supplied in the input but not sent upstream because source=emsc ' +
|
|
158
|
+
'does not support them. The count is NOT constrained by these — re-run with ' +
|
|
159
|
+
'source=usgs to apply them. Absent when every supplied filter was applied.'),
|
|
149
160
|
},
|
|
150
161
|
enrichmentTrailer: {
|
|
151
162
|
queryEcho: {
|
|
@@ -153,6 +164,10 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
153
164
|
.map(([key, value]) => `${key}=${String(value)}`)
|
|
154
165
|
.join(' · ')}`,
|
|
155
166
|
},
|
|
167
|
+
ignoredFilters: {
|
|
168
|
+
render: (f) => `**Ignored filters (not supported by EMSC, not sent upstream):** ${(f ?? []).join(', ')} — ` +
|
|
169
|
+
'this count is NOT constrained by the listed filters. Re-run with source=usgs to apply them.',
|
|
170
|
+
},
|
|
156
171
|
},
|
|
157
172
|
errors: [
|
|
158
173
|
{
|
|
@@ -164,9 +179,25 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
164
179
|
{
|
|
165
180
|
reason: 'source_unavailable',
|
|
166
181
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
167
|
-
when: 'Selected source API returns
|
|
182
|
+
when: 'Selected source API returns a 5xx or is unreachable.',
|
|
183
|
+
retryable: true,
|
|
168
184
|
recovery: 'Try the other source (usgs or emsc) or retry after a short delay.',
|
|
169
185
|
},
|
|
186
|
+
{
|
|
187
|
+
reason: 'source_timeout',
|
|
188
|
+
code: JsonRpcErrorCode.Timeout,
|
|
189
|
+
when: 'Selected source API did not answer before the request deadline.',
|
|
190
|
+
retryable: true,
|
|
191
|
+
recovery: 'Narrow the time range or raise min_magnitude so the upstream count scans a smaller ' +
|
|
192
|
+
'window, then retry. Counts over multi-year spans are the usual cause.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
reason: 'upstream_rejected',
|
|
196
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
197
|
+
when: 'The source API rejected the query parameters with a 4xx response.',
|
|
198
|
+
recovery: 'Read the upstream reason in the error message — it names the offending parameter and ' +
|
|
199
|
+
'the accepted format. Correct that parameter and call again.',
|
|
200
|
+
},
|
|
170
201
|
],
|
|
171
202
|
async handler(input, ctx) {
|
|
172
203
|
const latProvided = input.latitude != null;
|
|
@@ -196,6 +227,20 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
196
227
|
...ctx.recoveryFor('source_unavailable'),
|
|
197
228
|
});
|
|
198
229
|
}
|
|
230
|
+
// A timeout classifies as Timeout, not ServiceUnavailable — it needs its own
|
|
231
|
+
// branch or it bypasses the contract and reaches the caller with no recovery hint.
|
|
232
|
+
if (err instanceof McpError && err.code === JsonRpcErrorCode.Timeout) {
|
|
233
|
+
throw ctx.fail('source_timeout', err.message, {
|
|
234
|
+
...ctx.recoveryFor('source_timeout'),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// A 4xx means the upstream rejected the parameters, and its body says which one.
|
|
238
|
+
// The framework leaves that body out of the message, so fold it in here — otherwise
|
|
239
|
+
// content[]-only clients see a bare status code.
|
|
240
|
+
const rejection = upstreamRejection(err);
|
|
241
|
+
if (rejection) {
|
|
242
|
+
throw ctx.fail('upstream_rejected', `${input.source.toUpperCase()} rejected the query: ${rejection.reason}`, { ...ctx.recoveryFor('upstream_rejected'), status: rejection.status }, { cause: err });
|
|
243
|
+
}
|
|
199
244
|
throw err;
|
|
200
245
|
}
|
|
201
246
|
ctx.log.info('Count completed', {
|
|
@@ -225,6 +270,11 @@ export const earthquakeCount = tool('earthquake_count', {
|
|
|
225
270
|
source: input.source,
|
|
226
271
|
},
|
|
227
272
|
});
|
|
273
|
+
// An absence from queryEcho is too quiet a signal that a supplied filter never
|
|
274
|
+
// constrained the count — name the dropped filters outright.
|
|
275
|
+
const ignoredFilters = ignoredUsgsFilters(input, input.source);
|
|
276
|
+
if (ignoredFilters.length > 0)
|
|
277
|
+
ctx.enrich({ ignoredFilters });
|
|
228
278
|
return {
|
|
229
279
|
count: result.count,
|
|
230
280
|
max_allowed: result.maxAllowed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earthquake-count.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-count.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,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"earthquake-count.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/earthquake-count.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,13 +27,15 @@ 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>;
|
|
37
39
|
event_url: z.ZodOptional<z.ZodString>;
|
|
38
40
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
39
41
|
}, z.core.$strip>;
|
|
@@ -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;AAK3E,eAAO,MAAM,kBAAkB
|
|
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;AAK3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgE7B,CAAC"}
|
|
@@ -40,7 +40,7 @@ export const earthquakeGetEvent = tool('earthquake_get_event', {
|
|
|
40
40
|
}
|
|
41
41
|
catch (err) {
|
|
42
42
|
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
|
|
43
|
+
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') });
|
|
44
44
|
}
|
|
45
45
|
throw err;
|
|
46
46
|
}
|
|
@@ -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,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;IAC7D,KAAK,EAAE,6BAA6B;IACpC,WAAW,EACT,2DAA2D;QAC3D,uEAAuE;QACvE,uDAAuD;QACvD,2FAA2F;QAC3F,yEAAyE;IAC3E,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,CACP,oDAAoD;YAClD,+EAA+E,CAClF;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACvE,CAAC;IAEF,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,yCAAyC;YAC/C,QAAQ,EACN,oDAAoD;gBACpD,qEAAqE;SACxE;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/E,IAAI,KAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBACtE,MAAM,GAAG,CAAC,IAAI,CACZ,WAAW,EACX,qCAAqC,KAAK,CAAC,QAAQ,gDAAgD,
|
|
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,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;IAC7D,KAAK,EAAE,6BAA6B;IACpC,WAAW,EACT,2DAA2D;QAC3D,uEAAuE;QACvE,uDAAuD;QACvD,2FAA2F;QAC3F,yEAAyE;IAC3E,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,CACP,oDAAoD;YAClD,+EAA+E,CAClF;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACvE,CAAC;IAEF,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,yCAAyC;YAC/C,QAAQ,EACN,oDAAoD;gBACpD,qEAAqE;SACxE;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/E,IAAI,KAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBACtE,MAAM,GAAG,CAAC,IAAI,CACZ,WAAW,EACX,qCAAqC,KAAK,CAAC,QAAQ,gDAAgD,EACnG,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CACpC,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -43,13 +43,15 @@ 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>;
|
|
53
55
|
event_url: z.ZodOptional<z.ZodString>;
|
|
54
56
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
55
57
|
}, z.core.$strip>>;
|
|
@@ -57,8 +59,15 @@ export declare const earthquakeGetFeed: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
57
59
|
}, z.core.$strip>, readonly [{
|
|
58
60
|
readonly reason: "feed_unavailable";
|
|
59
61
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
60
|
-
readonly when: "USGS feed endpoint returns
|
|
62
|
+
readonly when: "USGS feed endpoint returns a 5xx, HTML, or is unreachable.";
|
|
63
|
+
readonly retryable: true;
|
|
61
64
|
readonly recovery: "Try a smaller time_window, or use earthquake_search as a fallback.";
|
|
65
|
+
}, {
|
|
66
|
+
readonly reason: "feed_timeout";
|
|
67
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
68
|
+
readonly when: "USGS feed endpoint did not answer before the request deadline.";
|
|
69
|
+
readonly retryable: true;
|
|
70
|
+
readonly recovery: string;
|
|
62
71
|
}], {
|
|
63
72
|
readonly totalCount: z.ZodOptional<z.ZodNumber>;
|
|
64
73
|
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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"}
|
|
@@ -60,13 +60,15 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
60
60
|
orange: "orange";
|
|
61
61
|
red: "red";
|
|
62
62
|
}>>;
|
|
63
|
-
tsunami: z.ZodNumber
|
|
63
|
+
tsunami: z.ZodNullable<z.ZodNumber>;
|
|
64
64
|
significance: z.ZodNullable<z.ZodNumber>;
|
|
65
|
-
status: z.ZodEnum<{
|
|
65
|
+
status: z.ZodNullable<z.ZodEnum<{
|
|
66
66
|
automatic: "automatic";
|
|
67
67
|
reviewed: "reviewed";
|
|
68
68
|
deleted: "deleted";
|
|
69
|
-
}
|
|
69
|
+
}>>;
|
|
70
|
+
source_catalog: z.ZodOptional<z.ZodString>;
|
|
71
|
+
auth: z.ZodOptional<z.ZodString>;
|
|
70
72
|
event_url: z.ZodOptional<z.ZodString>;
|
|
71
73
|
detail_url: z.ZodOptional<z.ZodString>;
|
|
72
74
|
}, z.core.$strip>>;
|
|
@@ -78,13 +80,26 @@ export declare const earthquakeSearch: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
78
80
|
}, {
|
|
79
81
|
readonly reason: "source_unavailable";
|
|
80
82
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
81
|
-
readonly when: "Selected source API returns
|
|
83
|
+
readonly when: "Selected source API returns a 5xx or is unreachable.";
|
|
84
|
+
readonly retryable: true;
|
|
82
85
|
readonly recovery: "Try the other source (usgs or emsc) or retry after a short delay.";
|
|
86
|
+
}, {
|
|
87
|
+
readonly reason: "source_timeout";
|
|
88
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
89
|
+
readonly when: "Selected source API did not answer before the request deadline.";
|
|
90
|
+
readonly retryable: true;
|
|
91
|
+
readonly recovery: string;
|
|
92
|
+
}, {
|
|
93
|
+
readonly reason: "upstream_rejected";
|
|
94
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
95
|
+
readonly when: "The source API rejected the query parameters with a 4xx response.";
|
|
96
|
+
readonly recovery: string;
|
|
83
97
|
}], {
|
|
84
98
|
readonly totalCount: z.ZodOptional<z.ZodNumber>;
|
|
85
99
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
86
100
|
readonly nextOffset: z.ZodOptional<z.ZodNumber>;
|
|
87
101
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
102
|
+
readonly ignoredFilters: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
88
103
|
readonly queryEcho: z.ZodOptional<z.ZodObject<{
|
|
89
104
|
start_time: z.ZodOptional<z.ZodString>;
|
|
90
105
|
end_time: z.ZodOptional<z.ZodString>;
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0b3B,CAAC"}
|