@cyanheads/cpsc-recalls-mcp-server 0.1.5 → 0.1.7
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/AGENTS.md +11 -9
- package/CLAUDE.md +11 -9
- package/Dockerfile +9 -4
- package/LICENSE +1 -1
- package/README.md +16 -11
- package/changelog/0.1.x/0.1.6.md +29 -0
- package/changelog/0.1.x/0.1.7.md +37 -0
- package/changelog/template.md +55 -16
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts +7 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js +17 -4
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts +10 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js +57 -11
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts +20 -5
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js +128 -26
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.js +8 -7
- package/dist/services/cpsc-recall/cpsc-recall-service.js.map +1 -1
- package/dist/services/cpsc-recall/types.d.ts +15 -0
- package/dist/services/cpsc-recall/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/server.json +3 -3
|
@@ -8,6 +8,7 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
8
8
|
export declare const cpscGetRecent: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
9
9
|
days: z.ZodDefault<z.ZodNumber>;
|
|
10
10
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
11
12
|
}, z.core.$strip>, z.ZodObject<{
|
|
12
13
|
recalls: z.ZodArray<z.ZodObject<{
|
|
13
14
|
recall_number: z.ZodString;
|
|
@@ -26,13 +27,21 @@ export declare const cpscGetRecent: import("@cyanheads/mcp-ts-core").ToolDefinit
|
|
|
26
27
|
}, z.core.$strip>;
|
|
27
28
|
total_found: z.ZodNumber;
|
|
28
29
|
truncated: z.ZodBoolean;
|
|
30
|
+
offset: z.ZodNumber;
|
|
31
|
+
has_more: z.ZodBoolean;
|
|
29
32
|
cpsc_jurisdiction: z.ZodString;
|
|
30
33
|
source_note: z.ZodString;
|
|
31
34
|
}, z.core.$strip>, readonly [{
|
|
32
35
|
readonly reason: "upstream_error";
|
|
33
36
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
34
|
-
readonly when: "The saferproducts.gov API returned
|
|
37
|
+
readonly when: "The saferproducts.gov API returned a transient error or timed out";
|
|
35
38
|
readonly recovery: "The CPSC API is occasionally unavailable. Retry in a few seconds.";
|
|
36
39
|
readonly retryable: true;
|
|
40
|
+
}, {
|
|
41
|
+
readonly reason: "upstream_rejected";
|
|
42
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
43
|
+
readonly when: "The saferproducts.gov API answered with an error row instead of recall records, which the same request will always produce";
|
|
44
|
+
readonly recovery: "Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then try a different days window.";
|
|
45
|
+
readonly retryable: false;
|
|
37
46
|
}], undefined>;
|
|
38
47
|
//# sourceMappingURL=cpsc-get-recent.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-get-recent.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recent.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"cpsc-get-recent.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recent.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAmB3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6PxB,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module mcp-server/tools/definitions/cpsc-get-recent
|
|
5
5
|
*/
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
8
8
|
import { getCpscRecallService } from '../../../services/cpsc-recall/cpsc-recall-service.js';
|
|
9
9
|
/** Static jurisdiction note included in every response. */
|
|
10
10
|
const JURISDICTION = 'CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. ' +
|
|
@@ -22,6 +22,7 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
22
22
|
description: 'Fetch the most recent CPSC consumer product recalls, ordered newest-first. ' +
|
|
23
23
|
'Use for "what\'s been recalled lately?" or a product safety feed. ' +
|
|
24
24
|
'Always applies a date window (default: last 30 days) — without a date filter the API returns all 9,800+ records. ' +
|
|
25
|
+
'Page past limit with offset: narrowing days cannot page, because the window is anchored to today and shrinking it drops the oldest records rather than advancing past the newest. ' +
|
|
25
26
|
'CPSC jurisdiction: consumer products only — food, vehicles, drugs, and pesticides are covered by other agencies.',
|
|
26
27
|
annotations: { readOnlyHint: true },
|
|
27
28
|
input: z.object({
|
|
@@ -39,6 +40,13 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
39
40
|
.max(100)
|
|
40
41
|
.default(20)
|
|
41
42
|
.describe('Maximum number of recalls to return. Defaults to 20.'),
|
|
43
|
+
offset: z
|
|
44
|
+
.number()
|
|
45
|
+
.int()
|
|
46
|
+
.min(0)
|
|
47
|
+
.default(0)
|
|
48
|
+
.describe('Skip this many recalls in the window before returning results. Combine with limit to page through total_found — e.g. limit 20 with offset 0, 20, 40. ' +
|
|
49
|
+
'An offset at or past total_found returns an empty result set rather than an error.'),
|
|
42
50
|
}),
|
|
43
51
|
output: z.object({
|
|
44
52
|
recalls: z
|
|
@@ -52,7 +60,11 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
52
60
|
hazards: z
|
|
53
61
|
.array(z.string().describe('Hazard description.'))
|
|
54
62
|
.describe('What is dangerous.'),
|
|
55
|
-
remedy_options: z
|
|
63
|
+
remedy_options: z
|
|
64
|
+
.array(z.string().describe('Remedy type.'))
|
|
65
|
+
.describe('Remedy types: Refund, Repair, Replace, New Instructions, Dispose, Label, No Remedy Available, Inspect. ' +
|
|
66
|
+
'Multiple may apply. Often empty — CPSC classified the remedy on fewer than half its records; ' +
|
|
67
|
+
'call cpsc_get_recall for the remedy narrative when this is empty.'),
|
|
56
68
|
products: z
|
|
57
69
|
.array(z.string().describe('Product name.'))
|
|
58
70
|
.describe('Product names recalled.'),
|
|
@@ -71,8 +83,16 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
71
83
|
days: z.number().describe('Window length in days.'),
|
|
72
84
|
})
|
|
73
85
|
.describe('Date range queried.'),
|
|
74
|
-
total_found: z
|
|
75
|
-
|
|
86
|
+
total_found: z
|
|
87
|
+
.number()
|
|
88
|
+
.describe('Total recalls in this period, counted before offset and limit narrow the window.'),
|
|
89
|
+
truncated: z
|
|
90
|
+
.boolean()
|
|
91
|
+
.describe('True when total_found exceeds the limit. Independent of offset.'),
|
|
92
|
+
offset: z.number().describe('Number of recalls skipped before this window.'),
|
|
93
|
+
has_more: z
|
|
94
|
+
.boolean()
|
|
95
|
+
.describe('True when recalls remain past this window — call again with offset raised by the number of recalls returned.'),
|
|
76
96
|
cpsc_jurisdiction: z
|
|
77
97
|
.string()
|
|
78
98
|
.describe('CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. ' +
|
|
@@ -85,10 +105,17 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
85
105
|
{
|
|
86
106
|
reason: 'upstream_error',
|
|
87
107
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
88
|
-
when: 'The saferproducts.gov API returned
|
|
108
|
+
when: 'The saferproducts.gov API returned a transient error or timed out',
|
|
89
109
|
recovery: 'The CPSC API is occasionally unavailable. Retry in a few seconds.',
|
|
90
110
|
retryable: true,
|
|
91
111
|
},
|
|
112
|
+
{
|
|
113
|
+
reason: 'upstream_rejected',
|
|
114
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
115
|
+
when: 'The saferproducts.gov API answered with an error row instead of recall records, which the same request will always produce',
|
|
116
|
+
recovery: 'Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then try a different days window.',
|
|
117
|
+
retryable: false,
|
|
118
|
+
},
|
|
92
119
|
],
|
|
93
120
|
async handler(input, ctx) {
|
|
94
121
|
const endDate = new Date();
|
|
@@ -101,6 +128,7 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
101
128
|
date_start: dateStart,
|
|
102
129
|
date_end: dateEnd,
|
|
103
130
|
limit: input.limit,
|
|
131
|
+
offset: input.offset,
|
|
104
132
|
});
|
|
105
133
|
const svc = getCpscRecallService();
|
|
106
134
|
let raw;
|
|
@@ -108,11 +136,17 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
108
136
|
raw = await svc.getRecent(dateStart, dateEnd, ctx);
|
|
109
137
|
}
|
|
110
138
|
catch (err) {
|
|
111
|
-
|
|
139
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
140
|
+
if (err instanceof McpError && err.data?.retryable === false) {
|
|
141
|
+
throw ctx.fail('upstream_rejected', detail, { ...ctx.recoveryFor('upstream_rejected') }, { cause: err });
|
|
142
|
+
}
|
|
143
|
+
throw ctx.fail('upstream_error', `CPSC API request failed: ${detail}`, { ...ctx.recoveryFor('upstream_error') }, { cause: err });
|
|
112
144
|
}
|
|
113
145
|
const total_found = raw.length;
|
|
114
|
-
const slice = raw.slice(0, input.limit);
|
|
115
146
|
const truncated = total_found > input.limit;
|
|
147
|
+
// An offset at or past total_found is a valid empty page, not an error.
|
|
148
|
+
const slice = raw.slice(input.offset, input.offset + input.limit);
|
|
149
|
+
const has_more = input.offset + slice.length < total_found;
|
|
116
150
|
const recalls = slice.map((r) => {
|
|
117
151
|
const hazards = r.Hazards.map((h) => h.Name).filter(Boolean);
|
|
118
152
|
const products = r.Products.map((p) => p.Name).filter(Boolean);
|
|
@@ -134,12 +168,20 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
134
168
|
data_quality_notes,
|
|
135
169
|
};
|
|
136
170
|
});
|
|
137
|
-
ctx.log.info('Recent recalls fetched', {
|
|
171
|
+
ctx.log.info('Recent recalls fetched', {
|
|
172
|
+
total_found,
|
|
173
|
+
returned: recalls.length,
|
|
174
|
+
offset: input.offset,
|
|
175
|
+
truncated,
|
|
176
|
+
has_more,
|
|
177
|
+
});
|
|
138
178
|
return {
|
|
139
179
|
recalls,
|
|
140
180
|
period: { start: dateStart, end: dateEnd, days: input.days },
|
|
141
181
|
total_found,
|
|
142
182
|
truncated,
|
|
183
|
+
offset: input.offset,
|
|
184
|
+
has_more,
|
|
143
185
|
cpsc_jurisdiction: JURISDICTION,
|
|
144
186
|
source_note: SOURCE_NOTE,
|
|
145
187
|
};
|
|
@@ -148,10 +190,14 @@ export const cpscGetRecent = tool('cpsc_get_recent', {
|
|
|
148
190
|
const lines = [];
|
|
149
191
|
lines.push(`# Recent CPSC Recalls — ${result.period.start} to ${result.period.end} (${result.period.days} days)`);
|
|
150
192
|
lines.push('');
|
|
151
|
-
const truncNote = result.truncated
|
|
152
|
-
|
|
193
|
+
const truncNote = result.truncated ? ' (truncated by limit)' : '';
|
|
194
|
+
const windowNote = result.truncated || result.offset > 0
|
|
195
|
+
? `, showing ${result.recalls.length} from offset ${result.offset}${truncNote}`
|
|
153
196
|
: '';
|
|
154
|
-
lines.push(`Found ${result.total_found} recall${result.total_found !== 1 ? 's' : ''}${
|
|
197
|
+
lines.push(`Found ${result.total_found} recall${result.total_found !== 1 ? 's' : ''}${windowNote}.`);
|
|
198
|
+
if (result.has_more) {
|
|
199
|
+
lines.push(`More available — repeat with offset ${result.offset + result.recalls.length}.`);
|
|
200
|
+
}
|
|
155
201
|
lines.push('');
|
|
156
202
|
lines.push('---');
|
|
157
203
|
for (const r of result.recalls) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-get-recent.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recent.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"cpsc-get-recent.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recent.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,17 @@ export declare const cpscSearchRecalls: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
10
10
|
manufacturer: z.ZodOptional<z.ZodString>;
|
|
11
11
|
retailer: z.ZodOptional<z.ZodString>;
|
|
12
12
|
importer: z.ZodOptional<z.ZodString>;
|
|
13
|
+
distributor: z.ZodOptional<z.ZodString>;
|
|
14
|
+
title_search: z.ZodOptional<z.ZodString>;
|
|
13
15
|
description_search: z.ZodOptional<z.ZodString>;
|
|
16
|
+
remedy: z.ZodOptional<z.ZodString>;
|
|
17
|
+
hazard_search: z.ZodOptional<z.ZodString>;
|
|
14
18
|
date_start: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"">, z.ZodISODate]>>;
|
|
15
19
|
date_end: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"">, z.ZodISODate]>>;
|
|
20
|
+
updated_start: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"">, z.ZodISODate]>>;
|
|
21
|
+
updated_end: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"">, z.ZodISODate]>>;
|
|
16
22
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
17
24
|
}, z.core.$strip>, z.ZodObject<{
|
|
18
25
|
recalls: z.ZodArray<z.ZodObject<{
|
|
19
26
|
recall_number: z.ZodString;
|
|
@@ -39,23 +46,31 @@ export declare const cpscSearchRecalls: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
39
46
|
}, z.core.$strip>>;
|
|
40
47
|
total_found: z.ZodNumber;
|
|
41
48
|
truncated: z.ZodBoolean;
|
|
49
|
+
offset: z.ZodNumber;
|
|
50
|
+
has_more: z.ZodBoolean;
|
|
42
51
|
cpsc_jurisdiction: z.ZodString;
|
|
43
52
|
source_note: z.ZodString;
|
|
44
53
|
}, z.core.$strip>, readonly [{
|
|
45
54
|
readonly reason: "invalid_date_range";
|
|
46
55
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
47
|
-
readonly when: "date_start is later than date_end, so the range can never match";
|
|
48
|
-
readonly recovery: "Swap the two dates, or drop one of them. date_start
|
|
56
|
+
readonly when: "date_start is later than date_end, or updated_start is later than updated_end, so the range can never match";
|
|
57
|
+
readonly recovery: "Swap the two dates, or drop one of them. date_start and date_end bound the recall issue date; updated_start and updated_end bound the date CPSC last published the record.";
|
|
49
58
|
}, {
|
|
50
59
|
readonly reason: "no_results";
|
|
51
60
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
52
|
-
readonly when: "No recalls matched the search filters";
|
|
53
|
-
readonly recovery: "Broaden the search — try a shorter product name, fewer filters, or remove the date range. Check CPSC jurisdiction: food, vehicle, and drug recalls are not in this database.";
|
|
61
|
+
readonly when: "No recalls matched the search filters, including hazard_search";
|
|
62
|
+
readonly recovery: "Broaden the search — try a shorter product name, fewer filters, or remove the date range. If hazard_search was set, drop it: it narrows the upstream results further, client-side. Check CPSC jurisdiction: food, vehicle, and drug recalls are not in this database.";
|
|
54
63
|
}, {
|
|
55
64
|
readonly reason: "upstream_error";
|
|
56
65
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
57
|
-
readonly when: "The saferproducts.gov API returned
|
|
66
|
+
readonly when: "The saferproducts.gov API returned a transient error or timed out";
|
|
58
67
|
readonly recovery: "The CPSC API is occasionally unavailable. Retry in a few seconds.";
|
|
59
68
|
readonly retryable: true;
|
|
69
|
+
}, {
|
|
70
|
+
readonly reason: "upstream_rejected";
|
|
71
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
72
|
+
readonly when: "The saferproducts.gov API answered with an error row instead of recall records, which the same request will always produce";
|
|
73
|
+
readonly recovery: "Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then change a filter value and call again.";
|
|
74
|
+
readonly retryable: false;
|
|
60
75
|
}], undefined>;
|
|
61
76
|
//# sourceMappingURL=cpsc-search-recalls.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-search-recalls.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"cpsc-search-recalls.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAe3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAme5B,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module mcp-server/tools/definitions/cpsc-search-recalls
|
|
5
5
|
*/
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
8
8
|
import { getCpscRecallService } from '../../../services/cpsc-recall/cpsc-recall-service.js';
|
|
9
9
|
/** Static jurisdiction note included in every response. */
|
|
10
10
|
const JURISDICTION = 'CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. ' +
|
|
@@ -20,8 +20,10 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
20
20
|
"Covers toys, electronics, furniture, appliances, children's products, tools, and clothing — everything under CPSC jurisdiction. " +
|
|
21
21
|
'Does NOT cover food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), or pesticides (EPA). ' +
|
|
22
22
|
'All filter fields are optional substring matches that combine with AND. ' +
|
|
23
|
-
'
|
|
24
|
-
'
|
|
23
|
+
'Start with title_search when you have a product in hand — CPSC titles carry the brand, product, and hazard phrasing. ' +
|
|
24
|
+
'For hazard-type filtering ("fire", "choking", "burn"), use hazard_search, which matches hazard text, product names, and remedy instructions in one pass. ' +
|
|
25
|
+
'When manufacturer returns no results, try importer, retailer, or distributor: many recalls list one of those as the primary responsible org. ' +
|
|
26
|
+
'Page past limit with offset — total_found and has_more say where the window sits in the full result set. ' +
|
|
25
27
|
'Use cpsc_get_recall with a recall_number from results to retrieve the full record including complete description, all images, and incident reports.',
|
|
26
28
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
27
29
|
input: z.object({
|
|
@@ -42,12 +44,33 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
42
44
|
.string()
|
|
43
45
|
.optional()
|
|
44
46
|
.describe('Importer company name. Use when searching for recalls by the company that brought the product into the US.'),
|
|
47
|
+
distributor: z
|
|
48
|
+
.string()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('Distributor company name, e.g. "Walmart", "Costco". Substring match against the Distributors array — a role distinct from retailer and importer, and populated on far fewer records.'),
|
|
51
|
+
title_search: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('Keyword search within the recall Title, e.g. "chandelier", "space heater", "inclined sleeper". Substring match. ' +
|
|
55
|
+
'CPSC titles name the brand, the product, and the hazard, which makes this the highest-signal single filter for most searches.'),
|
|
45
56
|
description_search: z
|
|
46
57
|
.string()
|
|
47
58
|
.optional()
|
|
48
|
-
.describe('Keyword search within the recall Description field only (does not search Title or
|
|
49
|
-
'Use for
|
|
50
|
-
'
|
|
59
|
+
.describe('Keyword search within the recall Description field only (does not search Title, Hazards, or remedy text). ' +
|
|
60
|
+
'Use for product details not captured in product_name — model numbers, colors, sale channels. ' +
|
|
61
|
+
'For hazard concepts, prefer hazard_search; for the recall headline, prefer title_search.'),
|
|
62
|
+
remedy: z
|
|
63
|
+
.string()
|
|
64
|
+
.optional()
|
|
65
|
+
.describe('Keyword search within the free-text remedy instructions, e.g. "repair", "refund", "firmware update". Substring match, applied upstream. ' +
|
|
66
|
+
'This searches the remedy narrative, not the structured remedy_options enum — "repair" matches records whose remedy_options list only "Refund" but whose instructions describe a free repair kit. ' +
|
|
67
|
+
'Combines with the other filters using AND; use hazard_search instead to match remedy text as one of several fields.'),
|
|
68
|
+
hazard_search: z
|
|
69
|
+
.string()
|
|
70
|
+
.optional()
|
|
71
|
+
.describe('Hazard or safety-concept keyword, e.g. "fire", "choking", "burn", "laceration". Applied client-side after the upstream fetch. ' +
|
|
72
|
+
'Matches when the term appears in any of: hazard descriptions, product names, or remedy instructions (OR across the three, case-insensitive substring). ' +
|
|
73
|
+
'Use this rather than the upstream Hazard parameter, which CPSC recognizes but never matches.'),
|
|
51
74
|
date_start: z
|
|
52
75
|
.union([z.literal(''), z.iso.date().describe('ISO 8601 date: "YYYY-MM-DD".')])
|
|
53
76
|
.optional()
|
|
@@ -58,6 +81,17 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
58
81
|
.optional()
|
|
59
82
|
.describe('Include only recalls on or before this date. ISO 8601 format: "YYYY-MM-DD". ' +
|
|
60
83
|
'Must be a real calendar date, and on or after date_start.'),
|
|
84
|
+
updated_start: z
|
|
85
|
+
.union([z.literal(''), z.iso.date().describe('ISO 8601 date: "YYYY-MM-DD".')])
|
|
86
|
+
.optional()
|
|
87
|
+
.describe('Include only recalls last published by CPSC on or after this date. ISO 8601 format: "YYYY-MM-DD". ' +
|
|
88
|
+
'A separate axis from date_start: a 2003 recall re-published in 2025 matches updated_start "2025-01-01". ' +
|
|
89
|
+
'Use to answer "what has CPSC updated recently". Must be a real calendar date.'),
|
|
90
|
+
updated_end: z
|
|
91
|
+
.union([z.literal(''), z.iso.date().describe('ISO 8601 date: "YYYY-MM-DD".')])
|
|
92
|
+
.optional()
|
|
93
|
+
.describe('Include only recalls last published by CPSC on or before this date. ISO 8601 format: "YYYY-MM-DD". ' +
|
|
94
|
+
'Must be a real calendar date, and on or after updated_start.'),
|
|
61
95
|
limit: z
|
|
62
96
|
.number()
|
|
63
97
|
.int()
|
|
@@ -65,6 +99,13 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
65
99
|
.max(200)
|
|
66
100
|
.default(20)
|
|
67
101
|
.describe('Maximum number of results to return (applied client-side — the API returns all matches). Defaults to 20.'),
|
|
102
|
+
offset: z
|
|
103
|
+
.number()
|
|
104
|
+
.int()
|
|
105
|
+
.min(0)
|
|
106
|
+
.default(0)
|
|
107
|
+
.describe('Skip this many matching records before returning results. Combine with limit to page through total_found — e.g. limit 20 with offset 0, 20, 40. ' +
|
|
108
|
+
'An offset at or past total_found returns an empty result set rather than an error.'),
|
|
68
109
|
}),
|
|
69
110
|
output: z.object({
|
|
70
111
|
recalls: z
|
|
@@ -80,7 +121,9 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
80
121
|
.describe('Hazard descriptions — what is dangerous about this product.'),
|
|
81
122
|
remedy_options: z
|
|
82
123
|
.array(z.string().describe('Remedy type.'))
|
|
83
|
-
.describe('Remedy types: Refund, Repair, Replace, Dispose, Label,
|
|
124
|
+
.describe('Remedy types: Refund, Repair, Replace, New Instructions, Dispose, Label, No Remedy Available, Inspect. ' +
|
|
125
|
+
'Multiple may apply. Often empty — CPSC classified the remedy on fewer than half its records; ' +
|
|
126
|
+
'read remedy_summary when this is empty, and cpsc_url when that is empty too.'),
|
|
84
127
|
remedy_summary: z
|
|
85
128
|
.string()
|
|
86
129
|
.describe('Full remedy instructions — what the consumer should do and how to claim.'),
|
|
@@ -124,8 +167,16 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
124
167
|
})
|
|
125
168
|
.describe('A CPSC recall record.'))
|
|
126
169
|
.describe('Matching recalls, ordered newest-first.'),
|
|
127
|
-
total_found: z
|
|
128
|
-
|
|
170
|
+
total_found: z
|
|
171
|
+
.number()
|
|
172
|
+
.describe('Total matching records, counted after hazard_search is applied and before offset and limit narrow the window.'),
|
|
173
|
+
truncated: z
|
|
174
|
+
.boolean()
|
|
175
|
+
.describe('True when total_found exceeds the limit. Independent of offset.'),
|
|
176
|
+
offset: z.number().describe('Number of matching records skipped before this window.'),
|
|
177
|
+
has_more: z
|
|
178
|
+
.boolean()
|
|
179
|
+
.describe('True when records remain past this window — call again with offset raised by the number of recalls returned.'),
|
|
129
180
|
cpsc_jurisdiction: z
|
|
130
181
|
.string()
|
|
131
182
|
.describe('CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. ' +
|
|
@@ -138,22 +189,29 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
138
189
|
{
|
|
139
190
|
reason: 'invalid_date_range',
|
|
140
191
|
code: JsonRpcErrorCode.ValidationError,
|
|
141
|
-
when: 'date_start is later than date_end, so the range can never match',
|
|
142
|
-
recovery: 'Swap the two dates, or drop one of them. date_start
|
|
192
|
+
when: 'date_start is later than date_end, or updated_start is later than updated_end, so the range can never match',
|
|
193
|
+
recovery: 'Swap the two dates, or drop one of them. date_start and date_end bound the recall issue date; updated_start and updated_end bound the date CPSC last published the record.',
|
|
143
194
|
},
|
|
144
195
|
{
|
|
145
196
|
reason: 'no_results',
|
|
146
197
|
code: JsonRpcErrorCode.NotFound,
|
|
147
|
-
when: 'No recalls matched the search filters',
|
|
148
|
-
recovery: 'Broaden the search — try a shorter product name, fewer filters, or remove the date range. Check CPSC jurisdiction: food, vehicle, and drug recalls are not in this database.',
|
|
198
|
+
when: 'No recalls matched the search filters, including hazard_search',
|
|
199
|
+
recovery: 'Broaden the search — try a shorter product name, fewer filters, or remove the date range. If hazard_search was set, drop it: it narrows the upstream results further, client-side. Check CPSC jurisdiction: food, vehicle, and drug recalls are not in this database.',
|
|
149
200
|
},
|
|
150
201
|
{
|
|
151
202
|
reason: 'upstream_error',
|
|
152
203
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
153
|
-
when: 'The saferproducts.gov API returned
|
|
204
|
+
when: 'The saferproducts.gov API returned a transient error or timed out',
|
|
154
205
|
recovery: 'The CPSC API is occasionally unavailable. Retry in a few seconds.',
|
|
155
206
|
retryable: true,
|
|
156
207
|
},
|
|
208
|
+
{
|
|
209
|
+
reason: 'upstream_rejected',
|
|
210
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
211
|
+
when: 'The saferproducts.gov API answered with an error row instead of recall records, which the same request will always produce',
|
|
212
|
+
recovery: 'Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then change a filter value and call again.',
|
|
213
|
+
retryable: false,
|
|
214
|
+
},
|
|
157
215
|
],
|
|
158
216
|
async handler(input, ctx) {
|
|
159
217
|
ctx.log.info('Searching CPSC recalls', {
|
|
@@ -161,14 +219,24 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
161
219
|
manufacturer: input.manufacturer,
|
|
162
220
|
retailer: input.retailer,
|
|
163
221
|
importer: input.importer,
|
|
222
|
+
distributor: input.distributor,
|
|
223
|
+
title_search: input.title_search,
|
|
164
224
|
description_search: input.description_search,
|
|
225
|
+
remedy: input.remedy,
|
|
226
|
+
hazard_search: input.hazard_search,
|
|
165
227
|
date_start: input.date_start,
|
|
166
228
|
date_end: input.date_end,
|
|
229
|
+
updated_start: input.updated_start,
|
|
230
|
+
updated_end: input.updated_end,
|
|
167
231
|
limit: input.limit,
|
|
232
|
+
offset: input.offset,
|
|
168
233
|
});
|
|
169
234
|
if (input.date_start && input.date_end && input.date_start > input.date_end) {
|
|
170
235
|
throw ctx.fail('invalid_date_range', `date_start "${input.date_start}" is later than date_end "${input.date_end}".`, { ...ctx.recoveryFor('invalid_date_range') });
|
|
171
236
|
}
|
|
237
|
+
if (input.updated_start && input.updated_end && input.updated_start > input.updated_end) {
|
|
238
|
+
throw ctx.fail('invalid_date_range', `updated_start "${input.updated_start}" is later than updated_end "${input.updated_end}".`, { ...ctx.recoveryFor('invalid_date_range') });
|
|
239
|
+
}
|
|
172
240
|
const svc = getCpscRecallService();
|
|
173
241
|
let raw;
|
|
174
242
|
try {
|
|
@@ -177,23 +245,29 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
177
245
|
...(input.manufacturer && { Manufacturer: input.manufacturer }),
|
|
178
246
|
...(input.retailer && { Retailer: input.retailer }),
|
|
179
247
|
...(input.importer && { Importer: input.importer }),
|
|
248
|
+
...(input.distributor && { Distributor: input.distributor }),
|
|
249
|
+
...(input.title_search && { RecallTitle: input.title_search }),
|
|
180
250
|
...(input.description_search && { RecallDescription: input.description_search }),
|
|
251
|
+
...(input.remedy && { Remedy: input.remedy }),
|
|
181
252
|
...(input.date_start && { RecallDateStart: input.date_start }),
|
|
182
253
|
...(input.date_end && { RecallDateEnd: input.date_end }),
|
|
254
|
+
...(input.updated_start && { LastPublishDateStart: input.updated_start }),
|
|
255
|
+
...(input.updated_end && { LastPublishDateEnd: input.updated_end }),
|
|
183
256
|
}, ctx);
|
|
184
257
|
}
|
|
185
258
|
catch (err) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
});
|
|
259
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
260
|
+
if (err instanceof McpError && err.data?.retryable === false) {
|
|
261
|
+
throw ctx.fail('upstream_rejected', detail, { ...ctx.recoveryFor('upstream_rejected') }, { cause: err });
|
|
262
|
+
}
|
|
263
|
+
throw ctx.fail('upstream_error', `CPSC API request failed: ${detail}`, { ...ctx.recoveryFor('upstream_error') }, { cause: err });
|
|
192
264
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
265
|
+
/**
|
|
266
|
+
* Normalize the full upstream array before anything narrows it: hazard_search filters
|
|
267
|
+
* on normalized fields, and total_found must count post-filter but pre-window, so the
|
|
268
|
+
* offset/limit slice is the last step.
|
|
269
|
+
*/
|
|
270
|
+
const normalized = raw.map((r) => {
|
|
197
271
|
const hazards = r.Hazards.map((h) => h.Name).filter(Boolean);
|
|
198
272
|
const products = r.Products.map((p) => ({
|
|
199
273
|
name: p.Name,
|
|
@@ -225,11 +299,35 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
225
299
|
data_quality_notes,
|
|
226
300
|
};
|
|
227
301
|
});
|
|
228
|
-
|
|
302
|
+
const needle = input.hazard_search?.trim().toLowerCase();
|
|
303
|
+
const filtered = needle
|
|
304
|
+
? normalized.filter((r) => r.hazards.some((h) => h.toLowerCase().includes(needle)) ||
|
|
305
|
+
r.products.some((p) => p.name.toLowerCase().includes(needle)) ||
|
|
306
|
+
r.remedy_summary.toLowerCase().includes(needle))
|
|
307
|
+
: normalized;
|
|
308
|
+
if (filtered.length === 0) {
|
|
309
|
+
throw ctx.fail('no_results', 'No recalls matched the search filters.', {
|
|
310
|
+
...ctx.recoveryFor('no_results'),
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
const total_found = filtered.length;
|
|
314
|
+
const truncated = total_found > input.limit;
|
|
315
|
+
// An offset at or past total_found is a valid empty page, not a no_results error.
|
|
316
|
+
const recalls = filtered.slice(input.offset, input.offset + input.limit);
|
|
317
|
+
const has_more = input.offset + recalls.length < total_found;
|
|
318
|
+
ctx.log.info('Search complete', {
|
|
319
|
+
total_found,
|
|
320
|
+
returned: recalls.length,
|
|
321
|
+
offset: input.offset,
|
|
322
|
+
truncated,
|
|
323
|
+
has_more,
|
|
324
|
+
});
|
|
229
325
|
return {
|
|
230
326
|
recalls,
|
|
231
327
|
total_found,
|
|
232
328
|
truncated,
|
|
329
|
+
offset: input.offset,
|
|
330
|
+
has_more,
|
|
233
331
|
cpsc_jurisdiction: JURISDICTION,
|
|
234
332
|
source_note: SOURCE_NOTE,
|
|
235
333
|
};
|
|
@@ -279,7 +377,11 @@ export const cpscSearchRecalls = tool('cpsc_search_recalls', {
|
|
|
279
377
|
}
|
|
280
378
|
lines.push('---');
|
|
281
379
|
}
|
|
282
|
-
|
|
380
|
+
const truncNote = result.truncated ? ' (truncated by limit)' : '';
|
|
381
|
+
const paging = result.has_more
|
|
382
|
+
? ` More available — repeat with offset ${result.offset + result.recalls.length}.`
|
|
383
|
+
: '';
|
|
384
|
+
lines.push(`Showing ${result.recalls.length} of ${result.total_found} recalls${truncNote}, starting at offset ${result.offset}.${paging}`);
|
|
283
385
|
lines.push(`Source: ${result.source_note}`);
|
|
284
386
|
lines.push(`CPSC covers: ${result.cpsc_jurisdiction}`);
|
|
285
387
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-search-recalls.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cpsc-search-recalls.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-recall-service.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAsB9D,qBAAa,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"cpsc-recall-service.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAsB9D,qBAAa,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAgBnE;IAED;;;OAGG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAI/E;IAED;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAGhF;IAED,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,YAAY;CA4CrB;AAMD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
|