@cyanheads/pubchem-mcp-server 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.5.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/pubchem-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/pubchem-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/pubchem-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-^1.3.0-f472b6.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.5.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/pubchem-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/pubchem-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/pubchem-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-^1.3.0-f472b6.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -62,8 +62,9 @@ Get detailed compound information by CID.
62
62
 
63
63
  - Batches up to 100 CIDs in a single request
64
64
  - 27 available properties: molecular weight, SMILES, InChIKey, XLogP, TPSA, complexity, stereo counts, and more
65
- - Optionally includes textual descriptions (pharmacology, mechanism, therapeutic use) from PUG View
66
- - Optionally includes all known synonyms (trade names, systematic names, registry numbers)
65
+ - Optionally includes textual descriptions (pharmacology, mechanism, therapeutic use) from PUG View — fetched for the first 10 CIDs of a batch, with the skipped CIDs named in the response
66
+ - Optionally includes known synonyms (trade names, systematic names, registry numbers)
67
+ - Synonyms and descriptions are paged: `synonymOffset` and `descriptionOffset` window every compound in the batch at the same position, reaching the entries past a page
67
68
  - Optionally computes drug-likeness assessment (Lipinski Rule of Five + Veber rules) from fetched properties
68
69
  - Optionally fetches pharmacological classification (FDA classes, mechanisms of action, MeSH classes, ATC codes)
69
70
 
@@ -75,7 +76,7 @@ Get a compound's bioactivity profile from PubChem BioAssay.
75
76
 
76
77
  - Returns assay outcomes (Active/Inactive/Inconclusive), target info (protein accessions, NCBI Gene IDs), and quantitative values (IC50, EC50, Ki)
77
78
  - Filter by outcome and/or a specific molecular target (NCBI Gene ID or protein accession)
78
- - Caps at 100 results per request (well-studied compounds may have thousands)
79
+ - Caps at 100 results per page; `offset` reaches the rest (well-studied compounds may have thousands)
79
80
 
80
81
  ---
81
82
 
@@ -9,7 +9,7 @@ const RESOURCE_XREF_TYPES = ['RN', 'RegistryID', 'PubMedID'];
9
9
  const MAX_PER_TYPE = 25;
10
10
  export const compoundXrefsResource = resource('pubchem://compound/{cid}/xrefs', {
11
11
  name: 'pubchem-compound-xrefs',
12
- description: 'External cross-references (CAS RN, registry IDs, PubMed) for a PubChem compound by CID, up to 25 per type. Use pubchem_get_compound_xrefs for the full set of xref types and a higher per-type cap.',
12
+ description: 'External cross-references (CAS RN, registry IDs, PubMed) for a PubChem compound by CID, up to 25 per type. Use pubchem_get_compound_xrefs for the full set of xref types, a higher per-type cap, and to page through the rest with offset.',
13
13
  mimeType: 'application/json',
14
14
  params: z.object({
15
15
  cid: z.coerce.number().int().positive().describe('PubChem Compound ID.'),
@@ -1 +1 @@
1
- {"version":3,"file":"compound-xrefs.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/compound-xrefs.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AACtE,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,gCAAgC,EAAE;IAC9E,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,qMAAqM;IACvM,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACzE,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,KAAK,GAA8E,EAAE,CAAC;QAC5F,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"compound-xrefs.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/compound-xrefs.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AACtE,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,gCAAgC,EAAE;IAC9E,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,4OAA4O;IAC9O,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACzE,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,KAAK,GAA8E,EAAE,CAAC;QAC5F,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;CACF,CAAC,CAAC"}
@@ -10,8 +10,10 @@ export declare const getCompoundDetails: import("@cyanheads/mcp-ts-core").ToolDe
10
10
  [x: string]: string;
11
11
  }>>>;
12
12
  includeDescription: z.ZodDefault<z.ZodBoolean>;
13
+ descriptionOffset: z.ZodDefault<z.ZodNumber>;
13
14
  maxDescriptions: z.ZodDefault<z.ZodNumber>;
14
15
  includeSynonyms: z.ZodDefault<z.ZodBoolean>;
16
+ synonymOffset: z.ZodDefault<z.ZodNumber>;
15
17
  maxSynonyms: z.ZodDefault<z.ZodNumber>;
16
18
  includeDrugLikeness: z.ZodDefault<z.ZodBoolean>;
17
19
  includeClassification: z.ZodDefault<z.ZodBoolean>;
@@ -76,5 +78,13 @@ export declare const getCompoundDetails: import("@cyanheads/mcp-ts-core").ToolDe
76
78
  meshClasses: z.ZodArray<z.ZodString>;
77
79
  }, z.core.$strip>>;
78
80
  }, z.core.$strip>>;
79
- }, z.core.$strip>, undefined, undefined>;
81
+ }, z.core.$strip>, undefined, {
82
+ readonly enrichedCids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
83
+ readonly skippedCids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
84
+ readonly synonymOffset: z.ZodOptional<z.ZodNumber>;
85
+ readonly nextSynonymOffset: z.ZodOptional<z.ZodNumber>;
86
+ readonly descriptionOffset: z.ZodOptional<z.ZodNumber>;
87
+ readonly nextDescriptionOffset: z.ZodOptional<z.ZodNumber>;
88
+ readonly notice: z.ZodOptional<z.ZodString>;
89
+ }>;
80
90
  //# sourceMappingURL=get-compound-details.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-compound-details.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-details.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA4GjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAuZ7B,CAAC"}
1
+ {"version":3,"file":"get-compound-details.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-details.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAmHjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAijB7B,CAAC"}
@@ -93,10 +93,16 @@ function computeDrugLikeness(properties) {
93
93
  veber: { rotatableBonds, tpsa, violations: veberViolations },
94
94
  };
95
95
  }
96
+ /**
97
+ * PUG View is a per-CID endpoint, so descriptions and classification fan out one request per
98
+ * compound. The batch accepts up to 100 CIDs; this bounds that fan-out. CIDs past it come back
99
+ * without descriptions or classification — disclosed via enrichment (#40).
100
+ */
101
+ const PUG_VIEW_CID_CAP = 10;
96
102
  // ── Tool definition ────────────────────────────────────────────────────
97
103
  export const getCompoundDetails = tool('pubchem_get_compound_details', {
98
104
  title: 'Get Compound Details',
99
- description: 'Get detailed compound information by CID. Returns physicochemical properties (molecular weight, SMILES, InChIKey, XLogP, TPSA, etc.), optionally with a textual description (pharmacology, mechanism, therapeutic use), all known synonyms, drug-likeness assessment (Lipinski/Veber rules), and/or pharmacological classification (FDA classes, MeSH classes, ATC codes). Accepts up to 100 CIDs per call.',
105
+ description: 'Get detailed compound information by CID. Returns physicochemical properties (molecular weight, SMILES, InChIKey, XLogP, TPSA, etc.), optionally with a textual description (pharmacology, mechanism, therapeutic use), known synonyms, drug-likeness assessment (Lipinski/Veber rules), and/or pharmacological classification (FDA classes, MeSH classes, ATC codes). Accepts up to 100 CIDs per call.',
100
106
  annotations: {
101
107
  readOnlyHint: true,
102
108
  idempotentHint: true,
@@ -115,25 +121,37 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
115
121
  includeDescription: z
116
122
  .boolean()
117
123
  .default(false)
118
- .describe('Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — capped via maxDescriptions. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without descriptions.'),
124
+ .describe(`Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — paged via descriptionOffset/maxDescriptions. Fetched only for the first ${PUG_VIEW_CID_CAP} CIDs in the batch; remaining CIDs return without descriptions and are listed in the response's skippedCids.`),
125
+ descriptionOffset: z
126
+ .number()
127
+ .int()
128
+ .min(0)
129
+ .default(0)
130
+ .describe("Zero-based index of the first description to return within each compound's description list. The same offset is applied to every compound in the batch. Pass the nextDescriptionOffset from a previous call to read the following page. Default: 0."),
119
131
  maxDescriptions: z
120
132
  .number()
121
133
  .int()
122
134
  .min(1)
123
135
  .max(20)
124
136
  .default(3)
125
- .describe('Max number of distinct description entries per compound (1-20). PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3.'),
137
+ .describe('Max number of distinct description entries per compound per page (1-20). PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3.'),
126
138
  includeSynonyms: z
127
139
  .boolean()
128
140
  .default(false)
129
- .describe('Fetch all known names and synonyms (trade names, systematic names, registry numbers). Slower for large CID lists.'),
141
+ .describe('Fetch known names and synonyms (trade names, systematic names, registry numbers), paged via synonymOffset/maxSynonyms. Fetched for every found CID in the batch. Slower for large CID lists.'),
142
+ synonymOffset: z
143
+ .number()
144
+ .int()
145
+ .min(0)
146
+ .default(0)
147
+ .describe("Zero-based index of the first synonym to return within each compound's synonym list. The same offset is applied to every compound in the batch. Pass the nextSynonymOffset from a previous call to read the following page. Default: 0."),
130
148
  maxSynonyms: z
131
149
  .number()
132
150
  .int()
133
151
  .min(1)
134
152
  .max(100)
135
153
  .default(20)
136
- .describe('Max synonyms returned per compound (1-100). PubChem lists hundreds for common drugs; capped to keep the response focused. Default: 20.'),
154
+ .describe('Max synonyms returned per compound per page (1-100). PubChem lists hundreds for common drugs; use synonymOffset to reach the ones past this page. Default: 20.'),
137
155
  includeDrugLikeness: z
138
156
  .boolean()
139
157
  .default(false)
@@ -141,7 +159,7 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
141
159
  includeClassification: z
142
160
  .boolean()
143
161
  .default(false)
144
- .describe('Include pharmacological classification: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without classification.'),
162
+ .describe(`Include pharmacological classification: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Fetched only for the first ${PUG_VIEW_CID_CAP} CIDs in the batch; remaining CIDs return without classification and are listed in the response's skippedCids.`),
145
163
  }),
146
164
  output: z.object({
147
165
  compounds: z
@@ -165,16 +183,19 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
165
183
  })
166
184
  .describe('Description entry with optional source attribution.'))
167
185
  .optional()
168
- .describe('Textual descriptions, deduplicated and capped at maxDescriptions. Each entry carries optional source attribution.'),
186
+ .describe('Textual descriptions on this page, deduplicated then windowed by descriptionOffset/maxDescriptions. Each entry carries optional source attribution. Empty when descriptionOffset runs past descriptionsTotal.'),
169
187
  descriptionsTotal: z
170
188
  .number()
171
189
  .optional()
172
- .describe('Total distinct descriptions available before truncation. Larger than descriptions.length when more sources exist — increase maxDescriptions to see them.'),
173
- synonyms: z.array(z.string()).optional().describe('Known names and synonyms.'),
190
+ .describe('Total distinct descriptions available for this compound, across all pages. Larger than descriptions.length when more sources exist — raise maxDescriptions or page with descriptionOffset to see them.'),
191
+ synonyms: z
192
+ .array(z.string())
193
+ .optional()
194
+ .describe('Known names and synonyms on this page, windowed by synonymOffset/maxSynonyms. Empty when synonymOffset runs past synonymsTotal.'),
174
195
  synonymsTotal: z
175
196
  .number()
176
197
  .optional()
177
- .describe('Total synonyms available before truncation. Larger than synonyms.length when more exist — increase maxSynonyms to see them.'),
198
+ .describe('Total synonyms available for this compound, across all pages. Larger than synonyms.length when more exist — raise maxSynonyms or page with synonymOffset to see them.'),
178
199
  drugLikeness: drugLikenessSchema
179
200
  .optional()
180
201
  .describe('Drug-likeness assessment. lipinski.violations ≤ 1 and veber.violations = 0 → pass.'),
@@ -185,6 +206,54 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
185
206
  .describe('Per-CID compound detail record.'))
186
207
  .describe('Compound detail records.'),
187
208
  }),
209
+ // Agent-facing context for the two things a per-compound record cannot say on its own:
210
+ // which CIDs the PUG View fan-out reached (#40), and where the synonym/description windows
211
+ // sit within each compound's full list (#38). Both are batch-wide — one offset and one cap
212
+ // apply to every compound — so they belong here rather than repeated per record. Reaches
213
+ // structuredContent and content[]; keys disjoint from output (compounds lives there).
214
+ //
215
+ // A full page is exactly maxSynonyms/maxDescriptions long, so one nextOffset serves every
216
+ // compound that still has entries left, whatever its individual total.
217
+ enrichment: {
218
+ enrichedCids: z
219
+ .array(z.number())
220
+ .optional()
221
+ .describe('CIDs whose descriptions and classification were fetched. Present only when the batch exceeded the per-call fan-out limit and other CIDs were skipped.'),
222
+ skippedCids: z
223
+ .array(z.number())
224
+ .optional()
225
+ .describe('CIDs found in PubChem whose descriptions and classification were NOT fetched because the batch exceeded the per-call fan-out limit. Their absence from a record means "not requested", not "PubChem has none" — re-request these CIDs in a follow-up call. Present only when CIDs were skipped.'),
226
+ synonymOffset: z
227
+ .number()
228
+ .optional()
229
+ .describe("Zero-based index of the first synonym returned within each compound's list. Present when includeSynonyms is true."),
230
+ nextSynonymOffset: z
231
+ .number()
232
+ .optional()
233
+ .describe('synonymOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further synonyms.'),
234
+ descriptionOffset: z
235
+ .number()
236
+ .optional()
237
+ .describe("Zero-based index of the first description returned within each compound's list. Present when includeDescription is true."),
238
+ nextDescriptionOffset: z
239
+ .number()
240
+ .optional()
241
+ .describe('descriptionOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further descriptions.'),
242
+ notice: z
243
+ .string()
244
+ .optional()
245
+ .describe('Recovery guidance covering the skipped CIDs, an offset that runs past every compound, and pages that remain. Absent when nothing was skipped or truncated.'),
246
+ },
247
+ // Both fields are optional, so `render` sees `number[] | undefined` at the type level; the
248
+ // framework only calls it for a populated field.
249
+ enrichmentTrailer: {
250
+ enrichedCids: {
251
+ render: (cids) => `**Descriptions/classification fetched for:** CID ${(cids ?? []).join(', ')}`,
252
+ },
253
+ skippedCids: {
254
+ render: (cids) => `**Descriptions/classification skipped for:** CID ${(cids ?? []).join(', ')}`,
255
+ },
256
+ },
188
257
  async handler(input, ctx) {
189
258
  const client = getPubChemClient();
190
259
  const requestedProps = input.properties ?? [...DEFAULT_PROPERTIES];
@@ -207,12 +276,14 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
207
276
  return false;
208
277
  return Object.keys(row).some((k) => k !== 'CID');
209
278
  };
210
- // PUG View calls (per-CID, capped at 10) — skip CIDs that aren't in PubChem
279
+ // PUG View calls (per-CID, capped) — skip CIDs that aren't in PubChem
211
280
  const foundCids = input.cids.filter(isFound);
212
- const viewCids = foundCids.slice(0, 10);
213
- if ((input.includeDescription || input.includeClassification) &&
214
- viewCids.length < foundCids.length) {
215
- ctx.log.info('PUG View fetch capped at 10 CIDs', {
281
+ const viewCids = foundCids.slice(0, PUG_VIEW_CID_CAP);
282
+ const skippedViewCids = foundCids.slice(PUG_VIEW_CID_CAP);
283
+ const viewCapEngaged = (input.includeDescription || input.includeClassification) && skippedViewCids.length > 0;
284
+ if (viewCapEngaged) {
285
+ ctx.log.info('PUG View fetch capped', {
286
+ cap: PUG_VIEW_CID_CAP,
216
287
  requested: foundCids.length,
217
288
  fetching: viewCids.length,
218
289
  });
@@ -251,12 +322,12 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
251
322
  return compound;
252
323
  const allDescs = descMap?.get(cid);
253
324
  if (allDescs && allDescs.length > 0) {
254
- compound.descriptions = allDescs.slice(0, input.maxDescriptions);
325
+ compound.descriptions = allDescs.slice(input.descriptionOffset, input.descriptionOffset + input.maxDescriptions);
255
326
  compound.descriptionsTotal = allDescs.length;
256
327
  }
257
328
  const syns = synMap?.get(cid);
258
329
  if (syns) {
259
- compound.synonyms = syns.slice(0, input.maxSynonyms);
330
+ compound.synonyms = syns.slice(input.synonymOffset, input.synonymOffset + input.maxSynonyms);
260
331
  compound.synonymsTotal = syns.length;
261
332
  }
262
333
  if (input.includeDrugLikeness)
@@ -266,6 +337,40 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
266
337
  compound.classification = cls;
267
338
  return compound;
268
339
  });
340
+ const notices = [];
341
+ // #40 — the PUG View fan-out cap is otherwise invisible: a capped-out CID looks exactly
342
+ // like a compound PubChem has no description for.
343
+ if (viewCapEngaged) {
344
+ ctx.enrich({ enrichedCids: viewCids, skippedCids: skippedViewCids });
345
+ notices.push(`Descriptions and classification were fetched for the first ${viewCids.length} of ${foundCids.length} found CIDs (limit: ${PUG_VIEW_CID_CAP} per call). CID ${skippedViewCids.join(', ')} returned without them — re-request those CIDs in a follow-up call.`);
346
+ }
347
+ if (input.includeSynonyms) {
348
+ const page = listPage([...(synMap?.values() ?? [])].map((s) => s.length), input.synonymOffset, input.maxSynonyms);
349
+ ctx.enrich({ synonymOffset: input.synonymOffset });
350
+ if (page.hasMore)
351
+ ctx.enrich({ nextSynonymOffset: page.nextOffset });
352
+ if (page.allEmpty) {
353
+ notices.push(`synonymOffset ${input.synonymOffset} is past every compound in this batch — the longest synonym list has ${page.largestTotal} entries. Pass a synonymOffset below ${page.largestTotal}.`);
354
+ }
355
+ else if (page.hasMore) {
356
+ notices.push(`More synonyms remain — pass synonymOffset=${page.nextOffset} to continue.`);
357
+ }
358
+ }
359
+ if (input.includeDescription) {
360
+ const page = listPage([...(descMap?.values() ?? [])].map((d) => d.length), input.descriptionOffset, input.maxDescriptions);
361
+ ctx.enrich({ descriptionOffset: input.descriptionOffset });
362
+ if (page.hasMore)
363
+ ctx.enrich({ nextDescriptionOffset: page.nextOffset });
364
+ if (page.allEmpty) {
365
+ notices.push(`descriptionOffset ${input.descriptionOffset} is past every compound in this batch — the longest description list has ${page.largestTotal} entries. Pass a descriptionOffset below ${page.largestTotal}.`);
366
+ }
367
+ else if (page.hasMore) {
368
+ notices.push(`More descriptions remain — pass descriptionOffset=${page.nextOffset} to continue.`);
369
+ }
370
+ }
371
+ // One notice field, so the sources are composed rather than overwriting one another.
372
+ if (notices.length > 0)
373
+ ctx.enrich.notice(notices.join(' '));
269
374
  return { compounds };
270
375
  },
271
376
  format(result) {
@@ -391,7 +496,12 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
391
496
  }
392
497
  blocks.push(lines.join('\n'));
393
498
  }
394
- // Descriptions (with source attribution; truncated to maxDescriptions)
499
+ // An empty list with a non-zero total means the offset ran past this compound —
500
+ // distinct from having no descriptions at all, which omits the field entirely.
501
+ if (c.descriptions?.length === 0) {
502
+ blocks.push(`\n**Descriptions** (${c.descriptionsTotal ?? 0} total): none at this descriptionOffset`);
503
+ }
504
+ // Descriptions (with source attribution; windowed by descriptionOffset/maxDescriptions)
395
505
  if (c.descriptions && c.descriptions.length > 0) {
396
506
  const total = c.descriptionsTotal ?? c.descriptions.length;
397
507
  const shown = c.descriptions.length;
@@ -409,15 +519,18 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
409
519
  }
410
520
  const more = total - shown;
411
521
  if (more > 0) {
412
- descLines.push(`_+${more} more description${more === 1 ? '' : 's'} from other sources — increase maxDescriptions to see them._`);
522
+ descLines.push(`_+${more} more description${more === 1 ? '' : 's'} from other sources — raise maxDescriptions or page with descriptionOffset to see them._`);
413
523
  }
414
524
  blocks.push(descLines.join('\n\n'));
415
525
  }
416
- // Synonyms (capped at maxSynonyms in the handler; total reported)
526
+ if (c.synonyms?.length === 0) {
527
+ blocks.push(`\n**Synonyms** (${c.synonymsTotal ?? 0} total): none at this synonymOffset`);
528
+ }
529
+ // Synonyms (windowed by synonymOffset/maxSynonyms in the handler; total reported)
417
530
  if (c.synonyms && c.synonyms.length > 0) {
418
531
  const total = c.synonymsTotal ?? c.synonyms.length;
419
532
  const more = total - c.synonyms.length;
420
- const suffix = more > 0 ? ` (+${more} more)` : '';
533
+ const suffix = more > 0 ? ` (+${more} more not on this page)` : '';
421
534
  /**
422
535
  * Pipe-separated: CAS-style inverted names ("Benzoic acid, 2-(acetyloxy)-") carry
423
536
  * their own ", ", which would split one synonym into two. " | " is this formatter's
@@ -434,6 +547,19 @@ export const getCompoundDetails = tool('pubchem_get_compound_details', {
434
547
  return [{ type: 'text', text: blocks.join('\n') }];
435
548
  },
436
549
  });
550
+ /**
551
+ * Batch-wide page state for one of the per-compound lists. `totals` holds each compound's
552
+ * full list length; a page is windowed at the same offset and cap for every compound.
553
+ */
554
+ function listPage(totals, offset, cap) {
555
+ const largestTotal = totals.reduce((max, t) => Math.max(max, t), 0);
556
+ return {
557
+ allEmpty: largestTotal > 0 && totals.every((t) => t <= offset),
558
+ hasMore: totals.some((t) => t > offset + cap),
559
+ largestTotal,
560
+ nextOffset: offset + cap,
561
+ };
562
+ }
437
563
  function formatRules(rules) {
438
564
  return rules
439
565
  .map(([label, r]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"get-compound-details.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-details.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-compound-details.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-details.tool.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare const getCompoundXrefs: import("@cyanheads/mcp-ts-core").ToolDefi
8
8
  xrefTypes: z.ZodArray<z.ZodEnum<{
9
9
  [x: string]: string;
10
10
  }>>;
11
+ offset: z.ZodDefault<z.ZodNumber>;
11
12
  maxPerType: z.ZodDefault<z.ZodNumber>;
12
13
  }, z.core.$strip>, z.ZodObject<{
13
14
  cid: z.ZodNumber;
@@ -18,6 +19,8 @@ export declare const getCompoundXrefs: import("@cyanheads/mcp-ts-core").ToolDefi
18
19
  truncated: z.ZodBoolean;
19
20
  }, z.core.$strip>>;
20
21
  }, z.core.$strip>, undefined, {
22
+ readonly offset: z.ZodNumber;
23
+ readonly nextOffset: z.ZodOptional<z.ZodNumber>;
21
24
  readonly notice: z.ZodOptional<z.ZodString>;
22
25
  }>;
23
26
  //# sourceMappingURL=get-compound-xrefs.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-compound-xrefs.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-xrefs.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAMjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAsI3B,CAAC"}
1
+ {"version":3,"file":"get-compound-xrefs.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-xrefs.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAMjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;EAwL3B,CAAC"}
@@ -8,7 +8,7 @@ import { XREF_TYPES } from '../../../services/pubchem/types.js';
8
8
  const xrefTypeEnum = z.enum(XREF_TYPES);
9
9
  export const getCompoundXrefs = tool('pubchem_get_compound_xrefs', {
10
10
  title: 'Get Compound Cross-References',
11
- description: 'Get external database cross-references for a compound: PubMed citations, patent IDs, gene/protein associations, registry numbers, and taxonomy IDs. Results are capped per type with total counts reported.',
11
+ description: 'Get external database cross-references for a compound: PubMed citations, patent IDs, gene/protein associations, registry numbers, and taxonomy IDs. Results are paged per type — capped at maxPerType with the total count reported; reach the IDs past a page with offset.',
12
12
  annotations: {
13
13
  readOnlyHint: true,
14
14
  idempotentHint: true,
@@ -24,12 +24,18 @@ export const getCompoundXrefs = tool('pubchem_get_compound_xrefs', {
24
24
  .array(xrefTypeEnum)
25
25
  .min(1)
26
26
  .describe('Cross-reference types to retrieve. String IDs: RegistryID (DSSTox/EPA registry numbers), RN (CAS numbers), PatentID. Numeric IDs: PubMedID, GeneID (NCBI Gene), ProteinGI (legacy NCBI Protein GI), TaxonomyID.'),
27
+ offset: z
28
+ .number()
29
+ .int()
30
+ .min(0)
31
+ .default(0)
32
+ .describe('Zero-based index of the first ID to return within each xref type. The same offset is applied to every requested type. Pass the nextOffset from a previous call to read the following page. Default: 0.'),
27
33
  maxPerType: z
28
34
  .number()
29
35
  .min(1)
30
36
  .max(500)
31
37
  .default(50)
32
- .describe('Max IDs to return per xref type (1-500). A compound may have thousands of PubMed references. Total count always reported. Default: 50.'),
38
+ .describe('Max IDs to return per xref type per page (1-500). A compound may have thousands of PubMed references; use offset to reach the ones past this page. Total count always reported. Default: 50.'),
33
39
  }),
34
40
  output: z.object({
35
41
  cid: z.number().describe('PubChem Compound ID.'),
@@ -48,21 +54,31 @@ export const getCompoundXrefs = tool('pubchem_get_compound_xrefs', {
48
54
  z.number().describe('Numeric cross-reference ID (e.g. PubMed ID, Gene ID).'),
49
55
  ])
50
56
  .describe('Cross-reference identifier — string or number depending on type.'))
51
- .describe('Cross-reference IDs (capped by maxPerType).'),
52
- totalAvailable: z.number().describe('Total IDs available before truncation.'),
53
- truncated: z.boolean().describe('Whether results were truncated.'),
57
+ .describe('Cross-reference IDs on this page (window of offset + maxPerType).'),
58
+ totalAvailable: z
59
+ .number()
60
+ .describe('Total IDs available for this type, across all pages.'),
61
+ truncated: z
62
+ .boolean()
63
+ .describe('True when IDs for this type remain past the current page.'),
54
64
  })
55
65
  .describe('Cross-reference group for one type.'))
56
66
  .describe('Cross-references grouped by type.'),
57
67
  }),
58
- // Agent-facing context — an empty-result notice distinguishing a nonexistent CID from a
59
- // real compound that simply has none of the requested xref types. Reaches structuredContent
60
- // and content[]; keys disjoint from output (cid/xrefs live there).
68
+ // Agent-facing context — the page boundary shared by every requested type, plus a notice
69
+ // distinguishing a nonexistent CID from a real compound that simply has none of the
70
+ // requested xref types. Reaches structuredContent and content[]; keys disjoint from output
71
+ // (cid/xrefs live there).
61
72
  enrichment: {
73
+ offset: z.number().describe('Zero-based index of the first ID returned within each type.'),
74
+ nextOffset: z
75
+ .number()
76
+ .optional()
77
+ .describe('Offset to pass on the next call to continue past this page. Omitted when no requested type has further IDs.'),
62
78
  notice: z
63
79
  .string()
64
80
  .optional()
65
- .describe('Recovery guidance when every requested xref type returned zero IDs hints to verify the CID. Absent when any cross-references were found.'),
81
+ .describe('Recovery guidance when every requested xref type returned zero IDs, when the offset runs past every type, or when further pages remain. Absent when this page is complete and non-empty.'),
66
82
  },
67
83
  async handler(input, ctx) {
68
84
  const client = getPubChemClient();
@@ -71,32 +87,60 @@ export const getCompoundXrefs = tool('pubchem_get_compound_xrefs', {
71
87
  for (const xrefType of input.xrefTypes) {
72
88
  const allIds = await client.getXrefs(input.cid, xrefType);
73
89
  const totalAvailable = allIds.length;
74
- const ids = allIds.slice(0, input.maxPerType);
90
+ // Offset is applied client-side: PubChem's xref endpoint returns the whole list for a
91
+ // type in one response, so getXrefs already holds every ID.
92
+ const ids = allIds.slice(input.offset, input.offset + input.maxPerType);
75
93
  xrefs.push({
76
94
  type: xrefType,
77
95
  ids,
78
96
  totalAvailable,
79
- truncated: totalAvailable > input.maxPerType,
97
+ truncated: input.offset + ids.length < totalAvailable,
80
98
  });
81
99
  }
82
100
  ctx.log.info('Xrefs fetched', {
83
101
  cid: input.cid,
84
102
  types: input.xrefTypes,
103
+ offset: input.offset,
85
104
  totalIds: xrefs.reduce((sum, x) => sum + x.ids.length, 0),
86
105
  });
106
+ // Any type whose page is full has more behind it, and every full page is the same length —
107
+ // so a single nextOffset covers every type that still has IDs left. The stride comes from a
108
+ // returned page rather than maxPerType, which accepts a fractional value that would make
109
+ // nextOffset non-integer and so rejected by this tool's own offset input.
110
+ const remainingTypes = xrefs.filter((x) => x.truncated);
111
+ const hasMore = remainingTypes.length > 0;
112
+ const nextOffset = input.offset + (remainingTypes[0]?.ids.length ?? 0);
113
+ const largestTotal = Math.max(...xrefs.map((x) => x.totalAvailable));
114
+ ctx.enrich({ offset: input.offset });
115
+ if (hasMore)
116
+ ctx.enrich({ nextOffset });
87
117
  // Empty-result signal (#30): every requested type came back empty — either the CID
88
118
  // doesn't exist or it genuinely has none of these xref types. Point at CID verification.
89
- if (xrefs.every((x) => x.totalAvailable === 0)) {
119
+ if (largestTotal === 0) {
90
120
  ctx.enrich.notice(`No cross-references found for CID ${input.cid} across the requested type(s): ${input.xrefTypes.join(', ')}. The compound may have none of these xref types, or verify the CID with pubchem_search_compounds.`);
91
121
  }
122
+ else if (xrefs.every((x) => x.ids.length === 0)) {
123
+ ctx.enrich.notice(`offset ${input.offset} is past every requested type — the largest has ${largestTotal} ID(s). Pass an offset below ${largestTotal}.`);
124
+ }
125
+ else if (hasMore) {
126
+ const remaining = remainingTypes
127
+ .map((x) => `${x.type} (${x.totalAvailable} total)`)
128
+ .join(', ');
129
+ ctx.enrich.notice(`More IDs remain for: ${remaining}. Pass offset=${nextOffset} for the next page.`);
130
+ }
92
131
  return { cid: input.cid, xrefs };
93
132
  },
94
133
  format(result) {
95
134
  const lines = [`Cross-references for CID ${result.cid}`, ''];
96
135
  for (const xref of result.xrefs) {
97
- const countInfo = xref.truncated
98
- ? `${xref.ids.length} of ${xref.totalAvailable} total truncated`
99
- : `${xref.totalAvailable} total`;
136
+ // A page shorter than the total is disclosed as a window; "truncated" additionally
137
+ // marks that IDs remain *after* it (an offset can also leave IDs before it).
138
+ let countInfo = `${xref.totalAvailable} total`;
139
+ if (xref.ids.length !== xref.totalAvailable) {
140
+ countInfo = `${xref.ids.length} of ${xref.totalAvailable} total`;
141
+ if (xref.truncated)
142
+ countInfo += ' — truncated';
143
+ }
100
144
  lines.push(`**${xref.type}** (${countInfo})`);
101
145
  if (xref.ids.length > 0) {
102
146
  // Rendered in full: the handler already capped ids at maxPerType and the header
@@ -104,7 +148,7 @@ export const getCompoundXrefs = tool('pubchem_get_compound_xrefs', {
104
148
  lines.push(` ${xref.ids.join(', ')}`);
105
149
  }
106
150
  else {
107
- lines.push(' None found');
151
+ lines.push(xref.totalAvailable > 0 ? ' None on this page' : ' None found');
108
152
  }
109
153
  lines.push('');
110
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-compound-xrefs.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-xrefs.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-compound-xrefs.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-xrefs.tool.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,10 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
8
8
  [x: string]: string;
9
9
  }>>>;
10
10
  includeDescription: import("zod").ZodDefault<import("zod").ZodBoolean>;
11
+ descriptionOffset: import("zod").ZodDefault<import("zod").ZodNumber>;
11
12
  maxDescriptions: import("zod").ZodDefault<import("zod").ZodNumber>;
12
13
  includeSynonyms: import("zod").ZodDefault<import("zod").ZodBoolean>;
14
+ synonymOffset: import("zod").ZodDefault<import("zod").ZodNumber>;
13
15
  maxSynonyms: import("zod").ZodDefault<import("zod").ZodNumber>;
14
16
  includeDrugLikeness: import("zod").ZodDefault<import("zod").ZodBoolean>;
15
17
  includeClassification: import("zod").ZodDefault<import("zod").ZodBoolean>;
@@ -74,11 +76,20 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
74
76
  meshClasses: import("zod").ZodArray<import("zod").ZodString>;
75
77
  }, import("zod/v4/core").$strip>>;
76
78
  }, import("zod/v4/core").$strip>>;
77
- }, import("zod/v4/core").$strip>, undefined, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
79
+ }, import("zod/v4/core").$strip>, undefined, {
80
+ readonly enrichedCids: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
81
+ readonly skippedCids: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodNumber>>;
82
+ readonly synonymOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
83
+ readonly nextSynonymOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
84
+ readonly descriptionOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
85
+ readonly nextDescriptionOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
86
+ readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
87
+ }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
78
88
  cid: import("zod").ZodNumber;
79
89
  xrefTypes: import("zod").ZodArray<import("zod").ZodEnum<{
80
90
  [x: string]: string;
81
91
  }>>;
92
+ offset: import("zod").ZodDefault<import("zod").ZodNumber>;
82
93
  maxPerType: import("zod").ZodDefault<import("zod").ZodNumber>;
83
94
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
84
95
  cid: import("zod").ZodNumber;
@@ -89,6 +100,8 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
89
100
  truncated: import("zod").ZodBoolean;
90
101
  }, import("zod/v4/core").$strip>>;
91
102
  }, import("zod/v4/core").$strip>, undefined, {
103
+ readonly offset: import("zod").ZodNumber;
104
+ readonly nextOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
92
105
  readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
93
106
  }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
94
107
  searchType: import("zod").ZodEnum<{
@@ -311,6 +324,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
311
324
  proteinname: "proteinname";
312
325
  }>;
313
326
  targetQuery: import("zod").ZodString;
327
+ offset: import("zod").ZodDefault<import("zod").ZodNumber>;
314
328
  maxResults: import("zod").ZodDefault<import("zod").ZodNumber>;
315
329
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
316
330
  aids: import("zod").ZodArray<import("zod").ZodNumber>;
@@ -328,6 +342,8 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
328
342
  readonly targetType: import("zod").ZodString;
329
343
  readonly targetQuery: import("zod").ZodString;
330
344
  readonly totalFound: import("zod").ZodNumber;
345
+ readonly offset: import("zod").ZodNumber;
346
+ readonly nextOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
331
347
  readonly truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
332
348
  readonly shown: import("zod").ZodOptional<import("zod").ZodNumber>;
333
349
  readonly cap: import("zod").ZodOptional<import("zod").ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAW9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAW9B,CAAC"}
@@ -13,6 +13,7 @@ export declare const searchAssays: import("@cyanheads/mcp-ts-core").ToolDefiniti
13
13
  proteinname: "proteinname";
14
14
  }>;
15
15
  targetQuery: z.ZodString;
16
+ offset: z.ZodDefault<z.ZodNumber>;
16
17
  maxResults: z.ZodDefault<z.ZodNumber>;
17
18
  }, z.core.$strip>, z.ZodObject<{
18
19
  aids: z.ZodArray<z.ZodNumber>;
@@ -30,6 +31,8 @@ export declare const searchAssays: import("@cyanheads/mcp-ts-core").ToolDefiniti
30
31
  readonly targetType: z.ZodString;
31
32
  readonly targetQuery: z.ZodString;
32
33
  readonly totalFound: z.ZodNumber;
34
+ readonly offset: z.ZodNumber;
35
+ readonly nextOffset: z.ZodOptional<z.ZodNumber>;
33
36
  readonly truncated: z.ZodOptional<z.ZodBoolean>;
34
37
  readonly shown: z.ZodOptional<z.ZodNumber>;
35
38
  readonly cap: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"search-assays.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-assays.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2HvB,CAAC"}
1
+ {"version":3,"file":"search-assays.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-assays.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwJvB,CAAC"}
@@ -8,7 +8,7 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
8
8
  import { getPubChemClient } from '../../../services/pubchem/pubchem-client.js';
9
9
  export const searchAssays = tool('pubchem_search_assays', {
10
10
  title: 'Search Assays',
11
- description: 'Find PubChem bioassays associated with a biological target. Search by gene symbol (e.g. "EGFR"), protein name, NCBI Gene ID, or UniProt accession. Returns assay IDs (AIDs) which can be explored further with pubchem_get_summary.',
11
+ description: 'Find PubChem bioassays associated with a biological target. Search by gene symbol (e.g. "EGFR"), protein name, NCBI Gene ID, or UniProt accession. Returns a page of assay IDs (AIDs) — page past maxResults with offset — which can be explored further with pubchem_get_summary.',
12
12
  annotations: {
13
13
  readOnlyHint: true,
14
14
  idempotentHint: true,
@@ -21,34 +21,43 @@ export const searchAssays = tool('pubchem_search_assays', {
21
21
  targetQuery: z
22
22
  .string()
23
23
  .describe('Target identifier. Examples: "EGFR" (genesymbol), "Epidermal growth factor receptor" (proteinname), "1956" (geneid), "P00533" (proteinaccession).'),
24
+ offset: z
25
+ .number()
26
+ .int()
27
+ .min(0)
28
+ .default(0)
29
+ .describe('Zero-based index of the first AID to return. Pass the nextOffset from a previous call to read the following page. Default: 0.'),
24
30
  maxResults: z
25
31
  .number()
26
32
  .min(1)
27
33
  .max(200)
28
34
  .default(50)
29
- .describe('Max AIDs to return (1-200). Popular targets may have thousands of assays. Default: 50.'),
35
+ .describe('Max AIDs to return per page (1-200). Popular targets may have thousands of assays; use offset to reach the ones past this page. Default: 50.'),
30
36
  }),
31
37
  output: z.object({
32
38
  aids: z.array(z.number()).describe('PubChem Assay IDs.'),
33
39
  }),
34
- // Agent-facing context — target echo, total before cap, and an empty-result notice.
40
+ // Agent-facing context — target echo, the total across all pages, the page boundary, and a
41
+ // notice distinguishing "no match" from "offset past the end".
35
42
  // Reaches structuredContent and content[] automatically; not in the domain return.
36
43
  enrichment: {
37
44
  targetType: z
38
45
  .string()
39
46
  .describe('Target identifier type used: genesymbol, proteinname, geneid, or proteinaccession.'),
40
47
  targetQuery: z.string().describe('Target identifier searched.'),
41
- totalFound: z.number().describe('Total AIDs found before the maxResults cap.'),
42
- truncated: z
43
- .boolean()
48
+ totalFound: z.number().describe('Total AIDs found for this target, across all pages.'),
49
+ offset: z.number().describe('Zero-based index of the first AID returned.'),
50
+ nextOffset: z
51
+ .number()
44
52
  .optional()
45
- .describe('True when AIDs were capped at maxResults more assays exist than returned.'),
46
- shown: z.number().optional().describe('AIDs returned after the maxResults cap.'),
53
+ .describe('Offset to pass on the next call to continue past this page. Omitted when no further AIDs match.'),
54
+ truncated: z.boolean().optional().describe('True when matching AIDs remain past this page.'),
55
+ shown: z.number().optional().describe('AIDs returned on this page.'),
47
56
  cap: z.number().optional().describe('The maxResults cap that was applied.'),
48
57
  notice: z
49
58
  .string()
50
59
  .optional()
51
- .describe('Recovery guidance when no assays matched echoes the target and suggests alternative search types. Absent when assays were returned.'),
60
+ .describe('Recovery guidance when no assays matched, when the offset runs past the result set, or when further pages remain. Absent when this page is complete and non-empty.'),
52
61
  },
53
62
  errors: [
54
63
  {
@@ -80,20 +89,34 @@ export const searchAssays = tool('pubchem_search_assays', {
80
89
  }
81
90
  const allAids = await client.searchAssaysByTarget(input.targetType, targetQuery);
82
91
  const totalFound = allAids.length;
83
- const aids = allAids.slice(0, input.maxResults);
92
+ // Offset is applied client-side: PubChem's target-to-AID endpoint returns the whole AID
93
+ // list in one response, so searchAssaysByTarget already holds every match.
94
+ const aids = allAids.slice(input.offset, input.offset + input.maxResults);
95
+ const nextOffset = input.offset + aids.length;
96
+ const hasMore = nextOffset < totalFound;
84
97
  ctx.log.info('Assay search completed', {
85
98
  targetType: input.targetType,
86
99
  targetQuery,
87
100
  totalFound,
101
+ offset: input.offset,
88
102
  returned: aids.length,
89
103
  });
90
- // Agent-facing context: target echo, total, and empty-result notice.
91
- ctx.enrich({ targetType: input.targetType, targetQuery, totalFound });
92
- if (aids.length === 0) {
104
+ // Agent-facing context: target echo, total, page boundary, and recovery notices.
105
+ ctx.enrich({ targetType: input.targetType, targetQuery, totalFound, offset: input.offset });
106
+ if (hasMore)
107
+ ctx.enrich({ nextOffset });
108
+ if (totalFound === 0) {
93
109
  ctx.enrich.notice(`No assays found for "${targetQuery}" (${input.targetType}). Try a different targetType (e.g. switch from proteinname to genesymbol), verify the identifier spelling, or use pubchem_get_summary for gene/protein entity lookups.`);
94
110
  }
95
- else if (totalFound > aids.length) {
96
- ctx.enrich.truncated({ shown: aids.length, cap: input.maxResults });
111
+ else if (aids.length === 0) {
112
+ ctx.enrich.notice(`offset ${input.offset} is past the ${totalFound} AID(s) found for "${targetQuery}". Pass an offset below ${totalFound}.`);
113
+ }
114
+ else if (hasMore) {
115
+ ctx.enrich.truncated({
116
+ shown: aids.length,
117
+ cap: input.maxResults,
118
+ guidance: `Showing AIDs ${input.offset + 1}-${nextOffset} of ${totalFound}. Pass offset=${nextOffset} for the next page.`,
119
+ });
97
120
  }
98
121
  return { aids };
99
122
  },
@@ -101,7 +124,9 @@ export const searchAssays = tool('pubchem_search_assays', {
101
124
  if (result.aids.length > 0) {
102
125
  return [{ type: 'text', text: `AIDs: ${result.aids.join(', ')}` }];
103
126
  }
104
- return [{ type: 'text', text: 'No assays found.' }];
127
+ // Neutral wording: an empty page is either "no match" or "offset past the end" — the
128
+ // enrichment trailer's notice says which.
129
+ return [{ type: 'text', text: 'No assays returned.' }];
105
130
  },
106
131
  });
107
132
  //# sourceMappingURL=search-assays.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-assays.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-assays.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE;IACxD,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,qOAAqO;IACvO,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;aACjE,QAAQ,CACP,0JAA0J,CAC3J;QACH,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CACP,mJAAmJ,CACpJ;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,wFAAwF,CACzF;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,CAAC;IACF,oFAAoF;IACpF,mFAAmF;IACnF,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CACP,oFAAoF,CACrF;QACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC9E,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,6EAA6E,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAChF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC3E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,uIAAuI,CACxI;KACJ;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,yCAAyC;YAC/C,QAAQ,EACN,yFAAyF;SAC5F;QACD;YACE,MAAM,EAAE,sBAAsB;YAC9B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,kEAAkE;YACxE,QAAQ,EACN,6GAA6G;SAChH;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,sFAAsF;QACtF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE;gBAC9C,GAAG,GAAG,CAAC,WAAW,CAAC,oBAAoB,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QACD,sFAAsF;QACtF,6DAA6D;QAC7D,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,CAAC,IAAI,CACZ,sBAAsB,EACtB,2CAA2C,KAAK,CAAC,WAAW,sCAAsC,EAClG,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAC/C,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEjF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAEhD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACrC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW;YACX,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,qEAAqE;QACrE,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,MAAM,CACf,wBAAwB,WAAW,MAAM,KAAK,CAAC,UAAU,yKAAyK,CACnO,CAAC;QACJ,CAAC;aAAM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACtD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"search-assays.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-assays.tool.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": "0.3",
3
3
  "name": "pubchem-mcp-server",
4
- "version": "0.5.0",
4
+ "version": "0.5.1",
5
5
  "description": "Search the PubChem chemical database for compounds, properties, safety data, bioactivity, cross-references, and entity summaries via MCP. STDIO or Streamable HTTP.",
6
6
  "author": {
7
7
  "name": "cyanheads"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/pubchem-mcp-server",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Search the PubChem chemical database for compounds, properties, safety data, bioactivity, cross-references, and entity summaries via MCP. STDIO or Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/pubchem-mcp-server",
6
6
  "type": "module",
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/pubchem-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.5.0",
9
+ "version": "0.5.1",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/pubchem-mcp-server",
21
21
  "runtimeHint": "bun",
22
- "version": "0.5.0",
22
+ "version": "0.5.1",
23
23
  "packageArguments": [
24
24
  { "type": "positional", "value": "run" },
25
25
  { "type": "positional", "value": "start:stdio" }
@@ -42,7 +42,7 @@
42
42
  "registryBaseUrl": "https://registry.npmjs.org",
43
43
  "identifier": "@cyanheads/pubchem-mcp-server",
44
44
  "runtimeHint": "bun",
45
- "version": "0.5.0",
45
+ "version": "0.5.1",
46
46
  "packageArguments": [
47
47
  { "type": "positional", "value": "run" },
48
48
  { "type": "positional", "value": "start:http" }