@cyanheads/pubmed-mcp-server 2.10.14 → 2.10.16

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 (78) hide show
  1. package/AGENTS.md +4 -4
  2. package/CLAUDE.md +4 -4
  3. package/README.md +24 -15
  4. package/changelog/2.10.x/2.10.14.md +1 -0
  5. package/changelog/2.10.x/2.10.15.md +28 -0
  6. package/changelog/2.10.x/2.10.16.md +26 -0
  7. package/dist/mcp-server/tools/definitions/_schemas.d.ts +11 -1
  8. package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
  9. package/dist/mcp-server/tools/definitions/_schemas.js +13 -1
  10. package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts +10 -2
  12. package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/convert-ids.tool.js +41 -9
  14. package/dist/mcp-server/tools/definitions/convert-ids.tool.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +10 -3
  16. package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +12 -4
  18. package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +16 -5
  20. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js +35 -12
  22. package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +7 -63
  24. package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/find-related.tool.js +42 -25
  26. package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts +10 -3
  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 +12 -4
  30. package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts +18 -4
  32. package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/lookup-citation.tool.js +62 -41
  34. package/dist/mcp-server/tools/definitions/lookup-citation.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts +10 -5
  36. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js +3 -1
  38. package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts +6 -3
  40. package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts.map +1 -1
  41. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts +11 -5
  42. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js +20 -11
  44. package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js.map +1 -1
  45. package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts +16 -5
  46. package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts.map +1 -1
  47. package/dist/mcp-server/tools/definitions/search-articles.tool.js +71 -11
  48. package/dist/mcp-server/tools/definitions/search-articles.tool.js.map +1 -1
  49. package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts +12 -6
  50. package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts.map +1 -1
  51. package/dist/mcp-server/tools/definitions/spell-check.tool.js +4 -3
  52. package/dist/mcp-server/tools/definitions/spell-check.tool.js.map +1 -1
  53. package/dist/services/error-contracts.d.ts +32 -15
  54. package/dist/services/error-contracts.d.ts.map +1 -1
  55. package/dist/services/error-contracts.js +32 -15
  56. package/dist/services/error-contracts.js.map +1 -1
  57. package/dist/services/europe-pmc/api-client.d.ts +24 -9
  58. package/dist/services/europe-pmc/api-client.d.ts.map +1 -1
  59. package/dist/services/europe-pmc/api-client.js +47 -18
  60. package/dist/services/europe-pmc/api-client.js.map +1 -1
  61. package/dist/services/europe-pmc/europe-pmc-service.d.ts +22 -1
  62. package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
  63. package/dist/services/europe-pmc/europe-pmc-service.js +102 -43
  64. package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
  65. package/dist/services/ncbi/ncbi-service.d.ts +18 -24
  66. package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
  67. package/dist/services/ncbi/ncbi-service.js +111 -120
  68. package/dist/services/ncbi/ncbi-service.js.map +1 -1
  69. package/dist/services/ncbi/request-queue.d.ts +22 -30
  70. package/dist/services/ncbi/request-queue.d.ts.map +1 -1
  71. package/dist/services/ncbi/request-queue.js +29 -128
  72. package/dist/services/ncbi/request-queue.js.map +1 -1
  73. package/dist/services/ncbi/response-handler.d.ts +14 -1
  74. package/dist/services/ncbi/response-handler.d.ts.map +1 -1
  75. package/dist/services/ncbi/response-handler.js +65 -9
  76. package/dist/services/ncbi/response-handler.js.map +1 -1
  77. package/package.json +6 -6
  78. package/server.json +3 -3
@@ -1,6 +1,12 @@
1
1
  /**
2
2
  * @fileoverview PubMed search tool. Searches PubMed with full query syntax,
3
3
  * field-specific filters, date ranges, pagination, and optional brief summaries.
4
+ * A query with no search term — blank, markup only, a bare field tag, or empty
5
+ * parentheses — is rejected before NCBI is called. `limit` is accepted as an
6
+ * alias for `maxResults`. The total match count rides in `output` so `format()`
7
+ * can state it in the header beside the returned count, and a summary's
8
+ * `docType` is rendered only when it marks something other than an ordinary
9
+ * journal article (`citation`).
4
10
  * @module src/mcp-server/tools/definitions/search-articles.tool
5
11
  */
6
12
  import { z } from '@cyanheads/mcp-ts-core';
@@ -55,45 +61,50 @@ export declare const searchArticlesTool: import("@cyanheads/mcp-ts-core").ToolDe
55
61
  pubmedUrl: z.ZodOptional<z.ZodString>;
56
62
  }, z.core.$strip>>;
57
63
  searchUrl: z.ZodString;
64
+ totalCount: z.ZodNumber;
58
65
  }, z.core.$strip>, readonly [{
59
66
  readonly reason: 'queue_full';
60
67
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.RateLimited;
61
- readonly when: 'Local NCBI request queue is at capacity.';
62
- readonly recovery: 'Retry after 1-2 seconds; the request queue hit the NCBI rate limit.';
68
+ readonly when: 'The local NCBI request queue shed the call — the queue is full, or the call cannot start before its total deadline (for example behind the cooldown that follows an NCBI 429).';
69
+ readonly recovery: 'Wait the number of seconds in `retryAfter`, then retry; the NCBI request queue is saturated or cooling down after a rate limit.';
63
70
  readonly retryable: true;
71
+ readonly thrownBy: 'service';
64
72
  }, {
65
73
  readonly reason: 'ncbi_unreachable';
66
74
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
67
75
  readonly when: 'NCBI E-utilities is unreachable after all retry attempts.';
68
76
  readonly recovery: 'Retry after a brief delay; NCBI was unreachable across all retry attempts.';
69
77
  readonly retryable: true;
78
+ readonly thrownBy: 'service';
70
79
  }, {
71
80
  readonly reason: 'ncbi_deadline_exceeded';
72
81
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Timeout;
73
82
  readonly when: 'Total request deadline expired before NCBI returned a response.';
74
83
  readonly recovery: 'Reduce batch size or retry; NCBI may be under temporary load.';
75
84
  readonly retryable: true;
85
+ readonly thrownBy: 'service';
76
86
  }, {
77
87
  readonly reason: 'ncbi_invalid_response';
78
88
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.SerializationError;
79
89
  readonly when: 'NCBI returned a body that could not be parsed (invalid XML/JSON).';
80
90
  readonly recovery: 'Retry the request; NCBI returned a malformed response that could not be parsed.';
81
91
  readonly retryable: true;
92
+ readonly thrownBy: 'service';
82
93
  }, {
83
94
  readonly reason: 'ncbi_resource_not_found';
84
95
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
85
96
  readonly when: 'NCBI returned a structured "not found" error for the requested ID(s).';
86
97
  readonly recovery: 'Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.';
87
98
  readonly retryable: false;
99
+ readonly thrownBy: 'service';
88
100
  }, {
89
101
  readonly reason: 'blank_query';
90
102
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
91
- readonly when: 'The query holds no search term once whitespace, and any markup the tool strips first, are removed — so NCBI would receive a blank term.';
92
- readonly recovery: 'Supply a nonblank search term; NCBI cannot search a blank term and retrying the same input will not help.';
103
+ readonly when: 'The query holds no search term once whitespace, and anything the tool strips before searching, are removed — so NCBI would receive a blank term. pubmed_search_articles strips markup, bracketed field tags, and parentheses, so a bare field tag such as `[pdat]` or empty parentheses `()` count as blank there.';
104
+ readonly recovery: 'Supply a nonblank search term — a bare field tag or empty parentheses carry none; NCBI cannot search a blank term and retrying the same input will not help.';
93
105
  readonly retryable: false;
94
106
  }], {
95
107
  readonly effectiveQuery: z.ZodString;
96
- readonly totalCount: z.ZodNumber;
97
108
  readonly appliedFilters: z.ZodObject<{
98
109
  dateRange: z.ZodOptional<z.ZodObject<{
99
110
  minDate: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"search-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAgJjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsa7B,CAAC"}
1
+ {"version":3,"file":"search-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA8LjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmb7B,CAAC"}
@@ -1,6 +1,12 @@
1
1
  /**
2
2
  * @fileoverview PubMed search tool. Searches PubMed with full query syntax,
3
3
  * field-specific filters, date ranges, pagination, and optional brief summaries.
4
+ * A query with no search term — blank, markup only, a bare field tag, or empty
5
+ * parentheses — is rejected before NCBI is called. `limit` is accepted as an
6
+ * alias for `maxResults`. The total match count rides in `output` so `format()`
7
+ * can state it in the header beside the returned count, and a summary's
8
+ * `docType` is rendered only when it marks something other than an ordinary
9
+ * journal article (`citation`).
4
10
  * @module src/mcp-server/tools/definitions/search-articles.tool
5
11
  */
6
12
  import { tool, z } from '@cyanheads/mcp-ts-core';
@@ -22,6 +28,48 @@ const DATE_RE = /^$|^\d{4}([/\-.]\d{1,2}([/\-.]\d{1,2})?)?$/;
22
28
  * still act on it. The limit is db-specific — it does not apply to db=mesh.
23
29
  */
24
30
  const OFFSET_MAX = 9998;
31
+ /**
32
+ * PubMed search field tags, lowercased: the tags in PubMed's search-field help,
33
+ * their full names, and ESearch's own field names, each confirmed live to be
34
+ * read as a field tag — a bare `[pdat]` returns "No items found." PubMed searches
35
+ * the content of any other bracket as text (`[18F]`, `[cancer]`, `[smith j]`, and
36
+ * `[ab]` all return matches), so the blank-term check treats only these as
37
+ * carrying no term. A tag missing here fails safe: its bare form is sent and
38
+ * answered as an ordinary zero-hit search.
39
+ */
40
+ const PUBMED_FIELD_TAGS = new Set([
41
+ '1au|ad|aid|all|au|auid|book|cn|cois|crdt|dcom|doi|dp|ed|edat|fau|filter|fir|gr|ip|ir',
42
+ 'isbn|jid|la|lastau|lid|lr|majr|mh|mhda|nm|ot|pa|pg|pl|pmid|ps|pt|pubn|rn|sb|sh|si|so',
43
+ 'ta|ti|tiab|tt|tw|vi|affl|aucl|auth|cdat|cnty|coln|ecno|eid|epdat|epdt|faut|filt|finv',
44
+ 'full|grnt|iss|jour|lang|laut|mdat|mesh|otrm|page|papx|pdat|pid|ppdat|ppdt|ptyp|subh',
45
+ 'subs|titl|vol|word|author|editor|issue|subset|title|volume',
46
+ 'keyword|affiliation|all fields|author - corporate|author - first|author - identifier',
47
+ 'author - last|author cluster id|completion date|conflict of interest statements',
48
+ 'corporate author|create date|date - completion|date - create|date - entry|date - mesh',
49
+ 'date - modification|date - publication|ec/rn number|electronic publication date',
50
+ 'entry date|extended pmid|first author name|full author name|full investigator name',
51
+ 'grants and funding|investigator|journal|language|last author name|location id',
52
+ 'mesh date|mesh major topic|mesh subheading|mesh terms|modification date|other term',
53
+ 'pagination|personal name as subject|pharmacological action|place of publication',
54
+ 'print publication date|publication date|publication type|publisher|publisher id',
55
+ 'secondary source id|subheading|subject - personal name|supplementary concept|text word',
56
+ 'title/abstract|transliterated title',
57
+ ]
58
+ .join('|')
59
+ .split('|'));
60
+ /**
61
+ * The query with every parenthesis and every bracketed field tag removed — what
62
+ * the blank-term check tests. A tag's search modifier (`[mh:noexp]`,
63
+ * `[tiab:~3]`) does not change what it is; an empty bracket carries no term.
64
+ */
65
+ function withoutTermlessMarkup(query) {
66
+ return query
67
+ .replace(/\[([^\]]*)\]/g, (bracket, content) => {
68
+ const tag = content.trim().toLowerCase();
69
+ return tag === '' || PUBMED_FIELD_TAGS.has(tag.replace(/\s*:.*$/, '')) ? '' : bracket;
70
+ })
71
+ .replace(/[()]/g, '');
72
+ }
25
73
  /** Upper bound on brief summaries fetched per call; shared by the schema and the format() cap message. */
26
74
  const SUMMARY_COUNT_MAX = 50;
27
75
  /** Renders a diagnostic list as a comma-separated set of backticked clauses. */
@@ -117,11 +165,14 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
117
165
  _meta: conceptMeta([SCHEMA_SEARCH_ACTION, EDAM_DATABASE_SEARCH, EDAM_PUBMED_ID]),
118
166
  sourceUrl: 'https://github.com/cyanheads/pubmed-mcp-server/blob/main/src/mcp-server/tools/definitions/search-articles.tool.ts',
119
167
  errors: [...NCBI_SERVICE_ERRORS, ...NCBI_QUERY_INPUT_ERRORS],
168
+ // Never advertised; rewritten to the canonical key before the schema parses.
169
+ // `max_results` needs no entry — the framework's case-style repair maps it. (#156)
170
+ inputAliases: { limit: 'maxResults' },
120
171
  input: z.object({
121
172
  query: z
122
173
  .string()
123
174
  .min(1)
124
- .describe('PubMed search query (supports full NCBI syntax). Must carry a search term: a value that is blank once markup is stripped is rejected rather than sent to PubMed as an empty term.'),
175
+ .describe('PubMed search query (supports full NCBI syntax). Must carry a search term: a value that is blank once markup, bracketed field tags (`[pdat]`), and parentheses are removed is rejected rather than sent to PubMed as an empty term.'),
125
176
  maxResults: z.number().int().min(1).max(1000).default(20).describe('Maximum results to return'),
126
177
  offset: z
127
178
  .number()
@@ -218,16 +269,18 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
218
269
  .describe('Brief article summary'))
219
270
  .describe('Brief summaries (empty array when summaryCount is 0)'),
220
271
  searchUrl: z.string().describe('PubMed search URL'),
272
+ // A domain field, not enrichment: format() sees only this payload, and the
273
+ // header states the total beside the returned count. (#147)
274
+ totalCount: z.number().describe('Total matching articles'),
221
275
  }),
222
276
  // Result-set context the agent reasons with — the query as PubMed parsed it, the
223
- // total match count, the normalized filters, and recovery guidance for empty or
224
- // overshot pages. Populated via ctx.enrich(...) so it reaches structuredContent and
225
- // content[] alike; kept out of the domain return.
277
+ // normalized filters, and recovery guidance for empty or overshot pages.
278
+ // Populated via ctx.enrich(...) so it reaches structuredContent and content[]
279
+ // alike; kept out of the domain return.
226
280
  enrichment: {
227
281
  effectiveQuery: z
228
282
  .string()
229
283
  .describe('Sanitized query sent to PubMed after applying all active filters'),
230
- totalCount: z.number().describe('Total matching articles'),
231
284
  appliedFilters: AppliedFiltersSchema.describe('Normalized filter values that were applied to the PubMed query'),
232
285
  notice: z
233
286
  .string()
@@ -238,7 +291,6 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
238
291
  // carries the full structured value; this only shapes the human-facing trailer line.
239
292
  enrichmentTrailer: {
240
293
  effectiveQuery: { label: 'Effective Query' },
241
- totalCount: { label: 'Total Found' },
242
294
  appliedFilters: {
243
295
  render: (filters) => {
244
296
  const lines = [];
@@ -279,8 +331,14 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
279
331
  // "Search is temporarily unavailable", which classifies as a retryable
280
332
  // outage — the caller would spend the whole retry deadline on a
281
333
  // deterministic input mistake. Reject before the call instead. (#122)
282
- if (effectiveQuery.trim().length === 0) {
283
- throw ctx.fail('blank_query', 'The `query` carries no search term — it is blank after markup is stripped.', { ...ctx.recoveryFor('blank_query') });
334
+ //
335
+ // A bare field tag (`[pdat]`) or empty parentheses carry no term either, so
336
+ // the check runs on a copy with those removed; `effectiveQuery` itself is
337
+ // sent as written. A bracket that is not a field tag (`[18F]`) is a term, and
338
+ // boolean operators are kept: NCBI reads an operand-less `NOT[ti]` as
339
+ // literal text and returns real matches. (#145)
340
+ if (withoutTermlessMarkup(effectiveQuery).trim().length === 0) {
341
+ throw ctx.fail('blank_query', 'The `query` carries no search term — it is blank once markup, bracketed field tags, and parentheses are removed.', { ...ctx.recoveryFor('blank_query') });
284
342
  }
285
343
  // Build filters — capture normalized values for both query construction and appliedFilters
286
344
  let normalizedDateRange;
@@ -404,7 +462,6 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
404
462
  ...(esResult.warningList && { warningList: esResult.warningList }),
405
463
  });
406
464
  ctx.enrich({ effectiveQuery, appliedFilters });
407
- ctx.enrich.total(esResult.count);
408
465
  if (notice)
409
466
  ctx.enrich.notice(notice);
410
467
  return {
@@ -413,13 +470,14 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
413
470
  pmids,
414
471
  summaries,
415
472
  searchUrl,
473
+ totalCount: esResult.count,
416
474
  };
417
475
  },
418
476
  format: (result) => {
419
477
  const lines = [
420
478
  `## PubMed Search Results`,
421
479
  `**Query:** ${result.query}`,
422
- `**Returned:** ${result.pmids.length} | **Offset:** ${result.offset}`,
480
+ `**Returned:** ${result.pmids.length} of ${result.totalCount} | **Offset:** ${result.offset}`,
423
481
  `**Search URL:** ${result.searchUrl}`,
424
482
  ];
425
483
  if (result.pmids.length > 0)
@@ -451,7 +509,9 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
451
509
  if (s.bookTitle || s.publisherName) {
452
510
  lines.push(`**Book:** ${[s.bookTitle, s.publisherName].filter(Boolean).join(' — ')}`);
453
511
  }
454
- if (s.docType)
512
+ // `citation` is every ordinary journal article; the line earns its
513
+ // place only when it flags a Bookshelf chapter or book. (#146)
514
+ if (s.docType && s.docType !== 'citation')
455
515
  lines.push(`**Doc Type:** ${s.docType}`);
456
516
  if (s.pubDate)
457
517
  lines.push(`**Published:** ${s.pubDate}`);
@@ -1 +1 @@
1
- {"version":3,"file":"search-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * @fileoverview PubMed spell-check tool. Uses NCBI's ESpell service
3
- * to suggest corrections for search queries.
2
+ * @fileoverview PubMed spell-check tool. Uses NCBI's ESpell service to correct
3
+ * every misspelled token of a PubMed search query in one call — the recovery
4
+ * step after a zero-hit or thin `pubmed_search_articles` result.
4
5
  * @module src/mcp-server/tools/definitions/spell-check.tool
5
6
  */
6
7
  import { z } from '@cyanheads/mcp-ts-core';
@@ -13,38 +14,43 @@ export declare const spellCheckTool: import("@cyanheads/mcp-ts-core").ToolDefini
13
14
  }, z.core.$strip>, readonly [{
14
15
  readonly reason: 'queue_full';
15
16
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.RateLimited;
16
- readonly when: 'Local NCBI request queue is at capacity.';
17
- readonly recovery: 'Retry after 1-2 seconds; the request queue hit the NCBI rate limit.';
17
+ readonly when: 'The local NCBI request queue shed the call — the queue is full, or the call cannot start before its total deadline (for example behind the cooldown that follows an NCBI 429).';
18
+ readonly recovery: 'Wait the number of seconds in `retryAfter`, then retry; the NCBI request queue is saturated or cooling down after a rate limit.';
18
19
  readonly retryable: true;
20
+ readonly thrownBy: 'service';
19
21
  }, {
20
22
  readonly reason: 'ncbi_unreachable';
21
23
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
22
24
  readonly when: 'NCBI E-utilities is unreachable after all retry attempts.';
23
25
  readonly recovery: 'Retry after a brief delay; NCBI was unreachable across all retry attempts.';
24
26
  readonly retryable: true;
27
+ readonly thrownBy: 'service';
25
28
  }, {
26
29
  readonly reason: 'ncbi_deadline_exceeded';
27
30
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Timeout;
28
31
  readonly when: 'Total request deadline expired before NCBI returned a response.';
29
32
  readonly recovery: 'Reduce batch size or retry; NCBI may be under temporary load.';
30
33
  readonly retryable: true;
34
+ readonly thrownBy: 'service';
31
35
  }, {
32
36
  readonly reason: 'ncbi_invalid_response';
33
37
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.SerializationError;
34
38
  readonly when: 'NCBI returned a body that could not be parsed (invalid XML/JSON).';
35
39
  readonly recovery: 'Retry the request; NCBI returned a malformed response that could not be parsed.';
36
40
  readonly retryable: true;
41
+ readonly thrownBy: 'service';
37
42
  }, {
38
43
  readonly reason: 'ncbi_resource_not_found';
39
44
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
40
45
  readonly when: 'NCBI returned a structured "not found" error for the requested ID(s).';
41
46
  readonly recovery: 'Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.';
42
47
  readonly retryable: false;
48
+ readonly thrownBy: 'service';
43
49
  }, {
44
50
  readonly reason: 'blank_query';
45
51
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
46
- readonly when: 'The query holds no search term once whitespace, and any markup the tool strips first, are removed — so NCBI would receive a blank term.';
47
- readonly recovery: 'Supply a nonblank search term; NCBI cannot search a blank term and retrying the same input will not help.';
52
+ readonly when: 'The query holds no search term once whitespace, and anything the tool strips before searching, are removed — so NCBI would receive a blank term. pubmed_search_articles strips markup, bracketed field tags, and parentheses, so a bare field tag such as `[pdat]` or empty parentheses `()` count as blank there.';
53
+ readonly recovery: 'Supply a nonblank search term — a bare field tag or empty parentheses carry none; NCBI cannot search a blank term and retrying the same input will not help.';
48
54
  readonly retryable: false;
49
55
  }], undefined>;
50
56
  //# sourceMappingURL=spell-check.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spell-check.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/spell-check.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+DzB,CAAC"}
1
+ {"version":3,"file":"spell-check.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/spell-check.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+DzB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * @fileoverview PubMed spell-check tool. Uses NCBI's ESpell service
3
- * to suggest corrections for search queries.
2
+ * @fileoverview PubMed spell-check tool. Uses NCBI's ESpell service to correct
3
+ * every misspelled token of a PubMed search query in one call — the recovery
4
+ * step after a zero-hit or thin `pubmed_search_articles` result.
4
5
  * @module src/mcp-server/tools/definitions/spell-check.tool
5
6
  */
6
7
  import { tool, z } from '@cyanheads/mcp-ts-core';
@@ -8,7 +9,7 @@ import { NCBI_QUERY_INPUT_ERRORS, NCBI_SERVICE_ERRORS } from '../../../services/
8
9
  import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
9
10
  import { conceptMeta, SCHEMA_SEARCH_ACTION } from './_concepts.js';
10
11
  export const spellCheckTool = tool('pubmed_spell_check', {
11
- description: "Spell-check a query and get NCBI's suggested correction. Useful for refining search queries.",
12
+ description: 'Spell-check a PubMed search query against NCBI ESpell and get the corrected query back. Use after a zero-hit or thin `pubmed_search_articles` result, or when a drug, gene, disease, or author name may be misspelled — every misspelled token is corrected in one call (`alzhiemer diseese treatmnt outcomse` → `alzheimer disease treatment outcomes`), and `hasSuggestion` is false when NCBI has no change to offer. Re-run the search with `corrected`.',
12
13
  annotations: { readOnlyHint: true, openWorldHint: true },
13
14
  _meta: conceptMeta([SCHEMA_SEARCH_ACTION]),
14
15
  sourceUrl: 'https://github.com/cyanheads/pubmed-mcp-server/blob/main/src/mcp-server/tools/definitions/spell-check.tool.ts',
@@ -1 +1 @@
1
- {"version":3,"file":"spell-check.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/spell-check.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACvD,WAAW,EACT,8FAA8F;IAChG,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC1C,SAAS,EACP,+GAA+G;IAEjH,MAAM,EAAE,CAAC,GAAG,mBAAmB,EAAE,GAAG,uBAAuB,CAAU;IAErE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,iIAAiI,CAClI;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QACrF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAC3E,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,gDAAgD;QAChD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,yDAAyD,EAAE;gBACvF,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC,MAAM,CAC1C,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,EACnC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO;gBACL;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,MAAM,CAAC,SAAS,iBAAiB,MAAM,CAAC,QAAQ,IAAI;iBAC/E;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,0BAA0B,MAAM,CAAC,QAAQ,+BAA+B;aAC/E;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"spell-check.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/spell-check.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACvD,WAAW,EACT,8bAA8b;IAChc,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC1C,SAAS,EACP,+GAA+G;IAEjH,MAAM,EAAE,CAAC,GAAG,mBAAmB,EAAE,GAAG,uBAAuB,CAAU;IAErE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,iIAAiI,CAClI;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QACrF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAC3E,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,gDAAgD;QAChD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,yDAAyD,EAAE;gBACvF,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC,MAAM,CAC1C,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,EACnC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO;gBACL;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,MAAM,CAAC,SAAS,iBAAiB,MAAM,CAAC,QAAQ,IAAI;iBAC/E;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,0BAA0B,MAAM,CAAC,QAAQ,+BAA+B;aAC/E;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -12,45 +12,55 @@
12
12
  *
13
13
  * Tool definitions import the contract arrays directly and spread them into
14
14
  * their `errors: [...]` declarations to surface the failure modes to the LLM.
15
+ * Every service-array entry carries `thrownBy: 'service'` so the linter's
16
+ * `error-contract-unthrown` check skips it while still checking the handler's
17
+ * own reasons. Spread a service array only into a tool whose handler lets that
18
+ * service's errors propagate — a tool that catches them all never produces
19
+ * those reasons.
15
20
  *
16
21
  * @module src/services/error-contracts
17
22
  */
18
23
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
19
24
  /**
20
- * Failure modes the NCBI service layer can surface. Tools that consume
21
- * `getNcbiService()` should spread these into their own `errors[]` so the
22
- * declared contract matches what actually reaches the wire.
25
+ * Failure modes the NCBI service layer can surface. Tools whose handler lets
26
+ * `getNcbiService()` failures propagate spread these into their own `errors[]`
27
+ * so the declared contract matches what actually reaches the wire.
23
28
  */
24
29
  export declare const NCBI_SERVICE_ERRORS: readonly [{
25
30
  readonly reason: 'queue_full';
26
31
  readonly code: JsonRpcErrorCode.RateLimited;
27
- readonly when: 'Local NCBI request queue is at capacity.';
28
- readonly recovery: 'Retry after 1-2 seconds; the request queue hit the NCBI rate limit.';
32
+ readonly when: 'The local NCBI request queue shed the call — the queue is full, or the call cannot start before its total deadline (for example behind the cooldown that follows an NCBI 429).';
33
+ readonly recovery: 'Wait the number of seconds in `retryAfter`, then retry; the NCBI request queue is saturated or cooling down after a rate limit.';
29
34
  readonly retryable: true;
35
+ readonly thrownBy: 'service';
30
36
  }, {
31
37
  readonly reason: 'ncbi_unreachable';
32
38
  readonly code: JsonRpcErrorCode.ServiceUnavailable;
33
39
  readonly when: 'NCBI E-utilities is unreachable after all retry attempts.';
34
40
  readonly recovery: 'Retry after a brief delay; NCBI was unreachable across all retry attempts.';
35
41
  readonly retryable: true;
42
+ readonly thrownBy: 'service';
36
43
  }, {
37
44
  readonly reason: 'ncbi_deadline_exceeded';
38
45
  readonly code: JsonRpcErrorCode.Timeout;
39
46
  readonly when: 'Total request deadline expired before NCBI returned a response.';
40
47
  readonly recovery: 'Reduce batch size or retry; NCBI may be under temporary load.';
41
48
  readonly retryable: true;
49
+ readonly thrownBy: 'service';
42
50
  }, {
43
51
  readonly reason: 'ncbi_invalid_response';
44
52
  readonly code: JsonRpcErrorCode.SerializationError;
45
53
  readonly when: 'NCBI returned a body that could not be parsed (invalid XML/JSON).';
46
54
  readonly recovery: 'Retry the request; NCBI returned a malformed response that could not be parsed.';
47
55
  readonly retryable: true;
56
+ readonly thrownBy: 'service';
48
57
  }, {
49
58
  readonly reason: 'ncbi_resource_not_found';
50
59
  readonly code: JsonRpcErrorCode.NotFound;
51
60
  readonly when: 'NCBI returned a structured "not found" error for the requested ID(s).';
52
61
  readonly recovery: 'Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.';
53
62
  readonly retryable: false;
63
+ readonly thrownBy: 'service';
54
64
  }];
55
65
  /**
56
66
  * Input failure the NCBI query tools reject before any call is made. Declared
@@ -66,8 +76,8 @@ export declare const NCBI_SERVICE_ERRORS: readonly [{
66
76
  export declare const NCBI_QUERY_INPUT_ERRORS: readonly [{
67
77
  readonly reason: 'blank_query';
68
78
  readonly code: JsonRpcErrorCode.ValidationError;
69
- readonly when: 'The query holds no search term once whitespace, and any markup the tool strips first, are removed — so NCBI would receive a blank term.';
70
- readonly recovery: 'Supply a nonblank search term; NCBI cannot search a blank term and retrying the same input will not help.';
79
+ readonly when: 'The query holds no search term once whitespace, and anything the tool strips before searching, are removed — so NCBI would receive a blank term. pubmed_search_articles strips markup, bracketed field tags, and parentheses, so a bare field tag such as `[pdat]` or empty parentheses `()` count as blank there.';
80
+ readonly recovery: 'Supply a nonblank search term — a bare field tag or empty parentheses carry none; NCBI cannot search a blank term and retrying the same input will not help.';
71
81
  readonly retryable: false;
72
82
  }];
73
83
  /**
@@ -98,11 +108,12 @@ export declare const UNPAYWALL_SERVICE_ERRORS: readonly [{
98
108
  readonly when: 'Unpaywall was unreachable when resolving a DOI or fetching content.';
99
109
  readonly recovery: 'Retry after a brief delay; Unpaywall was unreachable. The PMC source remains the primary path.';
100
110
  readonly retryable: true;
111
+ readonly thrownBy: 'service';
101
112
  }];
102
113
  /**
103
- * Failure modes the OpenAlex service layer can surface. Tools that consume
104
- * `getOpenAlexService()` / `getOpenAlexServiceOptional()` should spread
105
- * these into their `errors[]`.
114
+ * Failure modes the OpenAlex service layer can surface. Tools whose handler
115
+ * lets `getOpenAlexService()` / `getOpenAlexServiceOptional()` failures
116
+ * propagate spread these into their `errors[]`.
106
117
  */
107
118
  export declare const OPENALEX_SERVICE_ERRORS: readonly [{
108
119
  readonly reason: 'openalex_unreachable';
@@ -110,35 +121,41 @@ export declare const OPENALEX_SERVICE_ERRORS: readonly [{
110
121
  readonly when: 'OpenAlex was unreachable after all retry attempts.';
111
122
  readonly recovery: 'Retry after a brief delay; OpenAlex was unreachable. NCBI and Europe PMC remain available.';
112
123
  readonly retryable: true;
124
+ readonly thrownBy: 'service';
113
125
  }, {
114
126
  readonly reason: 'openalex_invalid_response';
115
127
  readonly code: JsonRpcErrorCode.SerializationError;
116
128
  readonly when: 'OpenAlex returned a body that could not be parsed (invalid JSON).';
117
129
  readonly recovery: 'Retry the request; OpenAlex returned a malformed response that could not be parsed.';
118
130
  readonly retryable: true;
131
+ readonly thrownBy: 'service';
119
132
  }];
120
133
  /**
121
- * Failure modes the Europe PMC service layer can surface. Tools that consume
122
- * `getEuropePmcService()` should spread these into their `errors[]`.
134
+ * Failure modes the Europe PMC service layer can surface. Tools whose handler
135
+ * lets `getEuropePmcService()` failures propagate spread these into their
136
+ * `errors[]`.
123
137
  */
124
138
  export declare const EUROPEPMC_SERVICE_ERRORS: readonly [{
125
139
  readonly reason: 'europepmc_unreachable';
126
140
  readonly code: JsonRpcErrorCode.ServiceUnavailable;
127
- readonly when: 'Europe PMC was unreachable after all retry attempts.';
141
+ readonly when: 'Europe PMC failed on every retry attempt — unreachable, an HTTP 404 or 5xx other than a 504 timeout from its search endpoint, or an empty response with no results.';
128
142
  readonly recovery: 'Retry after a brief delay; Europe PMC was unreachable. NCBI PMC and Unpaywall remain available.';
129
143
  readonly retryable: true;
144
+ readonly thrownBy: 'service';
130
145
  }, {
131
146
  readonly reason: 'europepmc_invalid_response';
132
147
  readonly code: JsonRpcErrorCode.SerializationError;
133
148
  readonly when: 'Europe PMC returned a body that could not be parsed (invalid JSON or XML).';
134
149
  readonly recovery: 'Retry the request; Europe PMC returned a malformed response that could not be parsed.';
135
150
  readonly retryable: true;
151
+ readonly thrownBy: 'service';
136
152
  }, {
137
153
  readonly reason: 'europepmc_invalid_input';
138
154
  readonly code: JsonRpcErrorCode.ValidationError;
139
- readonly when: 'Europe PMC rejected the request input (empty query, unknown sort field, malformed parameter).';
140
- readonly recovery: 'Adjust the input — usually the query or sort field — before retrying; the same input will be rejected again.';
155
+ readonly when: 'Europe PMC rejected the request input — an error message such as an empty query, an empty response to a sort with an undocumented field or no asc/desc direction, or an empty response to a pagination cursor on every attempt.';
156
+ readonly recovery: 'Adjust the input — the query, the sort, or the cursorMark — before retrying; the same input will be rejected again.';
141
157
  readonly retryable: false;
158
+ readonly thrownBy: 'service';
142
159
  }];
143
160
  /**
144
161
  * Reason identifier union for type-safe authoring on the service layer.
@@ -1 +1 @@
1
- {"version":3,"file":"error-contracts.d.ts","sourceRoot":"","sources":["../../src/services/error-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;aAE5B,MAAM,EAAE,YAAY;aACpB,IAAI;aACJ,IAAI,EAAE,0CAA0C;aAChD,QAAQ,EAAE,qEAAqE;aAC/E,SAAS;;aAGT,MAAM,EAAE,kBAAkB;aAC1B,IAAI;aACJ,IAAI,EAAE,2DAA2D;aACjE,QAAQ,EAAE,4EAA4E;aACtF,SAAS;;aAGT,MAAM,EAAE,wBAAwB;aAChC,IAAI;aACJ,IAAI,EAAE,iEAAiE;aACvE,QAAQ,EAAE,+DAA+D;aACzE,SAAS;;aAGT,MAAM,EAAE,uBAAuB;aAC/B,IAAI;aACJ,IAAI,EAAE,mEAAmE;aACzE,QAAQ,EAAE,iFAAiF;aAC3F,SAAS;;aAGT,MAAM,EAAE,yBAAyB;aACjC,IAAI;aACJ,IAAI,EAAE,uEAAuE;aAC7E,QAAQ,EACN,gGAAgG;aAClG,SAAS;EAEH,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB;aAEhC,MAAM,EAAE,aAAa;aACrB,IAAI;aACJ,IAAI,EAAE,yIAAyI;aAC/I,QAAQ,EACN,2GAA2G;aAC7G,SAAS;EAEH,CAAC;AAEX;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB;aAE7B,MAAM,EAAE,cAAc;aACtB,IAAI;aACJ,IAAI,EAAE,0LAA0L;aAChM,QAAQ,EACN,uHAAuH;aACzH,SAAS;EAEH,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;aAEjC,MAAM,EAAE,uBAAuB;aAC/B,IAAI;aACJ,IAAI,EAAE,qEAAqE;aAC3E,QAAQ,EACN,gGAAgG;aAClG,SAAS;EAEH,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;aAEhC,MAAM,EAAE,sBAAsB;aAC9B,IAAI;aACJ,IAAI,EAAE,oDAAoD;aAC1D,QAAQ,EACN,4FAA4F;aAC9F,SAAS;;aAGT,MAAM,EAAE,2BAA2B;aACnC,IAAI;aACJ,IAAI,EAAE,mEAAmE;aACzE,QAAQ,EAAE,qFAAqF;aAC/F,SAAS;EAEH,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB;aAEjC,MAAM,EAAE,uBAAuB;aAC/B,IAAI;aACJ,IAAI,EAAE,sDAAsD;aAC5D,QAAQ,EACN,iGAAiG;aACnG,SAAS;;aAGT,MAAM,EAAE,4BAA4B;aACpC,IAAI;aACJ,IAAI,EAAE,4EAA4E;aAClF,QAAQ,EACN,uFAAuF;aACzF,SAAS;;aAGT,MAAM,EAAE,yBAAyB;aACjC,IAAI;aACJ,IAAI,EAAE,+FAA+F;aACrG,QAAQ,EACN,8GAA8G;aAChH,SAAS;EAEH,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAC9C,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GACnD,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GACnD,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;AAWvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG;IAAE,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAMtF"}
1
+ {"version":3,"file":"error-contracts.d.ts","sourceRoot":"","sources":["../../src/services/error-contracts.ts"],"names":[],"mappings":"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"}