@cyanheads/cpsc-recalls-mcp-server 0.1.7 → 0.2.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/AGENTS.md +55 -26
- package/CLAUDE.md +55 -26
- package/README.md +40 -59
- package/changelog/0.1.x/0.1.8.md +32 -0
- package/changelog/0.2.x/0.2.0.md +31 -0
- package/changelog/template.md +9 -26
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts +4 -4
- 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 +16 -34
- 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 +6 -4
- 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 +142 -115
- 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 +12 -9
- 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 +372 -244
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js.map +1 -1
- package/dist/mcp-server/tools/response-budget.d.ts +34 -0
- package/dist/mcp-server/tools/response-budget.d.ts.map +1 -0
- package/dist/mcp-server/tools/response-budget.js +53 -0
- package/dist/mcp-server/tools/response-budget.js.map +1 -0
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.js +4 -5
- package/dist/services/cpsc-recall/cpsc-recall-service.js.map +1 -1
- package/package.json +10 -9
- package/server.json +3 -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/cpsc-recalls-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/cpsc-recalls-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -27,9 +27,11 @@
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Overview
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
Consumer product recalls from the CPSC [saferproducts.gov](https://www.saferproducts.gov/) database — toys, electronics, furniture, appliances, children's products, tools, and clothing. Search recalls by product, brand, retailer, or hazard, fetch full detail for a specific recall number, or pull a recent-recalls feed for a date window. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
|
|
33
|
+
|
|
34
|
+
### Tools
|
|
33
35
|
|
|
34
36
|
| Tool | Description |
|
|
35
37
|
|:---|:---|
|
|
@@ -37,79 +39,58 @@
|
|
|
37
39
|
| `cpsc_get_recall` | Full detail for a single recall by recall number — hazards, remedy, products, injuries, images, and the official CPSC page |
|
|
38
40
|
| `cpsc_get_recent` | Fetch the most recent recalls ordered newest-first, scoped to a configurable date window |
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
Data sourced from the [U.S. Consumer Product Safety Commission](https://www.saferproducts.gov/) via the CPSC public recalls API.
|
|
42
|
+
CPSC jurisdiction is consumer products only — food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), and pesticides (EPA) are not in this database; every response carries a jurisdiction note.
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
## Capability reference
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
### `cpsc_search_recalls` <sub>tool</sub>
|
|
47
47
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
- `
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
- Returns hazard descriptions, remedy options, remedy instructions, product list, UPCs, manufacturer/importer/retailer names, images, and the CPSC recall page URL
|
|
56
|
-
- Manufacturer and importer are reported and rendered as separate roles — CPSC org names contain commas, so multiple orgs in one role are separated with `; `
|
|
57
|
-
- Per-recall `data_quality_notes` records gaps in the upstream record (no hazard text, no product entries); empty when nothing is missing
|
|
58
|
-
- When `manufacturer` returns no results, try `importer`, `retailer`, or `distributor` — many recalls list one of those as the primary organization
|
|
59
|
-
- Deterministic upstream rejections surface as `upstream_rejected` (`retryable: false`) and carry the CPSC message; transient outages stay on `upstream_error` (`retryable: true`)
|
|
48
|
+
- Nine text filters — `product_name`, `manufacturer`, `retailer`, `importer`, `distributor`, `title_search`, `description_search`, `remedy` (free-text instructions, not the `remedy_options` categories), and `hazard_search` (hazard text, product names, or remedy instructions; `hazard` is accepted as an alias) — all combine with AND; `title_search` is usually highest-signal
|
|
49
|
+
- A search needs at least one criterion — a non-blank text filter or a date bound; `limit`/`offset` alone fail with `missing_criteria`, whose hint points browsing to `cpsc_get_recent`. A blank or whitespace-only filter counts as omitted
|
|
50
|
+
- Word matching: every whitespace-separated word of a text filter must appear in that filter's field, in any order and case-insensitively; straight and curly apostrophes match each other, and `%`, `_`, and `[…]` match literally. No stemming or fuzzy matching. Each text filter accepts up to 500 characters
|
|
51
|
+
- Two independent date axes: `date_start`/`date_end` bound the recall issue date, `updated_start`/`updated_end` bound the date CPSC last published it; all four must be real calendar dates and a reversed range throws `invalid_date_range`
|
|
52
|
+
- `limit` (1–200, default 20) and `offset` (default 0) page through `total_found`, which counts every match before the window; a page returns fewer than `limit` recalls when it reaches the 64,000-byte response size budget, and its notice names the offset to continue from. `has_more` is the paging signal and `truncated` always equals it
|
|
53
|
+
- Returns hazard descriptions, remedy options and instructions, products, UPCs, manufacturer/importer/retailer/distributor names, images, `cpsc_url`, and per-recall `data_quality_notes`; manufacturer and importer render as separate roles — try `importer`, `retailer`, or `distributor` when `manufacturer` comes back empty
|
|
54
|
+
- Zero matches is an empty success, not an error: `effectiveQuery` echoes the criteria as applied, and a notice says which criterion to relax (the count before `hazard_search` emptied the set, fewer words, another company role, wider dates). An offset past the last match returns an empty page with its own notice. `upstream_rejected` (non-retryable) relays CPSC's own rejection, `upstream_error` (retryable) covers transient outages
|
|
60
55
|
|
|
61
56
|
---
|
|
62
57
|
|
|
63
|
-
### `cpsc_get_recall`
|
|
64
|
-
|
|
65
|
-
Full detail for a single CPSC recall by recall number.
|
|
58
|
+
### `cpsc_get_recall` <sub>tool</sub>
|
|
66
59
|
|
|
67
|
-
- Accepts modern 5-digit recall numbers (e.g. `"25043"`) and historical 1998–2001 records with letter suffixes (e.g. `"99003a"`)
|
|
68
|
-
- Returns the complete record
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
- `
|
|
73
|
-
- Use `cpsc_search_recalls` or `cpsc_get_recent` to find a recall number first
|
|
60
|
+
- Accepts modern 5-digit recall numbers (e.g. `"25043"`) and historical 1998–2001 records with letter suffixes (e.g. `"99003a"`); a malformed number is rejected as invalid input with both forms spelled out
|
|
61
|
+
- Returns the complete record — full description, all hazard and remedy detail, every product variant, UPCs, incident/injury narrative, manufacturer/importer/retailer/distributor names, country of manufacture, images, and coordinated-agency recall URLs
|
|
62
|
+
- `description` is nullable — a small number of genuine CPSC records carry no description text, and model numbers are usually embedded there rather than in a structured field
|
|
63
|
+
- Manufacturer and importer render under separate headings so role attribution survives into `content[]`
|
|
64
|
+
- `data_quality_notes` records gaps in the upstream record (absent description, hazard text, or product entries); empty when nothing is missing
|
|
65
|
+
- `not_found` when the recall number doesn't exist — resolve one via `cpsc_search_recalls` or `cpsc_get_recent` first; `upstream_rejected` (non-retryable) relays CPSC's own rejection, `upstream_error` (retryable) covers transient outages
|
|
74
66
|
|
|
75
67
|
---
|
|
76
68
|
|
|
77
|
-
### `cpsc_get_recent`
|
|
69
|
+
### `cpsc_get_recent` <sub>tool</sub>
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
- `has_more` is the paging signal; `truncated` stays limit-only and does not move with `offset`
|
|
84
|
-
- Always applies a date window — without one, the upstream API returns 9,800+ records
|
|
85
|
-
- Returns a lightweight record per recall: number, date, title, hazards, remedy types, product names, and CPSC URL
|
|
86
|
-
- Per-recall `data_quality_notes` records gaps in the upstream record (no hazard text, no product entries); empty when nothing is missing
|
|
71
|
+
- Look-back window of 1–365 days (default 30), anchored to today; older recalls are reachable through `cpsc_search_recalls` date bounds
|
|
72
|
+
- `limit` (1–100, default 20) and `offset` (default 0) page through `total_found`; a page returns fewer than `limit` recalls when it reaches the 64,000-byte response size budget. Narrowing `days` cannot page further back — the window is anchored to today, so shrinking it drops the oldest records rather than advancing past the newest
|
|
73
|
+
- `has_more` is the paging signal and `truncated` always equals it; an empty window, an offset past the last recall, and a budget-cut page each carry a notice saying what to do next
|
|
74
|
+
- Returns a lightweight record per recall — number, date, title, hazards, remedy types, product names, `cpsc_url` — plus `data_quality_notes` for gaps CPSC left empty
|
|
87
75
|
- Use `cpsc_get_recall` to retrieve full detail for any result
|
|
88
76
|
|
|
89
77
|
## Features
|
|
90
78
|
|
|
91
|
-
Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core):
|
|
92
|
-
|
|
93
|
-
- Declarative tool definitions — single file per tool, framework handles registration and validation
|
|
94
|
-
- Unified error handling — handlers throw, framework catches, classifies, and formats
|
|
95
|
-
- Pluggable auth: `none`, `jwt`, `oauth`
|
|
96
|
-
- Swappable storage backends: `in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`
|
|
97
|
-
- Structured logging with optional OpenTelemetry tracing
|
|
98
|
-
- STDIO and Streamable HTTP transports
|
|
79
|
+
Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.
|
|
99
80
|
|
|
100
81
|
CPSC-specific:
|
|
101
82
|
|
|
102
|
-
- Full
|
|
103
|
-
-
|
|
104
|
-
-
|
|
83
|
+
- Full client for the CPSC saferproducts.gov public recalls API — search, single-recall detail, and a recent-recalls feed
|
|
84
|
+
- Every-word matching on all nine text filters, applied over the complete result set before paging so `total_found` and `has_more` stay accurate
|
|
85
|
+
- Handles both modern 5-digit recall numbers and historical 1998–2001 records with letter suffixes
|
|
86
|
+
- Jurisdiction boundary documented in every response — flags food, vehicle, and drug recalls as out of scope before an agent misattributes them
|
|
105
87
|
|
|
106
88
|
Agent-friendly output:
|
|
107
89
|
|
|
108
|
-
-
|
|
109
|
-
- `total_found`, `offset`, `has_more`, and `truncated`
|
|
110
|
-
- `
|
|
111
|
-
- `
|
|
112
|
-
- `data_quality_notes` on every response — gaps observed in the upstream record, derived from which fields CPSC left empty rather than any judgement about the recall
|
|
90
|
+
- Provenance on every response — `source_note`, `cpsc_url`, and `(CPSC source text)` blockquote labels distinguish relayed CPSC narrative from the server's own guidance
|
|
91
|
+
- Pagination discriminators — `total_found`, `offset`, `has_more`, and `truncated` on every search/recent response so agents can tell when results are clipped and page with `offset`; each surface of a page stays within a 64,000-byte budget, and a notice gives the next offset when the budget ends a page early
|
|
92
|
+
- `data_quality_notes` on every response — gaps observed in the upstream record (missing hazard text, no product entries), derived from which fields CPSC left blank rather than any judgment call
|
|
93
|
+
- Jurisdiction note (`cpsc_jurisdiction`) on every response — lets agents route callers to the correct agency (FDA, NHTSA, USCG, EPA) when a product is out of scope
|
|
113
94
|
|
|
114
95
|
## Getting started
|
|
115
96
|
|
|
@@ -189,7 +170,7 @@ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
|
|
|
189
170
|
|
|
190
171
|
### Prerequisites
|
|
191
172
|
|
|
192
|
-
- [Bun v1.
|
|
173
|
+
- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
193
174
|
- No API key required — the CPSC public recalls API is freely accessible.
|
|
194
175
|
|
|
195
176
|
### Installation
|
|
@@ -230,7 +211,7 @@ All configuration is validated at startup via Zod schemas. Key environment varia
|
|
|
230
211
|
| `MCP_HTTP_HOST` | HTTP server host | `127.0.0.1` |
|
|
231
212
|
| `MCP_HTTP_ENDPOINT_PATH` | HTTP endpoint path | `/mcp` |
|
|
232
213
|
| `MCP_PUBLIC_URL` | Public origin for TLS-terminating reverse-proxy deployments | — |
|
|
233
|
-
| `MCP_SESSION_MODE` | Session handling: `auto`, `stateful`, or `stateless`. The
|
|
214
|
+
| `MCP_SESSION_MODE` | Session handling: `auto`, `stateful`, or `stateless`. The server declares `stateless` in `src/index.ts`; setting this overrides it. | `stateless` |
|
|
234
215
|
| `MCP_AUTH_MODE` | Authentication: `none`, `jwt`, or `oauth` | `none` |
|
|
235
216
|
| `MCP_LOG_LEVEL` | Log level (`debug`, `info`, `warning`, `error`) | `info` |
|
|
236
217
|
| `LOGS_DIR` | Directory for log files (Node.js only) | `<project-root>/logs` |
|
|
@@ -276,7 +257,7 @@ The Dockerfile defaults to HTTP transport, stateless session mode, and logs to `
|
|
|
276
257
|
| Directory | Purpose |
|
|
277
258
|
|:---|:---|
|
|
278
259
|
| `src/index.ts` | `createApp()` entry point — registers tools and inits the CPSC service |
|
|
279
|
-
| `src/mcp-server/tools` | Tool definitions (
|
|
260
|
+
| `src/mcp-server/tools` | Tool definitions (`definitions/*.tool.ts`) — search, get-recall, get-recent — plus `response-budget.ts`, the page size budget the two list tools share |
|
|
280
261
|
| `src/services/cpsc-recall` | CPSC recall service — API client, types, normalization |
|
|
281
262
|
|
|
282
263
|
## Development guide
|
|
@@ -290,7 +271,7 @@ See [`CLAUDE.md`](./CLAUDE.md) / [`AGENTS.md`](./AGENTS.md) for development guid
|
|
|
290
271
|
|
|
291
272
|
## Contributing
|
|
292
273
|
|
|
293
|
-
Issues
|
|
274
|
+
Issues are welcome. Run checks and tests before submitting:
|
|
294
275
|
|
|
295
276
|
```sh
|
|
296
277
|
bun run devcheck
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopts mcp-ts-core 0.13.6 — the server declares a stateless session posture, cpsc_search_recalls accepts 'hazard' as an alias for hazard_search, and the Bun engine floor rises to 1.4.0, which breaks on older Bun runtimes."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.1.8 — 2026-09-19
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`cpsc_search_recalls` accepts `hazard` as an alias for `hazard_search`.** `Hazard` is the upstream CPSC query parameter a caller working from the saferproducts.gov docs reaches for; the alias is not advertised in `inputSchema`.
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
|
|
15
|
+
- **`engines.bun` rises from `>=1.3.0` to `>=1.4.0`.** A consumer running Bun 1.3.x can no longer run the server.
|
|
16
|
+
- **`createApp()` declares `sessionMode: 'stateless'`** in `src/index.ts` — no tool here gates on `ctx.requestInput`, so no caller needs a session to answer a mid-handler prompt. `MCP_SESSION_MODE` still overrides the declared posture whenever it carries a meaningful value.
|
|
17
|
+
- **`tools/list`'s advertised `outputSchema` changes on two error-contract details; `inputSchema` is byte-identical.** Nullable string fields now render as `type: ["string", "null"]` instead of `anyOf: [{type:"string"},{type:"null"}]` — a semantically-equal re-rendering from the `zod` bump below. Each error-contract `reason` description now ends its `when` sentence with a period, so declared reasons no longer run into each other (mcp-ts-core 0.13.5, [#389](https://github.com/cyanheads/mcp-ts-core/issues/389)).
|
|
18
|
+
- **Tests updated for the `InvalidParams` rename** — an out-of-schema argument key now rejects as `InvalidParams` (`-32602`) rather than `ValidationError` (mcp-ts-core 0.13.2, [#416](https://github.com/cyanheads/mcp-ts-core/issues/416)).
|
|
19
|
+
- Framework skills moved from `skills/` to `framework-skills/` — Claude Code and Codex auto-load a plugin's root `skills/`, so keeping development skills there would hand them to every installing agent. Adds the `release-pr-review` skill and resyncs `scripts/`, `changelog/template.md`, and `devcheck.config.json`'s `lint` key.
|
|
20
|
+
- README condensed — an Overview section, a tighter per-tool capability reference, and the Bun 1.4.0 floor.
|
|
21
|
+
- `.claude-plugin/plugin.json` gains keywords and author contact; issue templates route reports between this repo and `mcp-ts-core` and add a security-advisory contact link.
|
|
22
|
+
- Adds `.github/workflows/codeql.yml` — the repo's only GitHub Actions workflow.
|
|
23
|
+
|
|
24
|
+
## Dependencies
|
|
25
|
+
|
|
26
|
+
- `@cyanheads/mcp-ts-core` `^0.12.3` → `^0.13.6` (13 framework releases)
|
|
27
|
+
- `zod` `^4.4.3` → `^4.6.5`
|
|
28
|
+
- `@biomejs/biome` `^2.5.10` → `^2.5.14`
|
|
29
|
+
- `@types/node` `^26.2.0` → `^26.6.1`
|
|
30
|
+
- `ignore` `^7.0.6` → `^7.0.9`
|
|
31
|
+
- `tsc-alias` `^1.9.2` → `^1.9.5`
|
|
32
|
+
- `vitest` `^4.1.11` → `^5.0.1`
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "cpsc_search_recalls now requires a criterion, matches every word of a text filter, and returns zero matches as an empty success; both list tools cap each page at 64,000 bytes, and truncated now equals has_more."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.0 — 2026-09-24
|
|
8
|
+
|
|
9
|
+
The first five Changed bullets break existing callers: error handling and paging signals on `cpsc_search_recalls` and `cpsc_get_recent` change.
|
|
10
|
+
|
|
11
|
+
## Changed
|
|
12
|
+
|
|
13
|
+
- **Zero matches on `cpsc_search_recalls` are an empty success, not the `no_results` error** ([#12](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/12)). `no_results` leaves the error contract; every success carries an `effectiveQuery` echo, and a zero-match result adds a `notice` naming which criterion to relax.
|
|
14
|
+
- **`cpsc_search_recalls` requires a search criterion** ([#11](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/11)). With no non-blank text filter and no date bound, it fails with `missing_criteria` before any upstream request; blank and whitespace-only filters count as omitted.
|
|
15
|
+
- **Text filters are capped at 500 characters** ([#18](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/18)). A longer value on any of the nine filters or the `hazard` alias is rejected as `-32602` before any upstream request; `tools/list` advertises `maxLength: 500`. The one word each filter sends to CPSC is cut to 200 URL-encoded bytes, so a 500-character value in any script stays inside CPSC's 2,048-byte query-string limit.
|
|
16
|
+
- **`truncated` equals `has_more` on both list tools** ([#9](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/9)). It no longer tracks `total_found > limit`, so final and exhausted pages report `truncated: false`; an offset past the last match returns an empty page with a `notice`.
|
|
17
|
+
- **List-tool pages stop at a 64,000-byte response budget** ([#13](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/13)). A page can return fewer than `limit` records, with `has_more: true` and a `notice` naming the offset to continue from; at least one record comes back whenever any remain.
|
|
18
|
+
- **`cpsc_get_recent` explains an empty window** in a new `notice`, suggesting a larger `days` or, at 365, `cpsc_search_recalls` date bounds ([#12](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/12)).
|
|
19
|
+
- **Advertised text describes behavior, not upstream mechanics** ([#10](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/10)). Tool descriptions, `.describe()` text, error `when`/`recovery`, and server `instructions` are rewritten; all three tools render the jurisdiction under one `CPSC jurisdiction:` label, and an upstream rejection reads `CPSC rejected the request: …`.
|
|
20
|
+
- **`cpsc_get_recall` rejects a malformed `recall_number` with both accepted forms spelled out** (`"25043"`, `"99003a"`) instead of the raw regex ([#10](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/10)).
|
|
21
|
+
- README tool reference and `docs/design.md` Superseded notes follow the new search and paging behavior; `CLAUDE.md`/`AGENTS.md` declare the gated release mode.
|
|
22
|
+
|
|
23
|
+
## Fixed
|
|
24
|
+
|
|
25
|
+
- **Multi-word text filters match every word, in any order** ([#16](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/16)). They matched only a contiguous phrase, so `title_search: "Graco crib"` found nothing; `%`, `_`, and `[…]` now match literally, and straight and curly apostrophes match each other.
|
|
26
|
+
- **Searches that map no upstream parameter include the newest recalls** ([#17](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/17)). A `hazard_search`-only search now sends `RecallDateStart=1970-01-01`, because the unfiltered CPSC collection has been observed to lag filtered requests and omit the newest recalls.
|
|
27
|
+
- **`cpsc_get_recent` header reads `(1 day)`**, not `(1 days)` ([#9](https://github.com/cyanheads/cpsc-recalls-mcp-server/issues/9)).
|
|
28
|
+
|
|
29
|
+
## Dependencies
|
|
30
|
+
|
|
31
|
+
- `@types/node` `^26.6.1` → `^26.6.2`
|
package/changelog/template.md
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
# Required. One-line GitHub Release-style headline. 350 character cap — a
|
|
8
8
|
# ceiling, not a target. Default short and scannable. Don't pad, don't stitch
|
|
9
|
-
# unrelated changes with commas/semicolons into an inventory — pick the
|
|
10
|
-
# headline
|
|
9
|
+
# unrelated changes with commas/semicolons into an inventory — pick the one
|
|
10
|
+
# headline the release is about. Quotes required: unquoted YAML treats
|
|
11
11
|
# `: ` inside the value as a key separator and fails GitHub's strict parser.
|
|
12
12
|
summary: ""
|
|
13
13
|
|
|
@@ -117,30 +117,13 @@ security: false
|
|
|
117
117
|
in that unrelated item's metadata.
|
|
118
118
|
|
|
119
119
|
TAG ANNOTATIONS — the annotated tag body renders as the GitHub Release body
|
|
120
|
-
via `gh release create --notes-from-tag`.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
Dependency bumps: ← section header
|
|
128
|
-
← blank line
|
|
129
|
-
- `@cyanheads/mcp-ts-core` ^0.9.1 → ^0.9.6 ← bullet
|
|
130
|
-
← blank line
|
|
131
|
-
Changed: ← only sections with entries
|
|
132
|
-
← blank line
|
|
133
|
-
- `format()` output includes `query` in text mode
|
|
134
|
-
← blank line
|
|
135
|
-
Added:
|
|
136
|
-
← blank line
|
|
137
|
-
- `manifest.json` scaffolded for MCPB bundle support
|
|
138
|
-
- Install badges (Claude Desktop, Cursor, VS Code)
|
|
139
|
-
← blank line
|
|
140
|
-
<N> tests pass; `bun run devcheck` clean. ← footer
|
|
141
|
-
|
|
142
|
-
Never a flat comma-separated string. Always structured markdown with
|
|
143
|
-
sections. The tag must scan well as a rendered GitHub Release page.
|
|
120
|
+
via `gh release create --notes-from-tag`. It is a condensed digest of this
|
|
121
|
+
entry, never a copy, and its format is owned by the `release-and-publish`
|
|
122
|
+
skill (step 4, "Create the annotated tag"): a short subject line without the
|
|
123
|
+
version, flat headline bullets — no Keep-a-Changelog section headers, no
|
|
124
|
+
gates line — at most one deps line, issue backlinks, and the changelog link
|
|
125
|
+
last. In release-PR mode the `git-wrapup` skill authors those bullets as the
|
|
126
|
+
PR body's `## Changes` and the tag copies them.
|
|
144
127
|
-->
|
|
145
128
|
|
|
146
129
|
## Added
|
package/dist/index.js
CHANGED
|
@@ -11,14 +11,16 @@ import { initCpscRecallService } from './services/cpsc-recall/cpsc-recall-servic
|
|
|
11
11
|
await createApp({
|
|
12
12
|
name: 'cpsc-recalls-mcp-server',
|
|
13
13
|
title: 'cpsc-recalls-mcp-server',
|
|
14
|
+
/**
|
|
15
|
+
* Every tool is a single-shot read against the CPSC API — nothing gates on
|
|
16
|
+
* `ctx.requestInput`, so no caller needs a session to answer a mid-handler prompt.
|
|
17
|
+
* `MCP_SESSION_MODE` still overrides this at deploy time.
|
|
18
|
+
*/
|
|
19
|
+
sessionMode: 'stateless',
|
|
14
20
|
tools: [cpscSearchRecalls, cpscGetRecall, cpscGetRecent],
|
|
15
21
|
resources: [],
|
|
16
22
|
prompts: [],
|
|
17
|
-
instructions: 'CPSC consumer product
|
|
18
|
-
'Use cpsc_search_recalls to find recalls by product, brand, hazard, or date. ' +
|
|
19
|
-
'Use cpsc_get_recall for full detail on a specific recall number. ' +
|
|
20
|
-
'Use cpsc_get_recent for a recent recall feed. ' +
|
|
21
|
-
'CPSC jurisdiction: consumer products only — food/drugs (FDA), vehicles/tires (NHTSA), boats (USCG), pesticides (EPA) are covered by other agencies.',
|
|
23
|
+
instructions: 'CPSC consumer product recalls from saferproducts.gov. Search with cpsc_search_recalls, which needs at least one filter (a product, brand, hazard, or other text filter, or a date bound); browse the latest recalls with cpsc_get_recent, and pass a recall number from either to cpsc_get_recall for the full record. CPSC jurisdiction: consumer products only — food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), and firearms (ATF) are covered by other agencies.',
|
|
22
24
|
setup(core) {
|
|
23
25
|
void core;
|
|
24
26
|
initCpscRecallService();
|
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,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,yBAAyB;IAChC,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,
|
|
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,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,yBAAyB;IAChC;;;;OAIG;IACH,WAAW,EAAE,WAAW;IACxB,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC;IACxD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,seAAse;IACxe,KAAK,CAAC,IAAI;QACR,KAAK,IAAI,CAAC;QACV,qBAAqB,EAAE,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -46,14 +46,14 @@ export declare const cpscGetRecall: import("@cyanheads/mcp-ts-core").ToolDefinit
|
|
|
46
46
|
}, {
|
|
47
47
|
readonly reason: "upstream_error";
|
|
48
48
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
49
|
-
readonly when: "The saferproducts.gov
|
|
50
|
-
readonly recovery: "The CPSC
|
|
49
|
+
readonly when: "The CPSC recall service (saferproducts.gov) was unavailable, timed out, or sent an unreadable response";
|
|
50
|
+
readonly recovery: "The CPSC recall service is occasionally unavailable. Retry in a few seconds.";
|
|
51
51
|
readonly retryable: true;
|
|
52
52
|
}, {
|
|
53
53
|
readonly reason: "upstream_rejected";
|
|
54
54
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
55
|
-
readonly when: "
|
|
56
|
-
readonly recovery: "Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then confirm the recall number with cpsc_search_recalls.";
|
|
55
|
+
readonly when: "CPSC rejected the lookup instead of returning a recall, and it rejects the same request every time";
|
|
56
|
+
readonly recovery: "Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then confirm the recall number with cpsc_search_recalls or cpsc_get_recent.";
|
|
57
57
|
readonly retryable: false;
|
|
58
58
|
}], undefined>;
|
|
59
59
|
//# sourceMappingURL=cpsc-get-recall.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-get-recall.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recall.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":"cpsc-get-recall.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recall.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAgC3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8WxB,CAAC"}
|
|
@@ -6,12 +6,9 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
6
6
|
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getCpscRecallService } from '../../../services/cpsc-recall/cpsc-recall-service.js';
|
|
8
8
|
/** Static jurisdiction note included in every response. */
|
|
9
|
-
const JURISDICTION = 'CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. '
|
|
10
|
-
'Does NOT cover: food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), firearms (ATF).';
|
|
9
|
+
const JURISDICTION = 'CPSC covers consumer products — toys, electronics, furniture, appliances, tools, clothing. Does NOT cover: food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), firearms (ATF).';
|
|
11
10
|
/** Static provenance caveat included in every response. */
|
|
12
|
-
const SOURCE_NOTE = 'Recall fields are relayed verbatim from the CPSC record and are neither edited nor verified by this server. '
|
|
13
|
-
'CPSC records occasionally carry missing or inconsistent text. ' +
|
|
14
|
-
'Check cpsc_url before acting on a recall for a consumer-facing decision.';
|
|
11
|
+
const SOURCE_NOTE = 'Recall fields are relayed verbatim from the CPSC record and are neither edited nor verified by this server. CPSC records occasionally carry missing or inconsistent text. Check cpsc_url before acting on a recall for a consumer-facing decision.';
|
|
15
12
|
/** Rendered in place of an upstream narrative field CPSC left null or empty. */
|
|
16
13
|
const ABSENT_TEXT = '_Not provided by CPSC._';
|
|
17
14
|
/** Absence placeholder for fields a consumer can still resolve on the CPSC page. */
|
|
@@ -33,19 +30,13 @@ function asSourceText(text) {
|
|
|
33
30
|
}
|
|
34
31
|
export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
35
32
|
title: 'Get CPSC Recall Detail',
|
|
36
|
-
description: '
|
|
37
|
-
'Returns the complete record: hazard description, remedy instructions, all product variants, ' +
|
|
38
|
-
'incident/injury reports, images, and the official CPSC recall page URL. ' +
|
|
39
|
-
'Use after cpsc_search_recalls or cpsc_get_recent to get the full picture on a specific recall. ' +
|
|
40
|
-
'CPSC jurisdiction: consumer products only — food, vehicles, drugs, and pesticides are covered by other agencies.',
|
|
33
|
+
description: 'Fetch the full record for one CPSC recall by recall number: hazard description, remedy instructions, every product variant, UPCs, incident and injury reports, images, and the official CPSC recall page URL. Get a recall number from cpsc_search_recalls or cpsc_get_recent. CPSC jurisdiction: consumer products only — food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), and firearms (ATF) are covered by other agencies.',
|
|
41
34
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
42
35
|
input: z.object({
|
|
43
36
|
recall_number: z
|
|
44
37
|
.string()
|
|
45
|
-
.regex(/^\d{5}([a-d])
|
|
46
|
-
.describe('CPSC recall number
|
|
47
|
-
'Historical records from 1998–2001 may have a letter suffix a–d, e.g. "99003a". ' +
|
|
48
|
-
'Obtain from cpsc_search_recalls results.'),
|
|
38
|
+
.regex(/^\d{5}([a-d])?$/, 'A CPSC recall number is 5 digits, e.g. "25043", or 5 digits plus a letter a–d for 1998–2001 records, e.g. "99003a". Get one from cpsc_search_recalls or cpsc_get_recent.')
|
|
39
|
+
.describe('CPSC recall number: 5 digits for 2002–present records, e.g. "25043", or 5 digits plus a letter a–d for 1998–2001 records, e.g. "99003a". Get one from cpsc_search_recalls or cpsc_get_recent results.'),
|
|
49
40
|
}),
|
|
50
41
|
output: z.object({
|
|
51
42
|
recall_number: z.string().describe('Recall identifier.'),
|
|
@@ -55,9 +46,7 @@ export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
|
55
46
|
description: z
|
|
56
47
|
.string()
|
|
57
48
|
.nullable()
|
|
58
|
-
.describe('Full recall description including product identification details. '
|
|
59
|
-
'Model numbers are typically embedded here, not in a structured field. ' +
|
|
60
|
-
'Null when CPSC published the record without a description — rare, but a genuine record can still be complete otherwise.'),
|
|
49
|
+
.describe('Full recall description including product identification details. Model numbers are typically embedded here, not in a structured field. Null when CPSC published the record without a description — rare, but a genuine record can still be complete otherwise.'),
|
|
61
50
|
cpsc_url: z
|
|
62
51
|
.string()
|
|
63
52
|
.describe('Official CPSC recall page — authoritative source for consumers.'),
|
|
@@ -72,9 +61,7 @@ export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
|
72
61
|
.describe('Hazards — read this first.'),
|
|
73
62
|
remedy_options: z
|
|
74
63
|
.array(z.string().describe('Remedy type.'))
|
|
75
|
-
.describe('Remedy types available: Refund, Repair, Replace, New Instructions, Dispose, Label, No Remedy Available, Inspect. '
|
|
76
|
-
'Often empty — CPSC classified the remedy on fewer than half its records. Read remedy_instructions when this is empty, ' +
|
|
77
|
-
'and fall back to cpsc_url when that is empty too, rather than reporting that no remedy exists.'),
|
|
64
|
+
.describe('Remedy types available: Refund, Repair, Replace, New Instructions, Dispose, Label, No Remedy Available, Inspect. Often empty — CPSC classified the remedy on fewer than half its records. Read remedy_instructions when this is empty, and fall back to cpsc_url when that is empty too, rather than reporting that no remedy exists.'),
|
|
78
65
|
remedy_instructions: z
|
|
79
66
|
.string()
|
|
80
67
|
.describe('Full remedy instructions — exactly what a consumer should do and how to claim.'),
|
|
@@ -87,13 +74,10 @@ export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
|
87
74
|
.describe('Estimated number of units recalled, e.g. "About 2,500".'),
|
|
88
75
|
})
|
|
89
76
|
.describe('A product covered by this recall.'))
|
|
90
|
-
.describe('Products covered. A recall may include multiple products. '
|
|
91
|
-
'Note: model numbers are often in the description text, not a structured field.'),
|
|
77
|
+
.describe('Products covered. A recall may include multiple products. Model numbers are often in the description text, not a structured field.'),
|
|
92
78
|
upcs: z
|
|
93
79
|
.array(z.string().describe('UPC code.'))
|
|
94
|
-
.describe('UPC codes for this recall (sparse — ~4% of records have UPCs). '
|
|
95
|
-
'UPCs are stored at the recall level in the API, not per-product; ' +
|
|
96
|
-
'when the recall covers multiple products, UPC-to-product attribution is ambiguous.'),
|
|
80
|
+
.describe('UPC codes for this recall (sparse — ~4% of records have UPCs). CPSC lists UPCs for the recall as a whole, not per product, so on a recall covering several products a UPC cannot be tied to one of them.'),
|
|
97
81
|
injuries: z
|
|
98
82
|
.string()
|
|
99
83
|
.describe('Injury and incident report narrative, e.g. "None reported" or incident count.'),
|
|
@@ -122,13 +106,11 @@ export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
|
122
106
|
.array(z.string().describe('URL of coordinated recall by another agency.'))
|
|
123
107
|
.describe('URLs of coordinated recalls by other agencies (e.g., Canada Health).'),
|
|
124
108
|
data_quality_notes: z
|
|
125
|
-
.array(z.string().describe('One gap found in the
|
|
126
|
-
.describe('Gaps this server observed in the
|
|
127
|
-
'Derived from which fields CPSC left empty, not from any judgement about the recall itself. Empty when nothing is missing.'),
|
|
109
|
+
.array(z.string().describe('One gap found in the CPSC record.'))
|
|
110
|
+
.describe('Gaps this server observed in the CPSC record — absent description, absent hazard text, absent product entries. Derived from which fields CPSC left empty, not from any judgement about the recall itself. Empty when nothing is missing.'),
|
|
128
111
|
cpsc_jurisdiction: z
|
|
129
112
|
.string()
|
|
130
|
-
.describe('CPSC covers
|
|
131
|
-
'Does NOT cover: food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), firearms (ATF).'),
|
|
113
|
+
.describe('Which products CPSC covers and which agencies cover the rest — food/drugs (FDA), motor vehicles/tires (NHTSA), boats (USCG), pesticides (EPA), firearms (ATF).'),
|
|
132
114
|
source_note: z
|
|
133
115
|
.string()
|
|
134
116
|
.describe('Provenance caveat: recall fields are relayed from CPSC unedited and unverified; check cpsc_url before a consumer-facing decision.'),
|
|
@@ -143,15 +125,15 @@ export const cpscGetRecall = tool('cpsc_get_recall', {
|
|
|
143
125
|
{
|
|
144
126
|
reason: 'upstream_error',
|
|
145
127
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
146
|
-
when: 'The saferproducts.gov
|
|
147
|
-
recovery: 'The CPSC
|
|
128
|
+
when: 'The CPSC recall service (saferproducts.gov) was unavailable, timed out, or sent an unreadable response',
|
|
129
|
+
recovery: 'The CPSC recall service is occasionally unavailable. Retry in a few seconds.',
|
|
148
130
|
retryable: true,
|
|
149
131
|
},
|
|
150
132
|
{
|
|
151
133
|
reason: 'upstream_rejected',
|
|
152
134
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
153
|
-
when: '
|
|
154
|
-
recovery: 'Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then confirm the recall number with cpsc_search_recalls.',
|
|
135
|
+
when: 'CPSC rejected the lookup instead of returning a recall, and it rejects the same request every time',
|
|
136
|
+
recovery: 'Do not retry this request unchanged — it fails deterministically. Read the message for what CPSC rejected, then confirm the recall number with cpsc_search_recalls or cpsc_get_recent.',
|
|
155
137
|
retryable: false,
|
|
156
138
|
},
|
|
157
139
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-get-recall.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recall.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cpsc-get-recall.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-get-recall.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,14 +34,16 @@ export declare const cpscGetRecent: import("@cyanheads/mcp-ts-core").ToolDefinit
|
|
|
34
34
|
}, z.core.$strip>, readonly [{
|
|
35
35
|
readonly reason: "upstream_error";
|
|
36
36
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
37
|
-
readonly when: "The saferproducts.gov
|
|
38
|
-
readonly recovery: "The CPSC
|
|
37
|
+
readonly when: "The CPSC recall service (saferproducts.gov) was unavailable, timed out, or sent an unreadable response";
|
|
38
|
+
readonly recovery: "The CPSC recall service is occasionally unavailable. Retry in a few seconds.";
|
|
39
39
|
readonly retryable: true;
|
|
40
40
|
}, {
|
|
41
41
|
readonly reason: "upstream_rejected";
|
|
42
42
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
43
|
-
readonly when: "
|
|
43
|
+
readonly when: "CPSC rejected the request instead of returning recalls, and it rejects the same request every time";
|
|
44
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
45
|
readonly retryable: false;
|
|
46
|
-
}],
|
|
46
|
+
}], {
|
|
47
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}>;
|
|
47
49
|
//# 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,EAAY,MAAM,+BAA+B,CAAC;
|
|
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;AAmI3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkMxB,CAAC"}
|