@cyanheads/pubmed-mcp-server 2.10.21 → 2.10.22

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.
Files changed (86) hide show
  1. package/AGENTS.md +2 -2
  2. package/CLAUDE.md +2 -2
  3. package/Dockerfile +3 -3
  4. package/README.md +8 -6
  5. package/changelog/2.10.x/2.10.22.md +44 -0
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/mcp-server/tools/definitions/_budget.d.ts +35 -6
  9. package/dist/mcp-server/tools/definitions/_budget.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/_budget.js +26 -3
  11. package/dist/mcp-server/tools/definitions/_budget.js.map +1 -1
  12. package/dist/mcp-server/tools/definitions/_notices.d.ts +33 -0
  13. package/dist/mcp-server/tools/definitions/_notices.d.ts.map +1 -0
  14. package/dist/mcp-server/tools/definitions/_notices.js +35 -0
  15. package/dist/mcp-server/tools/definitions/_notices.js.map +1 -0
  16. package/dist/mcp-server/tools/definitions/_schemas.d.ts +14 -0
  17. package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
  18. package/dist/mcp-server/tools/definitions/_schemas.js +9 -0
  19. package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +3 -0
  21. package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +28 -15
  23. package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +1 -0
  25. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js +107 -48
  27. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/format-citations.tool.js +3 -16
  30. package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts +1 -1
  32. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js +66 -76
  34. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts +6 -5
  36. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.js +11 -17
  38. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts +4 -4
  40. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts.map +1 -1
  41. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js +9 -8
  42. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js.map +1 -1
  43. package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts +4 -4
  44. package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts.map +1 -1
  45. package/dist/mcp-server/tools/definitions/spell-check.tool.js +12 -8
  46. package/dist/mcp-server/tools/definitions/spell-check.tool.js.map +1 -1
  47. package/dist/services/error-contracts.d.ts +1 -1
  48. package/dist/services/error-contracts.d.ts.map +1 -1
  49. package/dist/services/error-contracts.js +1 -1
  50. package/dist/services/error-contracts.js.map +1 -1
  51. package/dist/services/europe-pmc/europe-pmc-service.d.ts +31 -11
  52. package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
  53. package/dist/services/europe-pmc/europe-pmc-service.js +122 -47
  54. package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
  55. package/dist/services/europe-pmc/types.d.ts +5 -1
  56. package/dist/services/europe-pmc/types.d.ts.map +1 -1
  57. package/dist/services/ncbi/formatting/citation-formatter.d.ts.map +1 -1
  58. package/dist/services/ncbi/formatting/citation-formatter.js +204 -110
  59. package/dist/services/ncbi/formatting/citation-formatter.js.map +1 -1
  60. package/dist/services/ncbi/ncbi-service.d.ts +22 -0
  61. package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
  62. package/dist/services/ncbi/ncbi-service.js +113 -17
  63. package/dist/services/ncbi/ncbi-service.js.map +1 -1
  64. package/dist/services/ncbi/parsing/article-parser.d.ts.map +1 -1
  65. package/dist/services/ncbi/parsing/article-parser.js +11 -4
  66. package/dist/services/ncbi/parsing/article-parser.js.map +1 -1
  67. package/dist/services/ncbi/parsing/pmc-article-parser.d.ts +5 -1
  68. package/dist/services/ncbi/parsing/pmc-article-parser.d.ts.map +1 -1
  69. package/dist/services/ncbi/parsing/pmc-article-parser.js +85 -31
  70. package/dist/services/ncbi/parsing/pmc-article-parser.js.map +1 -1
  71. package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts +13 -0
  72. package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts.map +1 -1
  73. package/dist/services/ncbi/parsing/pmc-xml-helpers.js +108 -10
  74. package/dist/services/ncbi/parsing/pmc-xml-helpers.js.map +1 -1
  75. package/dist/services/ncbi/parsing/text-helpers.d.ts +10 -0
  76. package/dist/services/ncbi/parsing/text-helpers.d.ts.map +1 -1
  77. package/dist/services/ncbi/parsing/text-helpers.js +19 -0
  78. package/dist/services/ncbi/parsing/text-helpers.js.map +1 -1
  79. package/dist/services/ncbi/response-handler.d.ts +0 -11
  80. package/dist/services/ncbi/response-handler.d.ts.map +1 -1
  81. package/dist/services/ncbi/response-handler.js +21 -33
  82. package/dist/services/ncbi/response-handler.js.map +1 -1
  83. package/dist/services/ncbi/types.d.ts +30 -30
  84. package/dist/services/ncbi/types.d.ts.map +1 -1
  85. package/package.json +5 -5
  86. package/server.json +3 -3
@@ -8,88 +8,62 @@
8
8
  import { tool, z } from '@cyanheads/mcp-ts-core';
9
9
  import { NCBI_SERVICE_ERRORS, QUERY_INPUT_ERRORS } from '../../../services/error-contracts.js';
10
10
  import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
11
- import { ensureArray, getText } from '../../../services/ncbi/parsing/xml-helpers.js';
11
+ import { ensureArray, getOptionalText, getText } from '../../../services/ncbi/parsing/xml-helpers.js';
12
12
  import { conceptMeta, EDAM_DATA_RETRIEVAL, EDAM_ONTOLOGY_TERMINOLOGY, SCHEMA_DEFINED_TERM, SCHEMA_DEFINED_TERM_SET, } from './_concepts.js';
13
13
  import { hasVisibleText } from './_visible-text.js';
14
14
  /**
15
- * NCBI Entrez mesh UIDs encode the canonical MeSH DescriptorUI as the ASCII code of the
16
- * UI's letter prefix followed by its 6-digit number: D=68, C=67 (supplementary concept),
17
- * Q=81 (qualifier). So `68003924` → `D003924`. Modern supplementary-concept records receive
18
- * plain sequential UIDs that don't encode a UI (e.g. `2025952`); those aren't decodable, so
19
- * the raw Entrez UID is returned unchanged.
15
+ * Records the exact-heading (`[MH]`) search reads to choose its pin. A heading
16
+ * matches one record, or two for a drug class (its pharmacological-action record
17
+ * and its descriptor); the rest is headroom.
20
18
  */
21
- const ENTREZ_UID_PREFIX = { '67': 'C', '68': 'D', '81': 'Q' };
22
- function decodeMeshDescriptorUi(entrezUid) {
23
- if (/^\d{8}$/.test(entrezUid)) {
24
- const letter = ENTREZ_UID_PREFIX[entrezUid.slice(0, 2)];
25
- if (letter)
26
- return `${letter}${entrezUid.slice(2)}`;
27
- }
28
- return entrezUid;
29
- }
30
- function findItem(items, name) {
31
- return items.find((it) => getText(it['@_Name']) === name);
32
- }
33
- function getItemText(item) {
34
- if (!item)
35
- return '';
36
- const direct = getText(item, '');
37
- if (direct)
38
- return direct;
39
- const subItems = ensureArray(item.Item);
40
- return subItems.length > 0 ? getText(subItems[0]) : '';
41
- }
42
- function getItemTexts(item) {
43
- if (!item)
44
- return [];
45
- const subItems = ensureArray(item.Item);
46
- return subItems.map((si) => getText(si)).filter((s) => s.length > 0);
47
- }
48
- function extractTreeNumbers(items) {
49
- const idxLinks = findItem(items, 'DS_IdxLinks');
50
- if (!idxLinks)
51
- return [];
52
- const linkStructures = ensureArray(idxLinks.Item);
53
- const treeNums = [];
54
- for (const struct of linkStructures) {
55
- const structItems = ensureArray(struct.Item);
56
- const treeItem = findItem(structItems, 'TreeNum');
57
- const val = treeItem ? getText(treeItem) : '';
58
- // Supplementary Concept Records (SCRs) surface a non-navigable mapped-heading
59
- // pointer (e.g. "@218176") in the same TreeNum field. Drop it so treeNumbers
60
- // holds only real, navigable MeSH tree numbers. (#76)
61
- if (val && !val.startsWith('@'))
62
- treeNums.push(val);
63
- }
64
- return treeNums;
19
+ const EXACT_MATCH_CANDIDATES = 5;
20
+ /**
21
+ * The record's tree numbers. Two `TreeNum` values are not tree positions: a
22
+ * supplementary concept record's mapped-heading pointer (`@218176`, #76), and the
23
+ * record's own UI, which is the only `TreeNum` a pharmacological-action record
24
+ * carries (#247).
25
+ */
26
+ function extractTreeNumbers(doc, meshId) {
27
+ const idxLinks = doc.DS_IdxLinks;
28
+ return ensureArray(idxLinks?.LinksType)
29
+ .map((link) => getText(link.TreeNum))
30
+ .filter((treeNum) => treeNum && !treeNum.startsWith('@') && treeNum !== meshId);
65
31
  }
66
- function parseSummaryRecords(data, ids, includeDetails) {
67
- if (!data || typeof data !== 'object')
68
- return ids.map((id) => ({ entrezUid: id, meshId: decodeMeshDescriptorUi(id), name: id }));
69
- const root = data;
70
- const summaryResult = root.eSummaryResult;
71
- const docSums = ensureArray((summaryResult ?? root).DocSum);
72
- if (docSums.length === 0)
73
- return ids.map((id) => ({ entrezUid: id, meshId: decodeMeshDescriptorUi(id), name: id }));
74
- return docSums.map((doc) => {
75
- const entrezUid = getText(doc.Id);
76
- const meshId = decodeMeshDescriptorUi(entrezUid);
77
- const items = ensureArray(doc.Item);
78
- const name = getItemText(findItem(items, 'DS_MeshTerms')) || meshId;
79
- const record = { entrezUid, meshId, name };
32
+ /**
33
+ * Index a `version=2.0` MeSH eSummary by Entrez UID. The canonical UI is read from
34
+ * `DS_MeSHUI`, which every record type carries; the Entrez UID encodes no UI for
35
+ * records added in recent MeSH years or for pharmacological-action records. A
36
+ * `<DocumentSummary>` holding only an `<error>` (a UID with no record) yields no
37
+ * `meshId`. (#238)
38
+ */
39
+ function parseSummaryRecords(data, includeDetails) {
40
+ const docs = ensureArray(data?.DocumentSummarySet?.DocumentSummary);
41
+ const summaries = new Map();
42
+ for (const doc of docs) {
43
+ const entrezUid = getText(doc['@_uid']);
44
+ const meshId = getOptionalText(doc.DS_MeSHUI);
45
+ const terms = doc.DS_MeshTerms;
46
+ const entryTerms = ensureArray(terms?.string)
47
+ .map((term) => getText(term))
48
+ .filter(Boolean);
49
+ const record = {
50
+ entrezUid,
51
+ ...(meshId !== undefined && { meshId }),
52
+ name: entryTerms[0] ?? entrezUid,
53
+ };
80
54
  if (includeDetails) {
81
- const scopeNote = getItemText(findItem(items, 'DS_ScopeNote'));
55
+ const scopeNote = getOptionalText(doc.DS_ScopeNote);
82
56
  if (scopeNote)
83
57
  record.scopeNote = scopeNote;
84
- const entryTerms = getItemTexts(findItem(items, 'DS_MeshTerms'));
85
58
  if (entryTerms.length > 0)
86
59
  record.entryTerms = entryTerms;
87
- const treeNumbers = extractTreeNumbers(items);
60
+ const treeNumbers = extractTreeNumbers(doc, meshId);
88
61
  if (treeNumbers.length > 0)
89
62
  record.treeNumbers = treeNumbers;
90
63
  }
91
- return record;
92
- });
64
+ summaries.set(entrezUid, { record, recordType: getOptionalText(doc.DS_RecordType) });
65
+ }
66
+ return summaries;
93
67
  }
94
68
  // ─── Tool Definition ─────────────────────────────────────────────────────────
95
69
  export const lookupMeshTool = tool('pubmed_lookup_mesh', {
@@ -141,7 +115,8 @@ export const lookupMeshTool = tool('pubmed_lookup_mesh', {
141
115
  .object({
142
116
  meshId: z
143
117
  .string()
144
- .describe('Canonical MeSH DescriptorUI (e.g. "D003924") — resolves at the MeSH Browser and NLM linked data. Falls back to the raw Entrez UID when a record is not decodable.'),
118
+ .optional()
119
+ .describe('Canonical MeSH unique identifier (e.g. "D003924", "C000626284", "Q000009") — resolves at the MeSH Browser and NLM linked data. A pharmacological-action record carries its descriptor\'s UI. Omitted only when eSummary returned no record for this UID.'),
145
120
  entrezUid: z
146
121
  .string()
147
122
  .describe('NCBI Entrez UID for this record — the join key for E-utilities (eSummary/eFetch db=mesh).'),
@@ -149,7 +124,7 @@ export const lookupMeshTool = tool('pubmed_lookup_mesh', {
149
124
  treeNumbers: z
150
125
  .array(z.string())
151
126
  .optional()
152
- .describe('Navigable MeSH tree numbers (e.g. "D02.078.370.141.450"). Omitted for supplementary concept records (SCRs), which map to a heading rather than occupying a tree position.'),
127
+ .describe('Navigable MeSH tree numbers (e.g. "D02.078.370.141.450"). Omitted for supplementary concept records (SCRs), which map to a heading rather than occupying a tree position, and for pharmacological-action records, whose descriptor carries the tree positions.'),
153
128
  scopeNote: z.string().optional().describe('Scope note'),
154
129
  entryTerms: z.array(z.string()).optional().describe('Synonyms / entry terms'),
155
130
  })
@@ -187,10 +162,24 @@ export const lookupMeshTool = tool('pubmed_lookup_mesh', {
187
162
  // hold back. The first page leads with it; later pages skip it where it ranks.
188
163
  const exactSearch = hasFieldTag
189
164
  ? undefined
190
- : ncbi.eSearch({ db: 'mesh', term: `${query}[MH]`, retmax: 1 }, callOpts);
165
+ : ncbi.eSearch({ db: 'mesh', term: `${query}[MH]`, retmax: EXACT_MATCH_CANDIDATES }, callOpts);
191
166
  const [broadResult, exactResult] = await Promise.all([broadSearch, exactSearch]);
192
167
  const totalCount = broadResult.count;
193
- const pinnedUid = exactResult?.idList[0];
168
+ const exactIds = exactResult?.idList ?? [];
169
+ const fetchSummaries = (uids) => ncbi
170
+ .eSummary({ db: 'mesh', id: uids.join(','), version: '2.0' }, callOpts)
171
+ .then((data) => parseSummaryRecords(data, includeDetails));
172
+ // A drug-class heading matches its pharmacological-action record ahead of its
173
+ // descriptor. When the heading matches more than one record and this page
174
+ // leads with the pin or holds a candidate at its rank, read the record types
175
+ // first — the page's own summaries ride the same request — and pin the first
176
+ // that is not a pharmacological-action record. (#247)
177
+ const pinShapesPage = offset === 0 || exactIds.some((id) => broadResult.idList.includes(id));
178
+ const prefetched = exactIds.length > 1 && pinShapesPage
179
+ ? await fetchSummaries([...new Set([...exactIds, ...broadResult.idList])])
180
+ : undefined;
181
+ const pinnedUid = exactIds.find((id) => prefetched?.get(id)?.recordType !== 'pharmacological-action') ??
182
+ exactIds[0];
194
183
  const ids = [];
195
184
  if (pinnedUid !== undefined && offset === 0)
196
185
  ids.push(pinnedUid);
@@ -228,8 +217,8 @@ export const lookupMeshTool = tool('pubmed_lookup_mesh', {
228
217
  ctx.enrich.notice(notice);
229
218
  return { query, offset, ...(hasMore && { nextOffset }), results: [] };
230
219
  }
231
- const summaryData = await ncbi.eSummary({ db: 'mesh', id: ids.join(',') }, callOpts);
232
- const results = parseSummaryRecords(summaryData, ids, includeDetails);
220
+ const summaries = prefetched ?? (await fetchSummaries(ids));
221
+ const results = ids.map((id) => summaries.get(id)?.record ?? { entrezUid: id, name: id });
233
222
  const queryLower = query.toLowerCase();
234
223
  results.sort((a, b) => {
235
224
  const aExact = a.name.toLowerCase() === queryLower ? 0 : 1;
@@ -255,7 +244,8 @@ export const lookupMeshTool = tool('pubmed_lookup_mesh', {
255
244
  }
256
245
  for (const r of result.results) {
257
246
  lines.push(`\n## ${r.name}`);
258
- lines.push(`- **MeSH ID:** ${r.meshId}`);
247
+ if (r.meshId)
248
+ lines.push(`- **MeSH ID:** ${r.meshId}`);
259
249
  lines.push(`- **Entrez UID:** ${r.entrezUid}`);
260
250
  if (r.treeNumbers?.length)
261
251
  lines.push(`- **Tree Numbers:** ${r.treeNumbers.join(', ')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"lookup-mesh.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/lookup-mesh.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lookup-mesh.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/lookup-mesh.tool.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * and returns each one's complete, untruncated abstract. That pair is the only
5
5
  * identifier many PPR, PAT, and AGR records carry, so `pubmed_fetch_articles`
6
6
  * (PMIDs) and `pubmed_fetch_fulltext` (PMCIDs / PMIDs / DOIs) cannot reach them.
7
+ * A lower-case `source` is read as its upper-case code.
7
8
  *
8
9
  * Only registered when `EUROPEPMC_ENABLED=true` (the default). The handler
9
10
  * fails fast with a configuration error if the service is unset, since the
@@ -15,13 +16,13 @@ import { z } from '@cyanheads/mcp-ts-core';
15
16
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
16
17
  export declare const pubmedEuropepmcFetchTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
17
18
  records: z.ZodArray<z.ZodObject<{
18
- source: z.ZodEnum<{
19
+ source: z.ZodPreprocess<z.ZodEnum<{
19
20
  AGR: "AGR";
20
21
  MED: "MED";
21
22
  PAT: "PAT";
22
23
  PMC: "PMC";
23
24
  PPR: "PPR";
24
- }>;
25
+ }>, unknown>;
25
26
  epmcId: z.ZodString;
26
27
  }, z.core.$strip>>;
27
28
  maxResponseCharacters: z.ZodOptional<z.ZodNumber>;
@@ -50,13 +51,13 @@ export declare const pubmedEuropepmcFetchTool: import("@cyanheads/mcp-ts-core").
50
51
  epmcUrl: z.ZodString;
51
52
  }, z.core.$strip>>;
52
53
  notFound: z.ZodOptional<z.ZodArray<z.ZodObject<{
53
- source: z.ZodEnum<{
54
+ source: z.ZodPreprocess<z.ZodEnum<{
54
55
  AGR: "AGR";
55
56
  MED: "MED";
56
57
  PAT: "PAT";
57
58
  PMC: "PMC";
58
59
  PPR: "PPR";
59
- }>;
60
+ }>, unknown>;
60
61
  epmcId: z.ZodString;
61
62
  }, z.core.$strip>>>;
62
63
  deferred: z.ZodOptional<z.ZodObject<{
@@ -92,7 +93,7 @@ export declare const pubmedEuropepmcFetchTool: import("@cyanheads/mcp-ts-core").
92
93
  }, {
93
94
  readonly reason: 'europepmc_invalid_input';
94
95
  readonly code: JsonRpcErrorCode.ValidationError;
95
- readonly when: 'Europe PMC rejected the request input — an error message in place of results, an empty response to a sort with an undocumented field or no asc/desc direction, or a pagination cursor it cannot read (an empty response on the last attempt the retry budget allows, or a second HTTP 503 when the first page of the same query is served).';
96
+ readonly when: 'Europe PMC rejected the request input — an error message in place of results; a sort it cannot use (one whose keys are not each a field plus asc/desc, rejected before any request; an empty response to a sort with an undocumented field; or a second HTTP 503 to a sorted search when the same query without the sort is served); or a pagination cursor it cannot read (an empty response on the last attempt the retry budget allows, or a second HTTP 503 when the first page of the same query is served).';
96
97
  readonly recovery: "Fix the rejected input before retrying — the query, the sort, or the cursorMark (pass the previous response's `nextCursorMark` verbatim, or `*` to restart); the same input will most likely be rejected again.";
97
98
  readonly retryable: false;
98
99
  readonly thrownBy: 'service';
@@ -1 +1 @@
1
- {"version":3,"file":"pubmed-europepmc-fetch.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAiIjE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAWvB,oBAAoB;;mBAEtB,6DAA6D;uBACzD,mFAAmF;;;;EAwNjG,CAAC"}
1
+ {"version":3,"file":"pubmed-europepmc-fetch.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAkIjE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAWvB,oBAAoB;;mBAEtB,6DAA6D;uBACzD,mFAAmF;;;;EA8NjG,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * and returns each one's complete, untruncated abstract. That pair is the only
5
5
  * identifier many PPR, PAT, and AGR records carry, so `pubmed_fetch_articles`
6
6
  * (PMIDs) and `pubmed_fetch_fulltext` (PMCIDs / PMIDs / DOIs) cannot reach them.
7
+ * A lower-case `source` is read as its upper-case code.
7
8
  *
8
9
  * Only registered when `EUROPEPMC_ENABLED=true` (the default). The handler
9
10
  * fails fast with a configuration error if the service is unset, since the
@@ -17,8 +18,9 @@ import { EUROPEPMC_SERVICE_ERRORS } from '../../../services/error-contracts.js';
17
18
  import { getEuropePmcService } from '../../../services/europe-pmc/europe-pmc-service.js';
18
19
  import { EUROPEPMC_ALL_SOURCES } from '../../../services/europe-pmc/types.js';
19
20
  import { toDisplayText } from '../../../services/ncbi/parsing/text-helpers.js';
20
- import { fitWholeItems } from './_budget.js';
21
+ import { buildDeferralNotice, fitWholeItems } from './_budget.js';
21
22
  import { conceptMeta, EDAM_ACCESSION, EDAM_DATA_RETRIEVAL, SCHEMA_SCHOLARLY_ARTICLE, } from './_concepts.js';
23
+ import { europePmcSourceInputSchema } from './_schemas.js';
22
24
  import { escapeMarkdownInline } from './_text.js';
23
25
  const SourceEnum = z.enum(EUROPEPMC_ALL_SOURCES);
24
26
  /**
@@ -35,7 +37,7 @@ const epmcIdSchema = z
35
37
  const PMCID_SHAPED_RE = /^PMC\d+$/i;
36
38
  const RecordRefSchema = z
37
39
  .object({
38
- source: SourceEnum.describe("Europe PMC source corpus — `MED` (PubMed), `PMC` (PubMed Central), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola). Copy it from the search hit's `source`. `PMC` paired with a PMCID resolves whether or not the article is also indexed in PubMed, and a PubMed-indexed one comes back as its canonical `MED` record carrying that PMCID in `pmcId`."),
40
+ source: europePmcSourceInputSchema.describe("Europe PMC source corpus — `MED` (PubMed), `PMC` (PubMed Central), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola). Copy it from the search hit's `source`. `PMC` paired with a PMCID resolves whether or not the article is also indexed in PubMed, and a PubMed-indexed one comes back as its canonical `MED` record carrying that PMCID in `pmcId`."),
39
41
  epmcId: epmcIdSchema.describe("Europe PMC's own record id within that source. Copy it from the search hit's `epmcId` — for `MED` records this is the PMID; for the other sources it is an EPMC-native accession."),
40
42
  })
41
43
  .describe('One record address: the Europe PMC source corpus plus its id within that corpus');
@@ -95,12 +97,12 @@ const DeferredSchema = z
95
97
  .describe("The deferred records, in response order, each as the resolved record's own `source` + `epmcId` — a `PMC` request answered by its `MED` record is listed as that `MED` pair. Pass them back as `records` to retrieve them. Never contains a pair from `notFound`."),
96
98
  nextDeferredCharacters: z
97
99
  .number()
98
- .describe('Serialized size of the next deferred record — the first entry in `records`, where the response stopped. Raise `maxResponseCharacters` to at least this to make progress; a smaller record further down `records` cannot be reached until this one fits.'),
100
+ .describe('Serialized size of the next deferred record — the first entry in `records`, where the response stopped — and the continuation ceiling: re-calling with the deferred pairs needs `maxResponseCharacters` ≥ this to return anything, and a smaller record further down `records` cannot be reached until this one fits. Repeating this same call needs `maxResponseCharacters` ≥ `returnedCharacters` + this to return this record as well.'),
99
101
  })
100
102
  .describe('Continuation state for records the whole-response budget withheld. Present only when `maxResponseCharacters` deferred at least one record.');
101
103
  // ─── Tool Definition ─────────────────────────────────────────────────────────
102
104
  export const pubmedEuropepmcFetchTool = tool('pubmed_europepmc_fetch', {
103
- description: "Fetch complete Europe PMC records — including the full, untruncated abstract — for records addressed by `source` plus `epmcId`. Pairs with `pubmed_europepmc_search`, which returns bounded `abstractSnippet` values and flags cut ones with `abstractTruncated: true`; pass those hits' `source` and `epmcId` here to read the whole abstract. This is the retrieval path for preprint (`PPR`), patent (`PAT`), and Agricola (`AGR`) records, which frequently carry no PMID and no DOI, so `pubmed_fetch_articles` and `pubmed_fetch_fulltext` cannot address them. Up to 25 records per call. Set `maxResponseCharacters` to bound the whole response: records past the ceiling are deferred whole and listed in `deferred.records` for a follow-up call.",
105
+ description: "Fetch complete Europe PMC records — including the full, untruncated abstract — addressed as `records: [{ source, epmcId }]`, an array even for one record. Pairs with `pubmed_europepmc_search`, which returns bounded `abstractSnippet` values and flags cut ones with `abstractTruncated: true`; copy each hit's `source` and `epmcId` into `records` here to read the whole abstract. This is the retrieval path for preprint (`PPR`), patent (`PAT`), and Agricola (`AGR`) records, which frequently carry no PMID and no DOI, so `pubmed_fetch_articles` and `pubmed_fetch_fulltext` cannot address them. Up to 25 records per call. Set `maxResponseCharacters` to bound the whole response: records past the ceiling are deferred whole and listed in `deferred.records` for a follow-up call.",
104
106
  annotations: { readOnlyHint: true, openWorldHint: true },
105
107
  _meta: conceptMeta([SCHEMA_SCHOLARLY_ARTICLE, EDAM_DATA_RETRIEVAL, EDAM_ACCESSION]),
106
108
  sourceUrl: 'https://github.com/cyanheads/pubmed-mcp-server/blob/main/src/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.ts',
@@ -244,7 +246,11 @@ export const pubmedEuropepmcFetchTool = tool('pubmed_europepmc_fetch', {
244
246
  }
245
247
  if (deferred) {
246
248
  ctx.enrich({ truncated: true });
247
- notices.push(buildDeferralNotice(deferred));
249
+ notices.push(buildDeferralNotice(deferred, {
250
+ noun: 'record',
251
+ ids: deferred.records.map(formatPair).join(', '),
252
+ recall: 'pubmed_europepmc_fetch with those pairs as `records: [{ source, epmcId }]`',
253
+ }));
248
254
  }
249
255
  if (notices.length > 0)
250
256
  ctx.enrich.notice(notices.join(' '));
@@ -301,16 +307,4 @@ export const pubmedEuropepmcFetchTool = tool('pubmed_europepmc_fetch', {
301
307
  function formatPair(pair) {
302
308
  return `${pair.source}/${pair.epmcId}`;
303
309
  }
304
- /**
305
- * Compose the recovery notice for a response the whole-response budget bounded.
306
- * Names what was spent, which pairs are still retrievable, and the ceiling the
307
- * next call has to clear — so a caller reading only `content[]` can resume
308
- * without inspecting `deferred`. (#188)
309
- */
310
- function buildDeferralNotice(deferred) {
311
- const spent = deferred.returnedCharacters === 0
312
- ? `The first record alone exceeds the requested maxResponseCharacters of ${deferred.maxResponseCharacters}, so none were returned.`
313
- : `Response character budget reached: ${deferred.returnedCharacters} of ${deferred.maxResponseCharacters} characters returned.`;
314
- return `${spent} ${deferred.deferredCount} resolved record(s) were deferred whole: ${deferred.records.map(formatPair).join(', ')}. Re-call pubmed_europepmc_fetch with those pairs as \`records\` to retrieve them, or raise maxResponseCharacters to at least ${deferred.nextDeferredCharacters} — the size of the next deferred record.`;
315
- }
316
310
  //# sourceMappingURL=pubmed-europepmc-fetch.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pubmed-europepmc-fetch.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,KAAK,CACJ,8BAA8B,EAC9B,4NAA4N,CAC7N;KACA,GAAG,CAAC,EAAE,CAAC,CAAC;AAEX,qFAAqF;AACrF,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,MAAM,EAAE,UAAU,CAAC,QAAQ,CACzB,2VAA2V,CAC5V;IACD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAC3B,mLAAmL,CACpL;CACF,CAAC;KACD,QAAQ,CAAC,iFAAiF,CAAC,CAAC;AAE/F,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC7E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC9D,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4GAA4G,CAC7G;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kGAAkG,CACnG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC3D,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACnE,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qVAAqV,CACtV;IACH,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,cAAc,EAAE,CAAC;SACd,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,kJAAkJ,CACnJ;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mLAAmL,CACpL;IACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACvD,CAAC;KACD,QAAQ,CAAC,4BAA4B,CAAC,CAAC;AAE1C,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,qBAAqB,EAAE,CAAC;SACrB,MAAM,EAAE;SACR,QAAQ,CAAC,wEAAwE,CAAC;IACrF,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,CAAC,wDAAwD,CAAC;IACrE,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,mEAAmE,CAAC;IAChF,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAC/D,+DAA+D,CAChE,CACF;SACA,QAAQ,CACP,kQAAkQ,CACnQ;IACH,sBAAsB,EAAE,CAAC;SACtB,MAAM,EAAE;SACR,QAAQ,CACP,yPAAyP,CAC1P;CACJ,CAAC;KACD,QAAQ,CACP,4IAA4I,CAC7I,CAAC;AAEJ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE;IACrE,WAAW,EACT,8tBAA8tB;IAChuB,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,WAAW,CAAC,CAAC,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACnF,SAAS,EACP,0HAA0H;IAE5H,MAAM,EAAE;QACN,GAAG,wBAAwB;QAC3B;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,6DAA6D;YACnE,QAAQ,EAAE,mFAAmF;SAC9F;KACO;IAEV,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,eAAe,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CACP,0JAA0J,CAC3J;QACH,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACP,6fAA6f,CAC9f;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,mBAAmB,CAAC;aAC1B,QAAQ,CACP,wKAAwK,CACzK;QACH,QAAQ,EAAE,CAAC;aACR,KAAK,CAAC,eAAe,CAAC;aACtB,QAAQ,EAAE;aACV,QAAQ,CACP,oLAAoL,CACrL;QACH,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;KACpC,CAAC;IAEF,6EAA6E;IAC7E,0EAA0E;IAC1E,qDAAqD;IACrD,UAAU,EAAE;QACV,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kMAAkM,CACnM;QACH,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,gLAAgL,CACjL;KACJ;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,CAAC,IAAI,CACZ,oBAAoB,EACpB,mFAAmF,CACpF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,oEAAoE;YACpE,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,uEAAuE;YACvE,wDAAwD;YACxD,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,MAAgD;gBAC1D,MAAM,EAAE,CAAC,CAAC,EAAE;gBACZ,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;gBAC3B,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxC,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC;gBAC/E,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC/B,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAClC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;gBAC7E,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBACjE,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;gBAC3E,OAAO,EAAE,iCAAiC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE;aAC7D,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,4EAA4E;QAC5E,oCAAoC;QACpC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAU,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACzC,0EAA0E;YAC1E,uEAAuE;YACvE,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,CAAC,CAAC,KAAK;gBAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9F,0EAA0E;QAC1E,gEAAgE;QAChE,0EAA0E;QAC1E,gDAAgD;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,qBAAqB,CAAC;QAC5C,MAAM,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,IAAI,eAAe,CAAC;QAC7C,MAAM,QAAQ,GACZ,OAAO,KAAK,SAAS,IAAI,GAAG,EAAE,sBAAsB,KAAK,SAAS;YAChE,CAAC,CAAC;gBACE,qBAAqB,EAAE,OAAO;gBAC9B,kBAAkB,EAAE,GAAG,CAAC,cAAc;gBACtC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;gBAClC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1E,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;aACnD;YACH,CAAC,CAAC,SAAS,CAAC;QAEhB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;SACtD,CAAC,CAAC;QAEH,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC,CAAC,mHAAmH;YACrH,CAAC,CAAC,EAAE,CAAC;QAEP,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CACV,gQAAgQ,SAAS,EAAE,CAC5Q,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,qCAAqC,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,qBAAqB,QAAQ;iBACzG,GAAG,CAAC,UAAU,CAAC;iBACf,IAAI,CACH,IAAI,CACL,sGAAsG,SAAS,EAAE,CACrH,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO;YACP,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YACxC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,CAAC,uBAAuB,EAAE,iBAAiB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAElF,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,wCAAwC,CAAC,CAAC,aAAa,gBAAgB,CAAC,CAAC,kBAAkB,OAAO,CAAC,CAAC,qBAAqB,uDAAuD,CAAC,CAAC,sBAAsB,aAAa,EACrN,yFAAyF,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChI,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,yEAAyE;YACzE,gEAAgE;YAChE,KAAK,CAAC,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,mBAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,CAAC,oBAAoB;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YACtF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC;AAEH,kFAAkF;AAClF,SAAS,UAAU,CAAC,IAAwC;IAC1D,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,QAAwC;IACnE,MAAM,KAAK,GACT,QAAQ,CAAC,kBAAkB,KAAK,CAAC;QAC/B,CAAC,CAAC,yEAAyE,QAAQ,CAAC,qBAAqB,0BAA0B;QACnI,CAAC,CAAC,sCAAsC,QAAQ,CAAC,kBAAkB,OAAO,QAAQ,CAAC,qBAAqB,uBAAuB,CAAC;IACpI,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,aAAa,4CAA4C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iIAAiI,QAAQ,CAAC,sBAAsB,0CAA0C,CAAC;AAC7U,CAAC"}
1
+ {"version":3,"file":"pubmed-europepmc-fetch.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * because EPMC's search API doesn't support offset. `max_results`, `limit`, and
7
7
  * `maxResults` are accepted as aliases for `pageSize`. A `query` with no search
8
8
  * term (`()`, `<b></b>`) or a blank `cursorMark` is rejected before Europe PMC
9
- * is called.
9
+ * is called. A lower-case `sources` code is read as its upper-case form.
10
10
  * The total hit count rides in `output` so `format()` can state it in the
11
11
  * header, and `searchUrl` opens the source-filtered query Europe PMC actually
12
12
  * ran.
@@ -23,13 +23,13 @@ export declare const pubmedEuropepmcSearchTool: import("@cyanheads/mcp-ts-core")
23
23
  query: z.ZodString;
24
24
  pageSize: z.ZodDefault<z.ZodNumber>;
25
25
  cursorMark: z.ZodDefault<z.ZodString>;
26
- sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
26
+ sources: z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodEnum<{
27
27
  AGR: "AGR";
28
28
  MED: "MED";
29
29
  PAT: "PAT";
30
30
  PMC: "PMC";
31
31
  PPR: "PPR";
32
- }>>>;
32
+ }>, unknown>>>;
33
33
  resultType: z.ZodDefault<z.ZodEnum<{
34
34
  core: "core";
35
35
  lite: "lite";
@@ -81,7 +81,7 @@ export declare const pubmedEuropepmcSearchTool: import("@cyanheads/mcp-ts-core")
81
81
  }, {
82
82
  readonly reason: 'europepmc_invalid_input';
83
83
  readonly code: JsonRpcErrorCode.ValidationError;
84
- readonly when: 'Europe PMC rejected the request input — an error message in place of results, an empty response to a sort with an undocumented field or no asc/desc direction, or a pagination cursor it cannot read (an empty response on the last attempt the retry budget allows, or a second HTTP 503 when the first page of the same query is served).';
84
+ readonly when: 'Europe PMC rejected the request input — an error message in place of results; a sort it cannot use (one whose keys are not each a field plus asc/desc, rejected before any request; an empty response to a sort with an undocumented field; or a second HTTP 503 to a sorted search when the same query without the sort is served); or a pagination cursor it cannot read (an empty response on the last attempt the retry budget allows, or a second HTTP 503 when the first page of the same query is served).';
85
85
  readonly recovery: "Fix the rejected input before retrying — the query, the sort, or the cursorMark (pass the previous response's `nextCursorMark` verbatim, or `*` to restart); the same input will most likely be rejected again.";
86
86
  readonly retryable: false;
87
87
  readonly thrownBy: 'service';
@@ -1 +1 @@
1
- {"version":3,"file":"pubmed-europepmc-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-search.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAgCjE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAYxB,cAAc;;mBAEhB,gLAAgL;uBAEpL,gIAAgI;;;qBAI1H,oBAAoB;;mBAEtB,6DAA6D;uBACzD,mFAAmF;;;;;;;;;;;EAgUjG,CAAC"}
1
+ {"version":3,"file":"pubmed-europepmc-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pubmed-europepmc-search.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAiCjE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAYxB,cAAc;;mBAEhB,gLAAgL;uBAEpL,gIAAgI;;;qBAI1H,oBAAoB;;mBAEtB,6DAA6D;uBACzD,mFAAmF;;;;;;;;;;;EAgUjG,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * because EPMC's search API doesn't support offset. `max_results`, `limit`, and
7
7
  * `maxResults` are accepted as aliases for `pageSize`. A `query` with no search
8
8
  * term (`()`, `<b></b>`) or a blank `cursorMark` is rejected before Europe PMC
9
- * is called.
9
+ * is called. A lower-case `sources` code is read as its upper-case form.
10
10
  * The total hit count rides in `output` so `format()` can state it in the
11
11
  * header, and `searchUrl` opens the source-filtered query Europe PMC actually
12
12
  * ran.
@@ -25,6 +25,7 @@ import { getEuropePmcService } from '../../../services/europe-pmc/europe-pmc-ser
25
25
  import { EUROPEPMC_ALL_SOURCES, EUROPEPMC_DEFAULT_SOURCES, } from '../../../services/europe-pmc/types.js';
26
26
  import { toDisplayText } from '../../../services/ncbi/parsing/text-helpers.js';
27
27
  import { conceptMeta, EDAM_DATABASE_SEARCH, EDAM_PUBMED_ID, SCHEMA_SEARCH_ACTION, } from './_concepts.js';
28
+ import { europePmcSourceInputSchema } from './_schemas.js';
28
29
  import { escapeMarkdownInline, sliceCodeUnits } from './_text.js';
29
30
  import { hasVisibleText } from './_visible-text.js';
30
31
  const SourceEnum = z.enum(['MED', 'PMC', 'PPR', 'PAT', 'AGR']);
@@ -38,7 +39,7 @@ const SourceEnum = z.enum(['MED', 'PMC', 'PPR', 'PAT', 'AGR']);
38
39
  const ABSTRACT_SNIPPET_LIMIT = 400;
39
40
  // ─── Tool Definition ─────────────────────────────────────────────────────────
40
41
  export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
41
- description: 'Search Europe PMC, a broad open-access biomedical corpus. Surfaces preprints (`source: PPR`), patents (`source: PAT`), Agricola (`source: AGR`), plus everything in PubMed (`MED`) and PMC. Use when additional coverage is needed — preprints and EPMC-only OA records are the typical recovery. Paginate via `cursorMark`. Defaults to `MED`, `PMC`, and `PPR`; pass `sources` to include `PAT` / `AGR`. Abstracts arrive as a bounded `abstractSnippet` with `abstractTruncated` marking the cut ones — pass a hit’s `source` and `epmcId` to `pubmed_europepmc_fetch` for the complete abstract.',
42
+ description: 'Search Europe PMC, a broad open-access biomedical corpus. Surfaces preprints (`source: PPR`), patents (`source: PAT`), Agricola (`source: AGR`), plus everything in PubMed (`MED`) and PMC. Use when additional coverage is needed — preprints and EPMC-only OA records are the typical recovery. Paginate via `cursorMark`. Defaults to `MED`, `PMC`, and `PPR`; pass `sources` to include `PAT` / `AGR`. Abstracts arrive as a bounded `abstractSnippet` with `abstractTruncated` marking the cut ones — pass a hit to `pubmed_europepmc_fetch` as `records: [{ source, epmcId }]` for the complete abstract.',
42
43
  annotations: { readOnlyHint: true, openWorldHint: true },
43
44
  _meta: conceptMeta([SCHEMA_SEARCH_ACTION, EDAM_DATABASE_SEARCH, EDAM_PUBMED_ID]),
44
45
  sourceUrl: 'https://github.com/cyanheads/pubmed-mcp-server/blob/main/src/mcp-server/tools/definitions/pubmed-europepmc-search.tool.ts',
@@ -80,7 +81,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
80
81
  .default('*')
81
82
  .describe("Pagination cursor. Use `*` (default) for the first page; pass the previous response's `nextCursorMark` verbatim for subsequent pages. A whitespace-only cursor, invisible characters included, is rejected before the request, and a cursor Europe PMC cannot read fails with `europepmc_invalid_input` once a retry of it fails again while the first page of the same query is served."),
82
83
  sources: z
83
- .array(SourceEnum)
84
+ .array(europePmcSourceInputSchema)
84
85
  .min(1)
85
86
  .optional()
86
87
  .describe(`Filter to specific EPMC sources. Defaults to ${EUROPEPMC_DEFAULT_SOURCES.join(', ')} when omitted. Pass an explicit array including PAT or AGR to broaden coverage. Allowed values: ${EUROPEPMC_ALL_SOURCES.join(', ')}.`),
@@ -91,7 +92,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
91
92
  sort: z
92
93
  .string()
93
94
  .optional()
94
- .describe('Optional EPMC sort: `<field> asc|desc`, or several comma-separated keys applied in order (`PUB_YEAR desc, CITED desc`). Documented sortable fields: `P_PDATE_D` (publication date), `CITED` (citation count), `AUTH_FIRST` (first author surname), `PUB_YEAR` (publication year). Examples: `P_PDATE_D desc` (newest first), `CITED desc` (most cited). Omit for relevance ranking. Field and direction match case-insensitively. A field outside the documented set may be honored, silently ignored, or rejected, and a sort using one — or a key without `asc`/`desc` — can fail with `europepmc_invalid_input` naming it, even when Europe PMC honors the field. Note: `P_PDATE_D` is ignored for preprint-only (`sources: ["PPR"]`) result sets — preprints have no populated publication date, so use `PUB_YEAR` to order preprints by date.'),
95
+ .describe('Optional EPMC sort: `<field> asc|desc`, or several comma-separated keys applied in order (`PUB_YEAR desc, CITED desc`). Documented sortable fields: `P_PDATE_D` (publication date), `CITED` (citation count), `AUTH_FIRST` (first author surname), `PUB_YEAR` (publication year), `FIRST_IDATE_D` (date first indexed in Europe PMC). Examples: `P_PDATE_D desc` (newest first), `CITED desc` (most cited). Omit for relevance ranking; `relevance` or `relevance desc` is sent as no sort. Field and direction match case-insensitively. Each key must be one field plus `asc` or `desc`: a key without a direction, an empty key, or an extra word fails with `europepmc_invalid_input` before the request. A field outside the documented set may be honored, silently ignored, or refused — a sort Europe PMC refuses fails with `europepmc_invalid_input` naming it, and an empty Europe PMC response to a sort with an undocumented field fails the same way, even when Europe PMC honors the field. Note: `P_PDATE_D` is ignored for preprint-only (`sources: ["PPR"]`) result sets — preprints have no populated publication date, so use `PUB_YEAR desc` to order preprints by date.'),
95
96
  }),
96
97
  output: z.object({
97
98
  hits: z
@@ -100,7 +101,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
100
101
  source: SourceEnum.describe('Europe PMC source — `MED` (PubMed), `PMC` (PubMed Central), `PPR` (preprint), `PAT` (patent), `AGR` (Agricola)'),
101
102
  epmcId: z
102
103
  .string()
103
- .describe("Europe PMC's internal record id. Pass it with this hit's `source` to `pubmed_europepmc_fetch` for the complete record. Europe PMC's `fullTextXML` is keyed on `pmcId`, not on this id, so records without a PMC counterpart have no full text to fetch."),
104
+ .describe("Europe PMC's internal record id. Pass it with this hit's `source` to `pubmed_europepmc_fetch` as `records: [{ source, epmcId }]` for the complete record. Europe PMC's `fullTextXML` is keyed on `pmcId`, not on this id, so records without a PMC counterpart have no full text to fetch."),
104
105
  title: z
105
106
  .string()
106
107
  .optional()
@@ -139,7 +140,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
139
140
  abstractTruncated: z
140
141
  .boolean()
141
142
  .optional()
142
- .describe('Whether `abstractSnippet` was cut short of the full abstract. Retrieve the complete text with `pubmed_europepmc_fetch` using this record’s `source` and `epmcId`. Present whenever `abstractSnippet` is; omitted when Europe PMC carries no abstract.'),
143
+ .describe('Whether `abstractSnippet` was cut short of the full abstract. Retrieve the complete text by passing this record to `pubmed_europepmc_fetch` as `records: [{ source, epmcId }]`. Present whenever `abstractSnippet` is; omitted when Europe PMC carries no abstract.'),
143
144
  citedByCount: z.number().optional().describe('Citation count reported by Europe PMC'),
144
145
  epmcUrl: z.string().describe('Europe PMC article URL'),
145
146
  })
@@ -261,7 +262,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
261
262
  }
262
263
  else if (sortField === 'P_PDATE_D' && isPprOnly) {
263
264
  notice =
264
- 'Europe PMC ignores `P_PDATE_D` sort for preprint-only (PPR) results — preprints have no populated publication date, so records are returned in relevance order, not by date. To order preprints by date, sort by `PUB_YEAR`, or re-rank the returned page by each record’s `firstPublicationDate`.';
265
+ 'Europe PMC ignores `P_PDATE_D` sort for preprint-only (PPR) results — preprints have no populated publication date, so records are returned in relevance order, not by date. To order preprints by date, sort by `PUB_YEAR desc`, or re-rank the returned page by each record’s `firstPublicationDate`.';
265
266
  }
266
267
  ctx.log.info('pubmed_europepmc_search completed', {
267
268
  hitCount: result.hitCount,
@@ -323,7 +324,7 @@ export const pubmedEuropepmcSearchTool = tool('pubmed_europepmc_search', {
323
324
  if (h.abstractSnippet) {
324
325
  lines.push(`\n${h.abstractSnippet}`);
325
326
  if (h.abstractTruncated) {
326
- lines.push(`_Abstract truncated at ${ABSTRACT_SNIPPET_LIMIT} characters — call \`pubmed_europepmc_fetch\` with this record's \`source\` and \`epmcId\` for the complete text._`);
327
+ lines.push(`_Abstract truncated at ${ABSTRACT_SNIPPET_LIMIT} characters — pass this hit to \`pubmed_europepmc_fetch\` as \`records: [{ source, epmcId }]\` for the complete text._`);
327
328
  }
328
329
  }
329
330
  }