@cyanheads/protein-mcp-server 0.5.3 → 0.7.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 +5 -5
- package/CLAUDE.md +5 -5
- package/README.md +8 -6
- package/changelog/0.6.x/0.6.0.md +34 -0
- package/changelog/0.7.x/0.7.0.md +25 -0
- package/dist/mcp-server/resources/definitions/pdb-summary.resource.d.ts +5 -3
- package/dist/mcp-server/resources/definitions/pdb-summary.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/pdb-summary.resource.js +8 -22
- package/dist/mcp-server/resources/definitions/pdb-summary.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.d.ts +40 -1
- package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.js +81 -3
- package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.d.ts +3 -7
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js +43 -21
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-structures.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-structures.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/compare-structures.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-annotations.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/get-annotations.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/get-annotations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-structure.tool.d.ts +22 -3
- package/dist/mcp-server/tools/definitions/get-structure.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-structure.tool.js +115 -36
- package/dist/mcp-server/tools/definitions/get-structure.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.d.ts +5 -0
- package/dist/mcp-server/tools/definitions/search-structures.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.js +45 -5
- package/dist/mcp-server/tools/definitions/search-structures.tool.js.map +1 -1
- package/dist/services/rcsb/facets.d.ts +20 -1
- package/dist/services/rcsb/facets.d.ts.map +1 -1
- package/dist/services/rcsb/facets.js +36 -3
- package/dist/services/rcsb/facets.js.map +1 -1
- package/dist/services/rcsb/rcsb-service.d.ts.map +1 -1
- package/dist/services/rcsb/rcsb-service.js +10 -3
- package/dist/services/rcsb/rcsb-service.js.map +1 -1
- package/dist/services/rcsb/types.d.ts +11 -2
- package/dist/services/rcsb/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** protein-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.
|
|
4
|
+
**Version:** 0.7.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.7`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.4
|
|
8
|
+
**Zod:** ^4.5.4
|
|
9
9
|
**TypeScript:** ^7.0.2
|
|
10
10
|
|
|
11
11
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
@@ -204,7 +204,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
204
204
|
|
|
205
205
|
Handlers throw — the framework catches, classifies, and formats.
|
|
206
206
|
|
|
207
|
-
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`) bubble freely and don't need declaring.
|
|
207
|
+
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`, `RequestCancelled`) bubble freely and don't need declaring.
|
|
208
208
|
|
|
209
209
|
```ts
|
|
210
210
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
@@ -386,7 +386,7 @@ security: false # optional — true ONLY for a source
|
|
|
386
386
|
|
|
387
387
|
`agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
|
|
388
388
|
|
|
389
|
-
**Section order
|
|
389
|
+
**Section order:** the Keep a Changelog sequence — Added, Changed, Deprecated, Removed, Fixed, Security — then `Dependencies` last. Include only sections with entries — don't ship empty headers.
|
|
390
390
|
|
|
391
391
|
**Tag annotations** render as GitHub Release bodies via `--notes-from-tag`. They must be structured markdown — never a flat comma-separated string. Subject omits the version number (GitHub prepends it). See `changelog/template.md` for the full format reference.
|
|
392
392
|
|
package/CLAUDE.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** protein-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.
|
|
4
|
+
**Version:** 0.7.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.7`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.4
|
|
8
|
+
**Zod:** ^4.5.4
|
|
9
9
|
**TypeScript:** ^7.0.2
|
|
10
10
|
|
|
11
11
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
@@ -204,7 +204,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
204
204
|
|
|
205
205
|
Handlers throw — the framework catches, classifies, and formats.
|
|
206
206
|
|
|
207
|
-
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`) bubble freely and don't need declaring.
|
|
207
|
+
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`, `RequestCancelled`) bubble freely and don't need declaring.
|
|
208
208
|
|
|
209
209
|
```ts
|
|
210
210
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
@@ -386,7 +386,7 @@ security: false # optional — true ONLY for a source
|
|
|
386
386
|
|
|
387
387
|
`agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
|
|
388
388
|
|
|
389
|
-
**Section order
|
|
389
|
+
**Section order:** the Keep a Changelog sequence — Added, Changed, Deprecated, Removed, Fixed, Security — then `Dependencies` last. Include only sections with entries — don't ship empty headers.
|
|
390
390
|
|
|
391
391
|
**Tag annotations** render as GitHub Release bodies via `--notes-from-tag`. They must be structured markdown — never a flat comma-separated string. Subject omits the version number (GitHub prepends it). See `changelog/template.md` for the full format reference.
|
|
392
392
|
|
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/protein-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/protein-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -49,7 +49,7 @@ Federated search across experimental (PDB) and predicted (computed-model) struct
|
|
|
49
49
|
- `content_type` scopes the search to `experimental`, `predicted`, or `all` — the default `all` is a genuine union of both universes, so computed models appear alongside PDB entries
|
|
50
50
|
- Every hit names its `source`; experimental sequence hits expose a chainable PDB entry `id` plus the matched polymer `entityId`, with title, method, resolution, and organism enrichment, while computed models retain their complete model ID and parsed UniProt accession
|
|
51
51
|
- `start` and `limit` page through ranked results; `nextStart` is returned while another page remains
|
|
52
|
-
- Optional `facets` return a method / organism / release-year breakdown alongside the hits at no extra call, each reporting how many matches carry no value for that dimension; each dimension may be listed once
|
|
52
|
+
- Optional `facets` return a method / organism / release-year breakdown alongside the hits at no extra call, each reporting how many matches carry no value for that dimension; each dimension may be listed once. A dimension whose buckets hit the server-side cap is named in `notice`, with `protein_analyze_collection` and a larger `bucket_limit` as the route to the long tail (a sequence search gets a narrowing step instead, since that tool has no sequence input)
|
|
53
53
|
- Chain hit IDs straight into `protein_get_structure`
|
|
54
54
|
|
|
55
55
|
---
|
|
@@ -62,7 +62,9 @@ Fetch structures with metadata and coordinate-file URLs, resolving across provid
|
|
|
62
62
|
- `source: predicted` takes UniProt accessions and returns the AlphaFold model with pLDDT/PAE confidence
|
|
63
63
|
- `source: best_available` takes UniProt accessions and returns the top federated model (experimental if one exists, else the best prediction)
|
|
64
64
|
- Per-ID partial success — unresolved IDs are listed in `failed[]`, not a batch-level error
|
|
65
|
-
- `
|
|
65
|
+
- Batch cap disclosure — `requested` is the original request length and `processed` the count after the cap, so IDs dropped beyond the cap are visible rather than silently discarded; every advisory (cap, partial failure, coordinate overflow, failed inlining) is joined into one `notice`
|
|
66
|
+
- Records served by the RCSB entry endpoint also carry `polymerEntities` (with both `authAsymIds` and `labelAsymIds`), `ligands`, `molecularWeight`, and `releaseDate`
|
|
67
|
+
- `include_coords` inlines coordinate content, subject to the response budget: a batch over budget returns a per-structure size outline you can re-call with `sections: [ids]`, and a single file over budget is withheld with a pointer to its `coordinateUrls` (a `sections` re-call would return the same bytes). Withheld content never appears on either surface
|
|
66
68
|
- Every response carries an `attribution` block naming the upstream data licenses and citations (see [Upstream data licensing](#upstream-data-licensing))
|
|
67
69
|
|
|
68
70
|
---
|
|
@@ -114,9 +116,9 @@ Profile the PDB into distributions and trends over an optional scoping query —
|
|
|
114
116
|
|
|
115
117
|
- Group by `method`, `organism`, `polymer_type`, `resolution`, `release_year`, or `molecular_weight`
|
|
116
118
|
- One `group_by` dimension for a breakdown, or two distinct dimensions for a cross-tab (the first nests the second); a repeated dimension is rejected
|
|
117
|
-
- `interval` sets the bin width for value
|
|
119
|
+
- `interval` sets the bin width for a value histogram (a number, for `resolution` or `molecular_weight`) or the period for a date histogram (`year` — the only period RCSB accepts). It applies to whichever requested `group_by` dimension can consume that value type, primary or nested child, so `["method", "resolution"]` bins its nested `resolution` child; when both dimensions can consume it the primary takes it and the child keeps its default, and when neither can the call is rejected rather than silently ignoring the override
|
|
118
120
|
- Scope with a free-text `query`, `organism`, `method`, or `max_resolution`; `content_type` selects the structure universe
|
|
119
|
-
- `bucket_limit` caps buckets per dimension level, not per response — a cross-tab applies it separately to the parent dimension and to the nested child inside each parent bucket, so up to `bucket_limit × (1 + bucket_limit)` buckets come back. Each level flags its own truncation, and `bucketsReturned` gives the realized total
|
|
121
|
+
- `bucket_limit` caps buckets per dimension level, not per response — a cross-tab applies it separately to the parent dimension and to the nested child inside each parent bucket, so up to `bucket_limit × (1 + bucket_limit)` buckets come back. Each level flags its own truncation, `notice` names every capped position (the top-level dimension and each nested child, with how many parent buckets it was capped under), and `bucketsReturned` gives the realized total
|
|
120
122
|
- Every dimension reports `missingValueCount` — matches in scope carrying no value for that attribute, which therefore fall in no bucket (a `resolution` breakdown does not cover NMR entries, and neither `method` nor `resolution` covers computed models)
|
|
121
123
|
|
|
122
124
|
---
|
|
@@ -136,7 +138,7 @@ Sequence and functional annotation for a protein.
|
|
|
136
138
|
|
|
137
139
|
| Type | Name | Description |
|
|
138
140
|
|:---|:---|:---|
|
|
139
|
-
| Resource | `pdb://{entry_id}` | Experimental structure summary for a PDB entry — title, method, resolution, organism,
|
|
141
|
+
| Resource | `pdb://{entry_id}` | Experimental structure summary for a PDB entry — title, method, resolution, organism, bound ligands, and per-entity chain IDs in both the author (`authAsymIds`) and mmCIF label (`labelAsymIds`) namespaces. |
|
|
140
142
|
| Resource | `af://{uniprot}` | Predicted-structure summary for a UniProt accession from AlphaFold DB — mean pLDDT, confidence-band fractions, model URLs, and version. |
|
|
141
143
|
|
|
142
144
|
All resource data is also reachable via tools — `pdb://{entry_id}` mirrors `protein_get_structure` for `source: experimental`, and `af://{uniprot}` mirrors it for `source: predicted`. Many MCP clients are tool-only and don't surface resources; the summaries remain reachable through the tools.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "protein_analyze_collection's truncation notice covers nested cross-tab children and empty scopes, interval routes to whichever group_by dimension can consume it and is narrowed to RCSB's supported values, and protein_search_structures rejects sequence-only thresholds and surfaces capped-facet recovery guidance."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.6.0 — 2026-09-08
|
|
8
|
+
|
|
9
|
+
## Changed
|
|
10
|
+
|
|
11
|
+
- **`protein_analyze_collection` truncation notice** names every capped dimension position — the top-level dimension and each nested cross-tab child — instead of only the first one `Array.prototype.find` happened to reach; a cross-tab can cap a child even when its parent fits under the cap ([#37](https://github.com/cyanheads/protein-mcp-server/issues/37)).
|
|
12
|
+
- **`interval`** applies to whichever requested `group_by` dimension can consume it — primary or nested child — instead of the primary position only; a numeric width binds to `resolution`/`molecular_weight`, `"year"` binds to `release_year` ([#51](https://github.com/cyanheads/protein-mcp-server/issues/51)).
|
|
13
|
+
- **`interval`'s date-histogram arm is narrowed to `"year"`** — the only period RCSB's Search API accepts. `month` and `quarter` previously reached RCSB and failed there as an unclassified upstream error rather than a schema rejection ([#58](https://github.com/cyanheads/protein-mcp-server/issues/58)).
|
|
14
|
+
|
|
15
|
+
## Removed
|
|
16
|
+
|
|
17
|
+
- **`unknown_dimension` error reason** on `protein_analyze_collection` — no reachable input hit its throw site; `group_by`'s enum already rejects an invalid dimension before the handler runs ([#47](https://github.com/cyanheads/protein-mcp-server/issues/47)).
|
|
18
|
+
- **`shown` and `cap` output fields** on `protein_analyze_collection` — redundant with the cap already named in `notice` ([#37](https://github.com/cyanheads/protein-mcp-server/issues/37)).
|
|
19
|
+
|
|
20
|
+
## Fixed
|
|
21
|
+
|
|
22
|
+
- **Zero-match scope** on `protein_analyze_collection` now emits a `notice` explaining every requested dimension came back empty, instead of a bare success with no explanation ([#54](https://github.com/cyanheads/protein-mcp-server/issues/54)).
|
|
23
|
+
- **`protein_search_structures`** rejects `min_identity`/`max_evalue` supplied without `sequence` via a new `sequence_modifier_without_sequence` reason, instead of silently running the request unfiltered ([#56](https://github.com/cyanheads/protein-mcp-server/issues/56)).
|
|
24
|
+
- **`protein_search_structures`** names capped facet dimensions in `notice` with a route to the long tail — `protein_analyze_collection` with a larger `bucket_limit`, or narrowing the request when the search used `sequence` ([#52](https://github.com/cyanheads/protein-mcp-server/issues/52)).
|
|
25
|
+
|
|
26
|
+
## Dependencies
|
|
27
|
+
|
|
28
|
+
- `@cyanheads/mcp-ts-core` ^0.12.3 → ^0.12.7
|
|
29
|
+
- `zod` ^4.4.3 → ^4.5.4
|
|
30
|
+
- `@biomejs/biome` 2.5.10 → 2.5.12
|
|
31
|
+
- `@types/node` 26.2.0 → 26.4.1
|
|
32
|
+
- `ignore` ^7.0.6 → ^7.0.8
|
|
33
|
+
- `tsc-alias` ^1.9.2 → ^1.9.4
|
|
34
|
+
- `vitest` ^4.1.11 → ^5.0.0
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "protein_get_structure exposes per-entity authAsymIds/labelAsymIds chain namespaces plus entry detail (ligands, molecular weight, release date), accumulates every advisory instead of overwriting, and gates the coordinate overflow budget on a single oversized file too; pdb://{entry_id}'s polymerEntities[].chains is renamed to authAsymIds."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.7.0 — 2026-09-08
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`protein_get_structure`** and **`pdb://{entry_id}`** expose per-polymer-entity `authAsymIds` (`auth_asym_id`) and `labelAsymIds` (`label_asym_id`) — the two chain namespaces are unrelated by any transformation and each feeds a different tool parameter ([#45](https://github.com/cyanheads/protein-mcp-server/issues/45)).
|
|
12
|
+
- **`protein_get_structure`** experimental records now also carry `polymerEntities`, `ligands`, `molecularWeight`, and `releaseDate`, matching `pdb://{entry_id}` for the same entry ([#45](https://github.com/cyanheads/protein-mcp-server/issues/45)).
|
|
13
|
+
- **`protein_get_structure`** enrichment gains a `processed` field — the ID count after the batch cap — alongside `requested` ([#43](https://github.com/cyanheads/protein-mcp-server/issues/43)).
|
|
14
|
+
|
|
15
|
+
## Changed
|
|
16
|
+
|
|
17
|
+
- **`pdb://{entry_id}`'s `polymerEntities[].chains`** is renamed to `authAsymIds`; `protein_get_annotations`' `chain` description and its `chain_not_found` recovery hint now point at `authAsymIds` ([#45](https://github.com/cyanheads/protein-mcp-server/issues/45)).
|
|
18
|
+
- **`protein_get_structure`'s `requested`** now reports the original `input.ids.length`, not the post-cap count — a call over the batch cap previously reported `requested` equal to the capped `processed` value ([#43](https://github.com/cyanheads/protein-mcp-server/issues/43)).
|
|
19
|
+
- **`protein_compare_structures`'** `chain` description now names `label_asym_id` and points at `polymerEntities[].labelAsymIds`, distinguishing it from the author-chain namespace `protein_get_annotations.chain` takes ([#45](https://github.com/cyanheads/protein-mcp-server/issues/45)).
|
|
20
|
+
|
|
21
|
+
## Fixed
|
|
22
|
+
|
|
23
|
+
- **`protein_get_structure`** no longer loses the batch-cap advisory when a partial failure or coordinate overflow follows it — every applicable advisory (cap, partial failure, overflow, failed inlining) now accumulates into one `notice` instead of the last write winning ([#43](https://github.com/cyanheads/protein-mcp-server/issues/43)).
|
|
24
|
+
- **`protein_get_structure`'s coordinate-inlining budget** now also gates a single requested file — previously only a batch of 2+ triggered the overflow guard, so one oversized file (e.g. `4HHB.cif` at 772 KB) inlined whole on `structuredContent` while `format()` silently truncated it to a 2,000-byte prefix ([#42](https://github.com/cyanheads/protein-mcp-server/issues/42)).
|
|
25
|
+
- **`protein_get_structure`** now names the structure ID when its coordinate fetch fails, instead of returning a response indistinguishable from one where coordinates were never requested ([#42](https://github.com/cyanheads/protein-mcp-server/issues/42)).
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview pdb://{entry_id} — experimental structure summary (title, method,
|
|
3
|
-
* resolution, organism, ligands,
|
|
4
|
-
*
|
|
3
|
+
* resolution, organism, ligands, and per-entity chain IDs in both the author and
|
|
4
|
+
* mmCIF label namespaces). The injectable-context twin of protein_get_structure
|
|
5
|
+
* for source: experimental.
|
|
5
6
|
* @module mcp-server/resources/definitions/pdb-summary.resource
|
|
6
7
|
*/
|
|
7
8
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -19,7 +20,8 @@ export declare const pdbSummaryResource: import("@cyanheads/mcp-ts-core").Resour
|
|
|
19
20
|
entityId: z.ZodString;
|
|
20
21
|
description: z.ZodOptional<z.ZodString>;
|
|
21
22
|
organism: z.ZodOptional<z.ZodString>;
|
|
22
|
-
|
|
23
|
+
authAsymIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
|
+
labelAsymIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
23
25
|
sequenceLength: z.ZodOptional<z.ZodNumber>;
|
|
24
26
|
}, z.core.$strip>>;
|
|
25
27
|
ligands: z.ZodArray<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdb-summary.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pdb-summary.resource.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pdb-summary.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pdb-summary.resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKrD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;6BA6C7B,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview pdb://{entry_id} — experimental structure summary (title, method,
|
|
3
|
-
* resolution, organism, ligands,
|
|
4
|
-
*
|
|
3
|
+
* resolution, organism, ligands, and per-entity chain IDs in both the author and
|
|
4
|
+
* mmCIF label namespaces). The injectable-context twin of protein_get_structure
|
|
5
|
+
* for source: experimental.
|
|
5
6
|
* @module mcp-server/resources/definitions/pdb-summary.resource
|
|
6
7
|
*/
|
|
7
8
|
import { resource, z } from '@cyanheads/mcp-ts-core';
|
|
8
9
|
import { notFound } from '@cyanheads/mcp-ts-core/errors';
|
|
10
|
+
import { ligandSchema, polymerEntitySchema } from '../../tools/definitions/_schemas.js';
|
|
9
11
|
import { getRcsbService } from '../../../services/rcsb/rcsb-service.js';
|
|
10
12
|
export const pdbSummaryResource = resource('pdb://{entry_id}', {
|
|
11
13
|
name: 'pdb-structure-summary',
|
|
12
14
|
title: 'PDB structure summary',
|
|
13
|
-
description: 'Experimental structure summary for a PDB entry: title, method, resolution, organism,
|
|
15
|
+
description: 'Experimental structure summary for a PDB entry: title, method, resolution, organism, bound ligands, and per-entity chain IDs in both the author (auth_asym_id) and mmCIF label (label_asym_id) namespaces.',
|
|
14
16
|
mimeType: 'application/json',
|
|
15
17
|
params: z.object({
|
|
16
18
|
entry_id: z.string().describe('PDB entry ID (e.g. 4HHB).'),
|
|
@@ -24,25 +26,9 @@ export const pdbSummaryResource = resource('pdb://{entry_id}', {
|
|
|
24
26
|
releaseDate: z.string().optional().describe('Initial release date (ISO 8601).'),
|
|
25
27
|
organisms: z.array(z.string()).describe('Source organisms.'),
|
|
26
28
|
polymerEntities: z
|
|
27
|
-
.array(
|
|
28
|
-
.
|
|
29
|
-
|
|
30
|
-
description: z.string().optional().describe('Entity description.'),
|
|
31
|
-
organism: z.string().optional().describe('Source organism.'),
|
|
32
|
-
chains: z.array(z.string()).optional().describe('Author chain IDs.'),
|
|
33
|
-
sequenceLength: z.number().optional().describe('Residue count.'),
|
|
34
|
-
})
|
|
35
|
-
.describe('A modeled polymer entity (chain group).'))
|
|
36
|
-
.describe('Modeled polymer entities.'),
|
|
37
|
-
ligands: z
|
|
38
|
-
.array(z
|
|
39
|
-
.object({
|
|
40
|
-
compId: z.string().describe('Chemical component ID.'),
|
|
41
|
-
name: z.string().optional().describe('Chemical name.'),
|
|
42
|
-
formula: z.string().optional().describe('Molecular formula.'),
|
|
43
|
-
})
|
|
44
|
-
.describe('A bound ligand (non-polymer chemical component).'))
|
|
45
|
-
.describe('Bound ligands.'),
|
|
29
|
+
.array(polymerEntitySchema)
|
|
30
|
+
.describe('Modeled polymer entities, each carrying both chain namespaces — authAsymIds for protein_get_annotations, labelAsymIds for protein_compare_structures.'),
|
|
31
|
+
ligands: z.array(ligandSchema).describe('Bound ligands.'),
|
|
46
32
|
}),
|
|
47
33
|
async handler(params, ctx) {
|
|
48
34
|
const [meta] = await getRcsbService().getEntries([params.entry_id], ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdb-summary.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pdb-summary.resource.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pdb-summary.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/pdb-summary.resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* cross-tab the facet engine produces; the flat variant drops the child position
|
|
7
7
|
* for the tool that requests single-dimension breakdowns only. Every dimension
|
|
8
8
|
* position also reports its coverage gap, so buckets that sum to less than the
|
|
9
|
-
* stated total say so.
|
|
9
|
+
* stated total say so. Also holds the entry-level polymer-entity and ligand
|
|
10
|
+
* schemas shared by `protein_get_structure` and the `pdb://{entry_id}` resource,
|
|
11
|
+
* so tool and resource representations of the same record stay identical.
|
|
10
12
|
* @module mcp-server/tools/definitions/_schemas
|
|
11
13
|
*/
|
|
12
14
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -91,6 +93,21 @@ export declare function renderFacets(facets: FacetDimensionOutput[]): string[];
|
|
|
91
93
|
* report it, and quantifying a 100% gap on top adds nothing.
|
|
92
94
|
*/
|
|
93
95
|
export declare function coverageNotices(facets: FacetDimensionOutput[], total: number): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Advisory fragments for the dimension positions the bucket cap sliced, ready to
|
|
98
|
+
* join into the shared `notice` field alongside a caller's other advisories.
|
|
99
|
+
*
|
|
100
|
+
* Walks the same positions as {@link coverageNotices}: the top-level dimension,
|
|
101
|
+
* then each distinct child dimension aggregated across the parent buckets that
|
|
102
|
+
* carry it. A cross-tab caps each position independently, so the parent can fit
|
|
103
|
+
* under the cap while a child does not — and a child can be capped under some
|
|
104
|
+
* parent buckets and not others, which is what the per-position counts report.
|
|
105
|
+
* A single fragment naming one dimension would misstate all three cases.
|
|
106
|
+
*
|
|
107
|
+
* The list closes with the cap itself and the way past it, so a caller reading
|
|
108
|
+
* only `notice` has the recovery without re-deriving it per position.
|
|
109
|
+
*/
|
|
110
|
+
export declare function truncationNotices(facets: FacetDimensionOutput[], cap: number): string[];
|
|
94
111
|
/** License + citation for one upstream data source that contributed to a response. */
|
|
95
112
|
export declare const attributionSchema: z.ZodObject<{
|
|
96
113
|
source: z.ZodString;
|
|
@@ -101,4 +118,26 @@ export declare const attributionSchema: z.ZodObject<{
|
|
|
101
118
|
export type AttributionOutput = z.infer<typeof attributionSchema>;
|
|
102
119
|
/** Render an attribution list to one compact markdown line per source for `format()` parity. */
|
|
103
120
|
export declare function renderAttribution(attributions: AttributionOutput[]): string[];
|
|
121
|
+
/**
|
|
122
|
+
* One modeled polymer entity (chain group) of a PDB entry. Shared by
|
|
123
|
+
* `protein_get_structure` and the `pdb://{entry_id}` resource so the tool and its
|
|
124
|
+
* resource twin cannot drift on how the two chain namespaces are named or
|
|
125
|
+
* described. The `label_asym_id` / `auth_asym_id` split is load-bearing: the two
|
|
126
|
+
* are unrelated by any transformation, and each is consumed by a different tool
|
|
127
|
+
* parameter, so a caller that substitutes one for the other gets no alignment.
|
|
128
|
+
*/
|
|
129
|
+
export declare const polymerEntitySchema: z.ZodObject<{
|
|
130
|
+
entityId: z.ZodString;
|
|
131
|
+
description: z.ZodOptional<z.ZodString>;
|
|
132
|
+
organism: z.ZodOptional<z.ZodString>;
|
|
133
|
+
authAsymIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
134
|
+
labelAsymIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
135
|
+
sequenceLength: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
}, z.core.$strip>;
|
|
137
|
+
/** One bound non-polymer component (ligand) of a PDB entry. */
|
|
138
|
+
export declare const ligandSchema: z.ZodObject<{
|
|
139
|
+
compId: z.ZodString;
|
|
140
|
+
name: z.ZodOptional<z.ZodString>;
|
|
141
|
+
formula: z.ZodOptional<z.ZodString>;
|
|
142
|
+
}, z.core.$strip>;
|
|
104
143
|
//# sourceMappingURL=_schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;CAIuC,CAAC;AAkDxE;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAgBwB,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAI0D,CAAC;AAE5F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgChF;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAwBtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAOnE;AA0CD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAoBrE;AAuDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAcvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA8BvF;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB;;;;;iBAWmD,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAM7E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;;;iBAmBkD,CAAC;AAEnF,+DAA+D;AAC/D,eAAO,MAAM,YAAY;;;;iBAMsC,CAAC"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* cross-tab the facet engine produces; the flat variant drops the child position
|
|
7
7
|
* for the tool that requests single-dimension breakdowns only. Every dimension
|
|
8
8
|
* position also reports its coverage gap, so buckets that sum to less than the
|
|
9
|
-
* stated total say so.
|
|
9
|
+
* stated total say so. Also holds the entry-level polymer-entity and ligand
|
|
10
|
+
* schemas shared by `protein_get_structure` and the `pdb://{entry_id}` resource,
|
|
11
|
+
* so tool and resource representations of the same record stay identical.
|
|
10
12
|
* @module mcp-server/tools/definitions/_schemas
|
|
11
13
|
*/
|
|
12
14
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -97,8 +99,8 @@ function withRange(b) {
|
|
|
97
99
|
*
|
|
98
100
|
* - `buckets` must be the UNCAPPED list. Measured after {@link toFacetOutput}
|
|
99
101
|
* slices to the bucket cap, the difference would fold in what the cap removed
|
|
100
|
-
* — a separate condition the response already discloses through
|
|
101
|
-
* `
|
|
102
|
+
* — a separate condition the response already discloses through the
|
|
103
|
+
* per-position `truncated` flags and {@link truncationNotices}.
|
|
102
104
|
* - The result floors at 0. A multi-valued attribute puts one match in several
|
|
103
105
|
* buckets (an entry with two source organisms lands in both), so the sum can
|
|
104
106
|
* legitimately exceed the total. That is over-counting, a different phenomenon
|
|
@@ -280,6 +282,50 @@ export function coverageNotices(facets, total) {
|
|
|
280
282
|
}
|
|
281
283
|
return notices;
|
|
282
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Advisory fragments for the dimension positions the bucket cap sliced, ready to
|
|
287
|
+
* join into the shared `notice` field alongside a caller's other advisories.
|
|
288
|
+
*
|
|
289
|
+
* Walks the same positions as {@link coverageNotices}: the top-level dimension,
|
|
290
|
+
* then each distinct child dimension aggregated across the parent buckets that
|
|
291
|
+
* carry it. A cross-tab caps each position independently, so the parent can fit
|
|
292
|
+
* under the cap while a child does not — and a child can be capped under some
|
|
293
|
+
* parent buckets and not others, which is what the per-position counts report.
|
|
294
|
+
* A single fragment naming one dimension would misstate all three cases.
|
|
295
|
+
*
|
|
296
|
+
* The list closes with the cap itself and the way past it, so a caller reading
|
|
297
|
+
* only `notice` has the recovery without re-deriving it per position.
|
|
298
|
+
*/
|
|
299
|
+
export function truncationNotices(facets, cap) {
|
|
300
|
+
const notices = [];
|
|
301
|
+
for (const f of facets) {
|
|
302
|
+
if (f.truncated) {
|
|
303
|
+
notices.push(`${f.dimension} was capped to the ${f.buckets.length} highest-count buckets.`);
|
|
304
|
+
}
|
|
305
|
+
const children = new Map();
|
|
306
|
+
for (const b of f.buckets) {
|
|
307
|
+
const c = b.child;
|
|
308
|
+
if (!c)
|
|
309
|
+
continue;
|
|
310
|
+
const acc = children.get(c.dimension) ?? { buckets: 0, parents: 0, truncated: 0 };
|
|
311
|
+
acc.parents += 1;
|
|
312
|
+
if (c.truncated) {
|
|
313
|
+
acc.truncated += 1;
|
|
314
|
+
acc.buckets = Math.max(acc.buckets, c.buckets.length);
|
|
315
|
+
}
|
|
316
|
+
children.set(c.dimension, acc);
|
|
317
|
+
}
|
|
318
|
+
for (const [dimension, acc] of children) {
|
|
319
|
+
if (acc.truncated === 0)
|
|
320
|
+
continue;
|
|
321
|
+
notices.push(`${dimension} (nested under ${f.dimension}) was capped to ${acc.buckets} buckets in ${acc.truncated} of the ${acc.parents} ${f.dimension} buckets shown.`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (notices.length === 0)
|
|
325
|
+
return [];
|
|
326
|
+
notices.push(`Each dimension level is capped at ${cap} buckets independently; raise bucket_limit (up to 500) or scope the query tighter to reach the long tail.`);
|
|
327
|
+
return notices;
|
|
328
|
+
}
|
|
283
329
|
/** License + citation for one upstream data source that contributed to a response. */
|
|
284
330
|
export const attributionSchema = z
|
|
285
331
|
.object({
|
|
@@ -299,4 +345,36 @@ export function renderAttribution(attributions) {
|
|
|
299
345
|
}
|
|
300
346
|
return lines;
|
|
301
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* One modeled polymer entity (chain group) of a PDB entry. Shared by
|
|
350
|
+
* `protein_get_structure` and the `pdb://{entry_id}` resource so the tool and its
|
|
351
|
+
* resource twin cannot drift on how the two chain namespaces are named or
|
|
352
|
+
* described. The `label_asym_id` / `auth_asym_id` split is load-bearing: the two
|
|
353
|
+
* are unrelated by any transformation, and each is consumed by a different tool
|
|
354
|
+
* parameter, so a caller that substitutes one for the other gets no alignment.
|
|
355
|
+
*/
|
|
356
|
+
export const polymerEntitySchema = z
|
|
357
|
+
.object({
|
|
358
|
+
entityId: z.string().describe('Polymer entity ID (e.g. 4HHB_1).'),
|
|
359
|
+
description: z.string().optional().describe('Entity description.'),
|
|
360
|
+
organism: z.string().optional().describe('Source organism.'),
|
|
361
|
+
authAsymIds: z
|
|
362
|
+
.array(z.string())
|
|
363
|
+
.optional()
|
|
364
|
+
.describe('Author-assigned chain IDs (auth_asym_id, e.g. ["A","C"]) — the namespace protein_get_annotations.chain takes. Omitted when upstream does not report them.'),
|
|
365
|
+
labelAsymIds: z
|
|
366
|
+
.array(z.string())
|
|
367
|
+
.optional()
|
|
368
|
+
.describe('mmCIF label_asym_id chain IDs (e.g. ["I","OB"]) — the namespace protein_compare_structures.chain takes. Not derivable from authAsymIds: for 6QNR_9 the label chains are I/OB against author chains 82/8E. Omitted when upstream does not report them.'),
|
|
369
|
+
sequenceLength: z.number().optional().describe('Residue count of the sample sequence.'),
|
|
370
|
+
})
|
|
371
|
+
.describe('A modeled polymer entity (chain group), with both chain namespaces.');
|
|
372
|
+
/** One bound non-polymer component (ligand) of a PDB entry. */
|
|
373
|
+
export const ligandSchema = z
|
|
374
|
+
.object({
|
|
375
|
+
compId: z.string().describe('Chemical component ID (e.g. HEM).'),
|
|
376
|
+
name: z.string().optional().describe('Chemical name.'),
|
|
377
|
+
formula: z.string().optional().describe('Molecular formula.'),
|
|
378
|
+
})
|
|
379
|
+
.describe('A bound ligand (non-polymer chemical component).');
|
|
302
380
|
//# sourceMappingURL=_schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,CAAC,cAAc,CAAC;IAC9B,SAAS,EAAE,CAAC,eAAe,CAAC;IAC5B,GAAG,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;CAC+B,CAAC;AAExE,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC9D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4JAA4J,CAC7J;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,uJAAuJ,CACxJ;CACJ,CAAC;KACD,QAAQ,CAAC,yDAAyD,CAAC,CAAC;AAEvE,kEAAkE;AAClE,MAAM,oBAAoB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACvF,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,kLAAkL,CACnL;CACJ,CAAC;KACD,QAAQ,CAAC,sDAAsD,CAAC,CAAC;AAEpE,kFAAkF;AAClF,MAAM,YAAY,GAAG,gBAAgB;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,oBAAoB;SACxB,QAAQ,EAAE;SACV,QAAQ,CACP,ySAAyS,CAC1S;CACJ,CAAC;KACD,QAAQ,CAAC,gFAAgF,CAAC,CAAC;AAE9F;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC/F,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CACP,qdAAqd,CACtd;CACJ,CAAC;KACD,QAAQ,CAAC,gDAAgD,CAAC,CAAC;AAE9D,qFAAqF;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB;KACzD,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC5F,CAAC;KACD,QAAQ,CAAC,8EAA8E,CAAC,CAAC;AAM5F,2EAA2E;AAC3E,SAAS,SAAS,CAChB,CAAI;IAEJ,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QACzD,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QAChD,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,iBAAiB,CAAC,OAAqC,EAAE,KAAa;IAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAqB,EACrB,GAAW,EACX,KAAa;IAEb,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;IAC7C,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,SAAS,CAAC,CAAC,CAAC;YACf,GAAG,CAAC,CAAC,CAAC,KAAK;gBACT,CAAC,CAAC;oBACE,KAAK,EAAE;wBACL,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;wBAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;6BACrB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;6BACb,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACxE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5D,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;qBAC/D;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAKrB;IACC,MAAM,KAAK,GACT,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,oDAAoD,CAAC;AAElF,2GAA2G;AAC3G,MAAM,0BAA0B,GAAG,yBAAyB,CAAC;AAE7D;;;;GAIG;AACH,SAAS,cAAc,CAAC,CAAiE;IACvF,MAAM,KAAK,GAAG;QACZ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAC9B,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,EAAE;KACtE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,KAAK,GACT,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACpB,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAUnC;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,MAA8B,EAAE,KAAa;IACtE,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC;YACb,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,iBAAiB;YAC5B,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,iBAAiB,CAAC;YACnC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAA8B,EAAE,KAAa;IAC3E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC;YAAE,SAAS;QAClD,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB;YAAE,SAAS;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CACV,GAAG,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,uBAAuB,CAAC,CAAC,OAAO,KAAK,GAAG,eAAe,CAAC,CAAC,SAAS,+BAA+B,CACnK,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA8B,EAAE,GAAW;IAC3E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmE,CAAC;QAC5F,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;gBACnB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC;gBAAE,SAAS;YAClC,OAAO,CAAC,IAAI,CACV,GAAG,SAAS,kBAAkB,CAAC,CAAC,SAAS,mBAAmB,GAAG,CAAC,OAAO,eAAe,GAAG,CAAC,SAAS,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,iBAAiB,CAC1J,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,CACV,qCAAqC,GAAG,2GAA2G,CACpJ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CACP,uLAAuL,CACxL;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;IAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAClF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACjE,CAAC;KACD,QAAQ,CAAC,oEAAoE,CAAC,CAAC;AAIlF,gGAAgG;AAChG,MAAM,UAAU,iBAAiB,CAAC,YAAiC;IACjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC5D,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,2JAA2J,CAC5J;IACH,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,uPAAuP,CACxP;IACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACxF,CAAC;KACD,QAAQ,CAAC,qEAAqE,CAAC,CAAC;AAEnF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC9D,CAAC;KACD,QAAQ,CAAC,kDAAkD,CAAC,CAAC"}
|
|
@@ -27,8 +27,6 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
27
27
|
predicted: "predicted";
|
|
28
28
|
}>>;
|
|
29
29
|
interval: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedNumber<unknown>, z.ZodEnum<{
|
|
30
|
-
month: "month";
|
|
31
|
-
quarter: "quarter";
|
|
32
30
|
year: "year";
|
|
33
31
|
}>]>>;
|
|
34
32
|
bucket_limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -57,10 +55,10 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
57
55
|
}, z.core.$strip>>;
|
|
58
56
|
}, z.core.$strip>>;
|
|
59
57
|
}, z.core.$strip>, readonly [{
|
|
60
|
-
readonly reason: "
|
|
58
|
+
readonly reason: "interval_not_applicable";
|
|
61
59
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
62
|
-
readonly when: "
|
|
63
|
-
readonly recovery: "
|
|
60
|
+
readonly when: "interval was supplied but neither requested group_by dimension aggregates by a histogram that accepts a value of that type.";
|
|
61
|
+
readonly recovery: "Group by resolution or molecular_weight for a numeric interval, or release_year for the \"year\" period; otherwise drop interval and let each dimension use its own default.";
|
|
64
62
|
}, {
|
|
65
63
|
readonly reason: "duplicate_dimension";
|
|
66
64
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
@@ -70,8 +68,6 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
70
68
|
readonly scope: z.ZodOptional<z.ZodString>;
|
|
71
69
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
72
70
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
-
readonly shown: z.ZodOptional<z.ZodNumber>;
|
|
74
|
-
readonly cap: z.ZodOptional<z.ZodNumber>;
|
|
75
71
|
readonly bucketsReturned: z.ZodNumber;
|
|
76
72
|
}>;
|
|
77
73
|
//# sourceMappingURL=analyze-collection.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-collection.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-collection.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAuCjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0M5B,CAAC"}
|