@cyanheads/zenodo-mcp-server 0.1.1 → 0.1.3

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 (62) hide show
  1. package/AGENTS.md +30 -22
  2. package/CLAUDE.md +30 -22
  3. package/Dockerfile +86 -40
  4. package/README.md +31 -4
  5. package/changelog/0.1.x/0.1.2.md +33 -0
  6. package/changelog/0.1.x/0.1.3.md +35 -0
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts +106 -2
  10. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts.map +1 -1
  11. package/dist/mcp-server/tools/definitions/get-record.tool.js +453 -107
  12. package/dist/mcp-server/tools/definitions/get-record.tool.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/index.d.ts +283 -180
  14. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/list-files.tool.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/list-files.tool.js +28 -22
  17. package/dist/mcp-server/tools/definitions/list-files.tool.js.map +1 -1
  18. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts +1 -1
  19. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts.map +1 -1
  20. package/dist/mcp-server/tools/definitions/list-versions.tool.js +30 -21
  21. package/dist/mcp-server/tools/definitions/list-versions.tool.js.map +1 -1
  22. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts +2 -1
  23. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts.map +1 -1
  24. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js +41 -24
  25. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/read-file.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/read-file.tool.js +29 -27
  28. package/dist/mcp-server/tools/definitions/read-file.tool.js.map +1 -1
  29. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts +3 -3
  30. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/search-records.tool.js +145 -35
  32. package/dist/mcp-server/tools/definitions/search-records.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/paging.d.ts +42 -0
  34. package/dist/mcp-server/tools/paging.d.ts.map +1 -0
  35. package/dist/mcp-server/tools/paging.js +44 -0
  36. package/dist/mcp-server/tools/paging.js.map +1 -0
  37. package/dist/mcp-server/tools/record-miss.d.ts +5 -1
  38. package/dist/mcp-server/tools/record-miss.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/record-miss.js +6 -2
  40. package/dist/mcp-server/tools/record-miss.js.map +1 -1
  41. package/dist/services/zenodo/html-to-text.d.ts +19 -8
  42. package/dist/services/zenodo/html-to-text.d.ts.map +1 -1
  43. package/dist/services/zenodo/html-to-text.js +175 -48
  44. package/dist/services/zenodo/html-to-text.js.map +1 -1
  45. package/dist/services/zenodo/http.d.ts.map +1 -1
  46. package/dist/services/zenodo/http.js +21 -32
  47. package/dist/services/zenodo/http.js.map +1 -1
  48. package/dist/services/zenodo/identifiers.js +1 -1
  49. package/dist/services/zenodo/identifiers.js.map +1 -1
  50. package/dist/services/zenodo/normalize.d.ts.map +1 -1
  51. package/dist/services/zenodo/normalize.js +5 -2
  52. package/dist/services/zenodo/normalize.js.map +1 -1
  53. package/dist/services/zenodo/query-builder.d.ts +84 -8
  54. package/dist/services/zenodo/query-builder.d.ts.map +1 -1
  55. package/dist/services/zenodo/query-builder.js +484 -21
  56. package/dist/services/zenodo/query-builder.js.map +1 -1
  57. package/dist/services/zenodo/text-preview.d.ts +1 -1
  58. package/dist/services/zenodo/text-preview.d.ts.map +1 -1
  59. package/dist/services/zenodo/text-preview.js +38 -38
  60. package/dist/services/zenodo/text-preview.js.map +1 -1
  61. package/package.json +14 -12
  62. package/server.json +16 -24
@@ -8,19 +8,112 @@
8
8
  import { tool, z } from '@cyanheads/mcp-ts-core';
9
9
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
10
10
  import { isValidOrcid, isWholeIdentifier, normalizeOrcid, ORCID_PATTERN, parseAwardRef, parseCommunityRef, parseFunderRef, } from '../../../services/zenodo/identifiers.js';
11
- import { ACCESS_STATUSES, expandPartialDate, hasUnpairedSlash, isValidPartialDate, SEARCH_SORTS, } from '../../../services/zenodo/query-builder.js';
11
+ import { ACCESS_STATUSES, engineSyntaxError, expandPartialDate, isConversionError, isValidPartialDate, queryAsSent, querySyntaxError, SEARCH_SORTS, } from '../../../services/zenodo/query-builder.js';
12
12
  import { RESOURCE_TYPE_IDS, resolveResourceTypeId } from '../../../services/zenodo/resource-types.js';
13
13
  import { getZenodoService } from '../../../services/zenodo/zenodo-service.js';
14
+ import { applyCap, hasMorePages, PAGE_SIZE_CAP, RESULT_WINDOW, reachableHits, windowRejection, } from '../paging.js';
14
15
  import { inline } from '../render.js';
15
16
  import { blankToUndefined, enumPreprocess, toOptionalArray } from '../schema-helpers.js';
16
- const RESULT_WINDOW = 10_000;
17
17
  const PARTIAL_DATE_PATTERN = /^\d{4}(-(0[1-9]|1[0-2])(-(0[1-9]|[12]\d|3[01]))?)?$/;
18
+ /** Inputs that compose into `q`; `community` and `all_versions` ride their own params. */
19
+ const Q_FILTERS = [
20
+ 'resource_type',
21
+ 'funder',
22
+ 'award',
23
+ 'creator_orcid',
24
+ 'file_type',
25
+ 'license',
26
+ 'access_status',
27
+ 'published_from',
28
+ 'published_to',
29
+ ];
30
+ /** `s` cut to `max` characters, marking the cut end with `…`. */
31
+ const clip = (s, max, from) => {
32
+ if (s.length <= max)
33
+ return s;
34
+ return from === 'end' ? `…${s.slice(-max)}` : `${s.slice(0, max)}…`;
35
+ };
36
+ /** Where and why `query` fails to parse, quoting the query around the spot. */
37
+ function describeSyntaxError(query, { index, problem, token }) {
38
+ const before = inline(clip(query.slice(0, index), 40, 'end')).trimEnd();
39
+ const from = inline(clip(query.slice(index), 40, 'start'));
40
+ const value = inline(clip(token, 40, 'start'));
41
+ switch (problem) {
42
+ case 'unexpected':
43
+ return `unexpected "${value}" ${before ? `after "${before}"` : 'at the start'}`;
44
+ case 'end':
45
+ return `it ends after "${before}" where a term must follow`;
46
+ case 'quote':
47
+ return `a term starts with a single quote at "${from}"`;
48
+ case 'escape':
49
+ return `a backslash ${index + 1 < query.length ? 'before a line break' : 'at the end'} escapes nothing (after "${before}")`;
50
+ case 'phrase':
51
+ return `the phrase starting "${from}" has no closing double quote`;
52
+ case 'regex':
53
+ return `the regular expression starting "${from}" has no closing /`;
54
+ case 'regex_quote':
55
+ return `the regular expression "${value}" opens a quoted string with " and never closes it`;
56
+ case 'word_quote':
57
+ return `the double quote after "${before}" opens a phrase that never closes`;
58
+ case 'word_span':
59
+ return `the ${token.startsWith('/') ? 'regular expression' : 'phrase'} "${value}" opened after "${before}" takes in a parenthesis or bracket the query needs`;
60
+ case 'range_escape':
61
+ return `the range bound "${value}" after "${before}" ends in a backslash`;
62
+ case 'dangling_not':
63
+ return `the ! after "${before}" is a NOT with nothing after it`;
64
+ case 'boost':
65
+ return `the boost "${value}" after "${before}" is not one decimal number such as ^2 or ^0.5`;
66
+ case 'fuzzy':
67
+ return `the fuzziness "${value}" after "${before}" is not one decimal number such as ~1 or ~0.5`;
68
+ case 'proximity':
69
+ return `the proximity "${value}" after "${before}" is not a whole number such as ~2`;
70
+ }
71
+ }
72
+ /** How Zenodo's search engine reads the character an {@link engineSyntaxError} problem turns on. */
73
+ function engineReading({ problem, token }) {
74
+ if (problem === 'regex' || (problem === 'word_span' && token.startsWith('/'))) {
75
+ return ' (Zenodo reads any unescaped / outside double quotes as a regular-expression delimiter)';
76
+ }
77
+ switch (problem) {
78
+ case 'regex_quote':
79
+ return '';
80
+ case 'range_escape':
81
+ return ' (Zenodo ends a range bound at its first space, ] or }, even an escaped one, and cannot end one in a backslash)';
82
+ case 'dangling_not':
83
+ return ' (Zenodo reads an unescaped ! outside double quotes as NOT, inside a word too)';
84
+ default:
85
+ return ' (Zenodo reads a " inside a word as the start of a phrase)';
86
+ }
87
+ }
88
+ /** ` as it would be sent ("…")` when the checked query differs from the caller's. */
89
+ const asSentNote = (checked, query) => checked === query ? '' : ` as it would be sent ("${inline(clip(checked, 200, 'start'))}")`;
90
+ /**
91
+ * The search-engine problem the query fails on, with the query its offsets index. It
92
+ * is read as written first, so the message names the cause before balancing could
93
+ * close it. Without filters, a query luqum cannot parse is matched as plain text and
94
+ * the engine never reads it. With filters, Zenodo runs the balanced query, so a
95
+ * problem balancing repairs (a `"` left open inside a word) fails only when that query
96
+ * still fails; a `/` left open fails as written, since balancing would turn the rest
97
+ * of the query into a regular expression.
98
+ */
99
+ function engineFailure(query, sent, filtered, syntaxError) {
100
+ const written = query ? engineSyntaxError(query) : undefined;
101
+ if (!filtered)
102
+ return written && !syntaxError ? { error: written, query } : undefined;
103
+ if (written && (written.problem === 'regex' || syntaxError))
104
+ return { error: written, query };
105
+ const balanced = syntaxError ? undefined : engineSyntaxError(sent);
106
+ if (!balanced)
107
+ return undefined;
108
+ return written ? { error: written, query } : { error: balanced, query: sent };
109
+ }
18
110
  /**
19
111
  * Resource type preprocess: a lone string or array, each value resolved to its id
20
112
  * (any case; `publication::publication-article` → `publication-article`). A value
21
113
  * that names no resource type raises its own issue here rather than reaching the
22
114
  * enum: the enum's issue would point at an array index a lone-string input never
23
- * had, and read as a missing field.
115
+ * had, and read as a missing field. The routing comes before the id list, since the
116
+ * framework cuts an issue line at 1,024 characters and the list alone is 811.
24
117
  */
25
118
  const resourceTypeInput = z.preprocess((v, ctx) => {
26
119
  const arr = toOptionalArray(v);
@@ -31,7 +124,7 @@ const resourceTypeInput = z.preprocess((v, ctx) => {
31
124
  ctx.addIssue({
32
125
  code: 'custom',
33
126
  input: v,
34
- message: `${unknown.map((x) => JSON.stringify(x.slice(0, 100))).join(', ')} ${unknown.length > 1 ? 'are not Zenodo resource type ids' : 'is not a Zenodo resource type id'}. Expected one of: ${RESOURCE_TYPE_IDS.join(', ')} (a subtype may also be written <type>::<id>, e.g. publication::publication-article). Look types up with zenodo_lookup_vocabulary (vocabulary: resource_types).`,
127
+ message: `${unknown.map((x) => JSON.stringify(x.slice(0, 100))).join(', ')} ${unknown.length > 1 ? 'are not Zenodo resource type ids' : 'is not a Zenodo resource type id'}. Look types up with zenodo_lookup_vocabulary (vocabulary: resource_types), or pass one of these ids (a subtype also as <type>::<id>): ${RESOURCE_TYPE_IDS.join(', ')}.`,
35
128
  });
36
129
  return z.NEVER;
37
130
  }
@@ -161,7 +254,7 @@ export const searchRecords = tool('zenodo_search_records', {
161
254
  input: z.object({
162
255
  query: z
163
256
  .preprocess(blankToUndefined, z.string().max(1000).optional())
164
- .describe('Keyword query. Terms are OR-ed unless joined with AND; "quoted phrases" match exactly; field syntax such as metadata.title:"…" or doi:"10.5281/zenodo.N" works. Escape a literal / as \\/. A bare DOI or record URL is rejected; open it with zenodo_get_record instead. Omit to browse with filters only.'),
257
+ .describe('Keyword query. Terms are OR-ed unless joined with AND; "quoted phrases" (double quotes) match exactly; field syntax such as metadata.title:"…" or doi:"10.5281/zenodo.N" works. Escape a literal / as \\/. A bare DOI or record URL is rejected; open it with zenodo_get_record instead. With any filter other than community and all_versions, a query that is not valid search syntax (AND AND, a field: with no value, an unclosed [a TO b]) is rejected; without one, Zenodo matches it as plain text. Omit to browse with filters only.'),
165
258
  resource_type: resourceTypeInput.describe('Resource type ids, OR-ed (a single string is accepted): dataset, software, publication, publication-article, image-photo, … Any case; a subtype may also be written in the <type>::<id> form zenodo_lookup_vocabulary shows as its search value (publication::publication-article). A top-level type includes its subtypes. Look ids up with zenodo_lookup_vocabulary (vocabulary: resource_types).'),
166
259
  community: z
167
260
  .preprocess(blankToUndefined, z.string().max(200).optional())
@@ -211,14 +304,20 @@ export const searchRecords = tool('zenodo_search_records', {
211
304
  .int()
212
305
  .min(1)
213
306
  .default(1)
214
- .describe('Result page, starting at 1. page × size may not exceed 10,000.'),
215
- size: z.number().int().min(1).max(25).default(10).describe('Results per page (1–25).'),
307
+ .describe('Result page, starting at 1. Only the first 10,000 matches are reachable, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25).'),
308
+ size: z
309
+ .number()
310
+ .int()
311
+ .min(1)
312
+ .max(10_000)
313
+ .default(10)
314
+ .describe('Results per page, at most 25 per call; larger values return 25.'),
216
315
  }),
217
316
  output: z.object({
218
317
  total: z.number().describe('Exact number of matching records.'),
219
318
  reachable: z.number().describe('Matches reachable by paging: min(total, 10,000).'),
220
319
  page: z.number().describe('Page returned.'),
221
- size: z.number().describe('Page size applied.'),
320
+ size: z.number().describe('Page size applied: size, or 25 when size asked for more.'),
222
321
  has_more: z.boolean().describe('True when another reachable page follows.'),
223
322
  next_page: z.number().optional().describe('The next page number, when has_more.'),
224
323
  hits: z.array(HitSchema).describe('Matching deposits on this page.'),
@@ -256,7 +355,7 @@ export const searchRecords = tool('zenodo_search_records', {
256
355
  enrichment: {
257
356
  truncated: z.boolean().describe('True when more reachable matches follow this page.'),
258
357
  shown: z.number().describe('Hits returned on this page.'),
259
- cap: z.number().describe('Page size applied.'),
358
+ cap: z.number().describe('Page size applied (at most 25).'),
260
359
  totalCount: z.number().describe('Exact number of matching records.'),
261
360
  effectiveQuery: z.string().optional().describe('The exact q sent to Zenodo.'),
262
361
  appliedSort: z.enum(SEARCH_SORTS).describe('The sort order applied.'),
@@ -264,7 +363,7 @@ export const searchRecords = tool('zenodo_search_records', {
264
363
  notice: z
265
364
  .string()
266
365
  .optional()
267
- .describe('Guidance on empty results, the 10,000-result window, or further pages.'),
366
+ .describe('Guidance on a query Zenodo matched as plain text, empty results, the 10,000-result window, the 25-per-call size cap, or further pages.'),
268
367
  },
269
368
  errors: [
270
369
  {
@@ -276,8 +375,8 @@ export const searchRecords = tool('zenodo_search_records', {
276
375
  {
277
376
  reason: 'query_syntax',
278
377
  code: JsonRpcErrorCode.ValidationError,
279
- when: 'The query has an unpaired unescaped / outside quotes',
280
- recovery: 'Escape the slash as \\/ or wrap that term in double quotes, then call zenodo_search_records again.',
378
+ when: 'The query holds something Zenodo cannot run: a regular expression with no closing / (an unescaped / outside double quotes) or with a " inside /…/ left open; a " inside a word whose phrase never closes (with a filter other than community and all_versions set, only when the query still fails once that phrase is closed at its end) or closes past a bracket the query needs; a range bound ending in a backslash, as one holding an escaped space, ] or } does; an unescaped ! with nothing after it; or a boost, fuzziness, or proximity value it cannot convert. Or a filter other than community and all_versions is set and the query is not valid search syntax, which Zenodo would match as plain text with every filter dropped',
379
+ recovery: 'Fix the syntax the message names, then call zenodo_search_records again: double-quote or backslash-escape any / [ ] { } ~ ^ : or ! meant as plain text ("[CMIP6]", \\[CMIP6\\], 10.5281\\/zenodo.1, climate\\!) and any " inside a regular expression or a word (12\\" vinyl), write phrases in double quotes rather than single, drop a doubled or dangling operator (AND AND, or one with nothing after it inside parentheses, as in (climate AND)), give a field: prefix a value, close a range as [a TO b] and double-quote a bound that holds a space, ] or } ([a TO "b]"]), and give a boost or fuzziness one decimal number and a phrase proximity a whole number (^2, ~0.5, "x y"~2).',
281
380
  },
282
381
  {
283
382
  reason: 'query_failed',
@@ -316,7 +415,7 @@ export const searchRecords = tool('zenodo_search_records', {
316
415
  {
317
416
  reason: 'result_window_exceeded',
318
417
  code: JsonRpcErrorCode.ValidationError,
319
- when: 'page × size exceeds 10,000',
418
+ when: 'The page starts past the first 10,000 matches: (page − 1) × size is 10,000 or more, counting a size above 25 as 25',
320
419
  recovery: 'Zenodo serves only the first 10,000 matches; add filters or a published_from/published_to range to zenodo_search_records instead of paging deeper.',
321
420
  },
322
421
  {
@@ -330,22 +429,34 @@ export const searchRecords = tool('zenodo_search_records', {
330
429
  ],
331
430
  async handler(input, ctx) {
332
431
  const sort = input.sort ?? (input.query ? 'bestmatch' : 'newest');
432
+ const { applied: size, capNote } = applyCap('size', input.size, PAGE_SIZE_CAP);
333
433
  ctx.enrich({
334
434
  truncated: false,
335
435
  shown: 0,
336
- cap: input.size,
436
+ cap: size,
337
437
  totalCount: 0,
338
438
  appliedSort: sort,
339
439
  allVersions: input.all_versions,
340
440
  });
341
- if (input.page * input.size > RESULT_WINDOW) {
342
- throw ctx.fail('result_window_exceeded', `page ${input.page} × size ${input.size} is past the first ${RESULT_WINDOW.toLocaleString('en-US')} matches.`, ctx.recoveryFor('result_window_exceeded'));
343
- }
441
+ const pastWindow = windowRejection(input.page, size, 'matches', capNote);
442
+ if (pastWindow)
443
+ throw ctx.fail('result_window_exceeded', pastWindow);
344
444
  if (input.query && isWholeIdentifier(input.query)) {
345
- throw ctx.fail('query_is_identifier', `The query "${inline(input.query)}" is a record identifier, not search terms.`, ctx.recoveryFor('query_is_identifier'));
445
+ throw ctx.fail('query_is_identifier', `The query "${inline(input.query)}" is a record identifier, not search terms.`);
446
+ }
447
+ const filtered = Q_FILTERS.some((name) => input[name] !== undefined);
448
+ const sentQuery = queryAsSent(input.query, filtered);
449
+ const syntaxError = sentQuery ? querySyntaxError(sentQuery) : undefined;
450
+ const engine = engineFailure(input.query ?? '', sentQuery, filtered, syntaxError);
451
+ if (engine) {
452
+ throw ctx.fail('query_syntax', `Zenodo cannot run the query${asSentNote(engine.query, input.query)}: ${describeSyntaxError(engine.query, engine.error)}${engineReading(engine.error)}.`);
346
453
  }
347
- if (input.query && hasUnpairedSlash(input.query)) {
348
- throw ctx.fail('query_syntax', 'The query has an unpaired / outside quotes, which Zenodo parses as an unterminated regular expression.', ctx.recoveryFor('query_syntax'));
454
+ if (syntaxError && (filtered || isConversionError(syntaxError))) {
455
+ const asSent = asSentNote(sentQuery, input.query);
456
+ const detail = describeSyntaxError(sentQuery, syntaxError);
457
+ throw ctx.fail('query_syntax', isConversionError(syntaxError)
458
+ ? `Zenodo cannot convert a number in the query${asSent}: ${detail}.`
459
+ : `Zenodo cannot parse the query${asSent}: ${detail}. With filters set, Zenodo would not apply them to this query.`);
349
460
  }
350
461
  const publishedFrom = input.published_from
351
462
  ? expandPartialDate(input.published_from, 'from')
@@ -354,7 +465,7 @@ export const searchRecords = tool('zenodo_search_records', {
354
465
  ? expandPartialDate(input.published_to, 'to')
355
466
  : undefined;
356
467
  if (publishedFrom && publishedTo && publishedFrom > publishedTo) {
357
- throw ctx.fail('invalid_date_range', `published_from ${publishedFrom} is after published_to ${publishedTo}.`, ctx.recoveryFor('invalid_date_range'));
468
+ throw ctx.fail('invalid_date_range', `published_from ${publishedFrom} is after published_to ${publishedTo}.`);
358
469
  }
359
470
  const service = getZenodoService();
360
471
  let communityId;
@@ -362,7 +473,7 @@ export const searchRecords = tool('zenodo_search_records', {
362
473
  const ref = parseCommunityRef(input.community);
363
474
  const community = ref ? await service.getCommunity(ref, ctx) : undefined;
364
475
  if (!community) {
365
- throw ctx.fail('unknown_community', `No Zenodo community matches "${inline(input.community)}" as a slug, UUID, or community URL.`, ctx.recoveryFor('unknown_community'));
476
+ throw ctx.fail('unknown_community', `No Zenodo community matches "${inline(input.community)}" as a slug, UUID, or community URL.`);
366
477
  }
367
478
  communityId = community.uuid;
368
479
  }
@@ -371,14 +482,14 @@ export const searchRecords = tool('zenodo_search_records', {
371
482
  const ref = parseFunderRef(input.funder);
372
483
  const funder = ref ? await service.resolveFunder(ref, ctx) : undefined;
373
484
  if (!funder) {
374
- throw ctx.fail('unknown_funder', `"${inline(input.funder)}" is not a known ROR id and no funder carries that Crossref Funder DOI.`, ctx.recoveryFor('unknown_funder'));
485
+ throw ctx.fail('unknown_funder', `"${inline(input.funder)}" is not a known ROR id and no funder carries that Crossref Funder DOI.`);
375
486
  }
376
487
  funderRor = funder.ror_id;
377
488
  }
378
489
  const filters = {
379
490
  allVersions: input.all_versions,
380
491
  page: input.page,
381
- size: input.size,
492
+ size,
382
493
  sort,
383
494
  ...(input.query ? { query: input.query } : {}),
384
495
  ...(input.resource_type ? { resourceTypes: input.resource_type } : {}),
@@ -394,13 +505,16 @@ export const searchRecords = tool('zenodo_search_records', {
394
505
  };
395
506
  const result = await service.searchRecords(filters, ctx);
396
507
  const total = result.total;
397
- const reachable = Math.min(total, RESULT_WINDOW);
398
- const hasMore = input.page * input.size < reachable;
508
+ const reachable = reachableHits(total);
509
+ const hasMore = hasMorePages(input.page, size, total);
399
510
  ctx.enrich({ shown: result.hits.length });
400
511
  ctx.enrich.total(total);
401
512
  if (result.q)
402
513
  ctx.enrich.echo(result.q);
403
514
  const notice = [];
515
+ if (syntaxError) {
516
+ notice.push(`Zenodo could not parse the query (${describeSyntaxError(sentQuery, syntaxError)}), so it matched the query's words as plain text and ignored its operators, quotes, and field syntax.`);
517
+ }
404
518
  if (total === 0) {
405
519
  notice.push('No records matched.');
406
520
  const narrowing = [
@@ -429,7 +543,7 @@ export const searchRecords = tool('zenodo_search_records', {
429
543
  if (!input.all_versions) {
430
544
  notice.push('Only the latest version of each deposit is searched; set all_versions to true to include superseded versions.');
431
545
  }
432
- if (input.query && /\bAND\b|"/.test(input.query)) {
546
+ if (input.query && !syntaxError && /\bAND\b|"/.test(input.query)) {
433
547
  notice.push('Terms joined by AND must all match and quoted phrases must match exactly; loosen the query.');
434
548
  }
435
549
  if (input.published_from || input.published_to) {
@@ -437,19 +551,15 @@ export const searchRecords = tool('zenodo_search_records', {
437
551
  }
438
552
  }
439
553
  else if (result.hits.length === 0) {
440
- const last = Math.max(1, Math.ceil(reachable / input.size));
554
+ const last = Math.max(1, Math.ceil(reachable / size));
441
555
  notice.push(`Page ${input.page} is past the last page (${last}); call again with page ${last} or lower.`);
442
556
  }
443
557
  if (total > RESULT_WINDOW) {
444
558
  notice.push(`Only the first 10,000 of ${total.toLocaleString('en-US')} matches are reachable; add filters or a date range, or change sort.`);
445
559
  }
446
560
  if (hasMore) {
447
- notice.push(`Showing ${result.hits.length} of ${reachable.toLocaleString('en-US')}; call again with page ${input.page + 1}.`);
448
- ctx.enrich.truncated({
449
- shown: result.hits.length,
450
- cap: input.size,
451
- guidance: notice.join(' '),
452
- });
561
+ notice.push(`Showing ${result.hits.length} of ${reachable.toLocaleString('en-US')}${capNote ? ` (${capNote})` : ''}; call again with page ${input.page + 1}.`);
562
+ ctx.enrich.truncated({ shown: result.hits.length, cap: size, guidance: notice.join(' ') });
453
563
  }
454
564
  else if (notice.length) {
455
565
  ctx.enrich.notice(notice.join(' '));
@@ -458,7 +568,7 @@ export const searchRecords = tool('zenodo_search_records', {
458
568
  total,
459
569
  reachable,
460
570
  page: input.page,
461
- size: input.size,
571
+ size,
462
572
  has_more: hasMore,
463
573
  ...(hasMore ? { next_page: input.page + 1 } : {}),
464
574
  hits: result.hits,
@@ -1 +1 @@
1
- {"version":3,"file":"search-records.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-records.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-records.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-records.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @fileoverview Paging rules shared by the Zenodo tools: Zenodo's 10,000-hit result
3
+ * window on paged searches and listings, and the per-call cap that serves a larger
4
+ * budget input (a page size, an entry limit, a byte count) at the cap instead of
5
+ * rejecting it.
6
+ * @module mcp-server/tools/paging
7
+ */
8
+ /** Zenodo pages through only the first 10,000 hits of a search or listing. */
9
+ export declare const RESULT_WINDOW = 10000;
10
+ /**
11
+ * Page size cap of the search, version, and vocabulary pages. Zenodo answers a
12
+ * larger search or versions page with HTTP 400; vocabulary pages share the cap so
13
+ * one paging rule holds across the three tools.
14
+ */
15
+ export declare const PAGE_SIZE_CAP = 25;
16
+ /** Hits reachable by paging: the total, or the window when the total passes it. */
17
+ export declare const reachableHits: (total: number) => number;
18
+ /** True when another page of reachable hits follows: page × size < min(total, 10,000). */
19
+ export declare const hasMorePages: (page: number, size: number, total: number) => boolean;
20
+ /**
21
+ * The rejection message for a page that starts past the window, or `undefined` when
22
+ * the page is servable. Zenodo rejects only a page whose first hit lies past the
23
+ * window, `(page − 1) × size ≥ 10,000`, and serves the page straddling hit 10,000
24
+ * short; the message names the last servable page at this size, plus `capNote` when
25
+ * a cap lowered the size the page was counted at.
26
+ */
27
+ export declare function windowRejection(page: number, size: number, noun: string, capNote?: string): string | undefined;
28
+ /** A budget input after its per-call cap. */
29
+ export interface CappedValue {
30
+ /** The value the call runs with: the request, or the cap when the request is larger. */
31
+ applied: number;
32
+ /** `<name> <requested> is capped at <cap> per call`; present only when the cap lowered the value. */
33
+ capNote?: string;
34
+ }
35
+ /**
36
+ * Serves a budget input up to its per-call cap instead of rejecting a larger value.
37
+ * `applied` drives the upstream request, the cache key, continuation, and the value
38
+ * the output reports. `capNote` belongs in the notice only when the cap withheld
39
+ * results, which the calling tool decides (another page or byte range follows).
40
+ */
41
+ export declare function applyCap(name: string, requested: number, cap: number): CappedValue;
42
+ //# sourceMappingURL=paging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paging.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/paging.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,aAAa,QAAS,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,mFAAmF;AACnF,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAAwC,CAAC;AAEvF,0FAA0F;AAC1F,eAAO,MAAM,YAAY,SAAU,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAG,OACrC,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAIpB;AAED,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAIlF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview Paging rules shared by the Zenodo tools: Zenodo's 10,000-hit result
3
+ * window on paged searches and listings, and the per-call cap that serves a larger
4
+ * budget input (a page size, an entry limit, a byte count) at the cap instead of
5
+ * rejecting it.
6
+ * @module mcp-server/tools/paging
7
+ */
8
+ /** Zenodo pages through only the first 10,000 hits of a search or listing. */
9
+ export const RESULT_WINDOW = 10_000;
10
+ /**
11
+ * Page size cap of the search, version, and vocabulary pages. Zenodo answers a
12
+ * larger search or versions page with HTTP 400; vocabulary pages share the cap so
13
+ * one paging rule holds across the three tools.
14
+ */
15
+ export const PAGE_SIZE_CAP = 25;
16
+ /** Hits reachable by paging: the total, or the window when the total passes it. */
17
+ export const reachableHits = (total) => Math.min(total, RESULT_WINDOW);
18
+ /** True when another page of reachable hits follows: page × size < min(total, 10,000). */
19
+ export const hasMorePages = (page, size, total) => page * size < reachableHits(total);
20
+ /**
21
+ * The rejection message for a page that starts past the window, or `undefined` when
22
+ * the page is servable. Zenodo rejects only a page whose first hit lies past the
23
+ * window, `(page − 1) × size ≥ 10,000`, and serves the page straddling hit 10,000
24
+ * short; the message names the last servable page at this size, plus `capNote` when
25
+ * a cap lowered the size the page was counted at.
26
+ */
27
+ export function windowRejection(page, size, noun, capNote) {
28
+ if ((page - 1) * size < RESULT_WINDOW)
29
+ return;
30
+ const last = Math.ceil(RESULT_WINDOW / size);
31
+ return `Page ${page} at size ${size} starts past the first 10,000 ${noun}${capNote ? ` (${capNote})` : ''}; the last reachable page at size ${size} is ${last}.`;
32
+ }
33
+ /**
34
+ * Serves a budget input up to its per-call cap instead of rejecting a larger value.
35
+ * `applied` drives the upstream request, the cache key, continuation, and the value
36
+ * the output reports. `capNote` belongs in the notice only when the cap withheld
37
+ * results, which the calling tool decides (another page or byte range follows).
38
+ */
39
+ export function applyCap(name, requested, cap) {
40
+ return requested > cap
41
+ ? { applied: cap, capNote: `${name} ${requested} is capped at ${cap} per call` }
42
+ : { applied: requested };
43
+ }
44
+ //# sourceMappingURL=paging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paging.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/paging.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAEvF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa,EAAW,EAAE,CACjF,IAAI,GAAG,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,OAAgB;IAEhB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,aAAa;QAAE,OAAO;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,QAAQ,IAAI,YAAY,IAAI,iCAAiC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,qCAAqC,IAAI,OAAO,IAAI,GAAG,CAAC;AACnK,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB,EAAE,GAAW;IACnE,OAAO,SAAS,GAAG,GAAG;QACpB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,SAAS,iBAAiB,GAAG,WAAW,EAAE;QAChF,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
@@ -29,7 +29,11 @@ export declare function recordMiss(recid: string, lookup: Exclude<RecordLookup,
29
29
  miss_kind: 'restricted';
30
30
  guidance: string;
31
31
  };
32
- /** `miss_kind` and guidance for a non-Zenodo DOI that no Zenodo record carries. */
32
+ /**
33
+ * `miss_kind` and guidance for a non-Zenodo DOI that no Zenodo record carries. Only
34
+ * Zenodo was searched, so the guidance offers the DOI resolver without claiming the
35
+ * DOI resolves there.
36
+ */
33
37
  export declare function notOnZenodoMiss(doi: string): {
34
38
  miss_kind: 'not_on_zenodo';
35
39
  guidance: string;
@@ -1 +1 @@
1
- {"version":3,"file":"record-miss.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/record-miss.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,6DAA6D;AAC7D,eAAO,MAAM,eAAe;;;;;iBAYyB,CAAC;AAEtD,0GAA0G;AAC1G,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;eAIzE,WAAW;;;;eAOX,SAAS;;;;;eAOT,YAAY;;EAI9B;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM;IAEvC,SAAS,EAAE,eAAe;IAC1B,QAAQ;EAEX"}
1
+ {"version":3,"file":"record-miss.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/record-miss.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,6DAA6D;AAC7D,eAAO,MAAM,eAAe;;;;;iBAYyB,CAAC;AAEtD,0GAA0G;AAC1G,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;eAIzE,WAAW;;;;eAOX,SAAS;;;;;eAOT,YAAY;;EAI9B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM;IAEvC,SAAS,EAAE,eAAe;IAC1B,QAAQ;EAEX"}
@@ -41,11 +41,15 @@ export function recordMiss(recid, lookup) {
41
41
  };
42
42
  }
43
43
  }
44
- /** `miss_kind` and guidance for a non-Zenodo DOI that no Zenodo record carries. */
44
+ /**
45
+ * `miss_kind` and guidance for a non-Zenodo DOI that no Zenodo record carries. Only
46
+ * Zenodo was searched, so the guidance offers the DOI resolver without claiming the
47
+ * DOI resolves there.
48
+ */
45
49
  export function notOnZenodoMiss(doi) {
46
50
  return {
47
51
  miss_kind: 'not_on_zenodo',
48
- guidance: `DOI ${doi} is not registered to a Zenodo record. It resolves elsewhere at https://doi.org/${doi}; to find a related deposit, search by title with zenodo_search_records.`,
52
+ guidance: `DOI ${doi} is not registered to a Zenodo record; check https://doi.org/${doi} to see whether it resolves outside Zenodo, or search by title with zenodo_search_records to find a related deposit.`,
49
53
  };
50
54
  }
51
55
  //# sourceMappingURL=record-miss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-miss.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/record-miss.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACrE,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;CACJ,CAAC;KACD,QAAQ,CAAC,wCAAwC,CAAC,CAAC;AAEtD,0GAA0G;AAC1G,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAkD;IAC1F,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,WAAW;YACd,OAAO;gBACL,SAAS,EAAE,WAAoB;gBAC/B,QAAQ,EAAE,2BAA2B,KAAK,4GAA4G,KAAK,2BAA2B;aACvL,CAAC;QACJ,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC;YAC1E,OAAO;gBACL,SAAS,EAAE,SAAkB;gBAC7B,QAAQ,EAAE,UAAU,KAAK,+BAA+B,IAAI,aAAa,SAAS,CAAC,cAAc,IAAI,WAAW,oHAAoH;gBACpO,SAAS;aACV,CAAC;QACJ,CAAC;QACD,KAAK,YAAY;YACf,OAAO;gBACL,SAAS,EAAE,YAAqB;gBAChC,QAAQ,EAAE,UAAU,KAAK,4FAA4F;aACtH,CAAC;IACN,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO;QACL,SAAS,EAAE,eAAwB;QACnC,QAAQ,EAAE,OAAO,GAAG,mFAAmF,GAAG,0EAA0E;KACrL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"record-miss.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/record-miss.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACrE,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;CACJ,CAAC;KACD,QAAQ,CAAC,wCAAwC,CAAC,CAAC;AAEtD,0GAA0G;AAC1G,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAkD;IAC1F,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,WAAW;YACd,OAAO;gBACL,SAAS,EAAE,WAAoB;gBAC/B,QAAQ,EAAE,2BAA2B,KAAK,4GAA4G,KAAK,2BAA2B;aACvL,CAAC;QACJ,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC;YAC1E,OAAO;gBACL,SAAS,EAAE,SAAkB;gBAC7B,QAAQ,EAAE,UAAU,KAAK,+BAA+B,IAAI,aAAa,SAAS,CAAC,cAAc,IAAI,WAAW,oHAAoH;gBACpO,SAAS;aACV,CAAC;QACJ,CAAC;QACD,KAAK,YAAY;YACf,OAAO;gBACL,SAAS,EAAE,YAAqB;gBAChC,QAAQ,EAAE,UAAU,KAAK,4FAA4F;aACtH,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO;QACL,SAAS,EAAE,eAAwB;QACnC,QAAQ,EAAE,OAAO,GAAG,gEAAgE,GAAG,sHAAsH;KAC9M,CAAC;AACJ,CAAC"}