@cyanheads/zenodo-mcp-server 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/AGENTS.md +435 -0
  2. package/CLAUDE.md +435 -0
  3. package/Dockerfile +140 -0
  4. package/LICENSE +201 -0
  5. package/README.md +292 -0
  6. package/changelog/0.1.x/0.1.1.md +21 -0
  7. package/changelog/template.md +151 -0
  8. package/dist/config/server-config.d.ts +13 -0
  9. package/dist/config/server-config.d.ts.map +1 -0
  10. package/dist/config/server-config.js +19 -0
  11. package/dist/config/server-config.js.map +1 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +21 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts +186 -0
  17. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts.map +1 -0
  18. package/dist/mcp-server/tools/definitions/get-record.tool.js +568 -0
  19. package/dist/mcp-server/tools/definitions/get-record.tool.js.map +1 -0
  20. package/dist/mcp-server/tools/definitions/index.d.ts +721 -0
  21. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  22. package/dist/mcp-server/tools/definitions/index.js +21 -0
  23. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  24. package/dist/mcp-server/tools/definitions/list-files.tool.d.ts +108 -0
  25. package/dist/mcp-server/tools/definitions/list-files.tool.d.ts.map +1 -0
  26. package/dist/mcp-server/tools/definitions/list-files.tool.js +348 -0
  27. package/dist/mcp-server/tools/definitions/list-files.tool.js.map +1 -0
  28. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts +92 -0
  29. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/list-versions.tool.js +268 -0
  31. package/dist/mcp-server/tools/definitions/list-versions.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts +99 -0
  33. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js +324 -0
  35. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/read-file.tool.d.ts +104 -0
  37. package/dist/mcp-server/tools/definitions/read-file.tool.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/read-file.tool.js +370 -0
  39. package/dist/mcp-server/tools/definitions/read-file.tool.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts +181 -0
  41. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/search-records.tool.js +531 -0
  43. package/dist/mcp-server/tools/definitions/search-records.tool.js.map +1 -0
  44. package/dist/mcp-server/tools/record-miss.d.ts +37 -0
  45. package/dist/mcp-server/tools/record-miss.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/record-miss.js +51 -0
  47. package/dist/mcp-server/tools/record-miss.js.map +1 -0
  48. package/dist/mcp-server/tools/render.d.ts +31 -0
  49. package/dist/mcp-server/tools/render.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/render.js +53 -0
  51. package/dist/mcp-server/tools/render.js.map +1 -0
  52. package/dist/mcp-server/tools/schema-helpers.d.ts +20 -0
  53. package/dist/mcp-server/tools/schema-helpers.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/schema-helpers.js +44 -0
  55. package/dist/mcp-server/tools/schema-helpers.js.map +1 -0
  56. package/dist/services/zenodo/cache.d.ts +25 -0
  57. package/dist/services/zenodo/cache.d.ts.map +1 -0
  58. package/dist/services/zenodo/cache.js +58 -0
  59. package/dist/services/zenodo/cache.js.map +1 -0
  60. package/dist/services/zenodo/html-to-text.d.ts +23 -0
  61. package/dist/services/zenodo/html-to-text.d.ts.map +1 -0
  62. package/dist/services/zenodo/html-to-text.js +148 -0
  63. package/dist/services/zenodo/html-to-text.js.map +1 -0
  64. package/dist/services/zenodo/http.d.ts +73 -0
  65. package/dist/services/zenodo/http.d.ts.map +1 -0
  66. package/dist/services/zenodo/http.js +378 -0
  67. package/dist/services/zenodo/http.js.map +1 -0
  68. package/dist/services/zenodo/identifiers.d.ts +104 -0
  69. package/dist/services/zenodo/identifiers.d.ts.map +1 -0
  70. package/dist/services/zenodo/identifiers.js +261 -0
  71. package/dist/services/zenodo/identifiers.js.map +1 -0
  72. package/dist/services/zenodo/normalize.d.ts +29 -0
  73. package/dist/services/zenodo/normalize.d.ts.map +1 -0
  74. package/dist/services/zenodo/normalize.js +324 -0
  75. package/dist/services/zenodo/normalize.js.map +1 -0
  76. package/dist/services/zenodo/query-builder.d.ts +87 -0
  77. package/dist/services/zenodo/query-builder.d.ts.map +1 -0
  78. package/dist/services/zenodo/query-builder.js +221 -0
  79. package/dist/services/zenodo/query-builder.js.map +1 -0
  80. package/dist/services/zenodo/resource-types.d.ts +34 -0
  81. package/dist/services/zenodo/resource-types.d.ts.map +1 -0
  82. package/dist/services/zenodo/resource-types.js +97 -0
  83. package/dist/services/zenodo/resource-types.js.map +1 -0
  84. package/dist/services/zenodo/text-preview.d.ts +56 -0
  85. package/dist/services/zenodo/text-preview.d.ts.map +1 -0
  86. package/dist/services/zenodo/text-preview.js +151 -0
  87. package/dist/services/zenodo/text-preview.js.map +1 -0
  88. package/dist/services/zenodo/types.d.ts +517 -0
  89. package/dist/services/zenodo/types.d.ts.map +1 -0
  90. package/dist/services/zenodo/types.js +8 -0
  91. package/dist/services/zenodo/types.js.map +1 -0
  92. package/dist/services/zenodo/zenodo-service.d.ts +98 -0
  93. package/dist/services/zenodo/zenodo-service.d.ts.map +1 -0
  94. package/dist/services/zenodo/zenodo-service.js +392 -0
  95. package/dist/services/zenodo/zenodo-service.js.map +1 -0
  96. package/package.json +110 -0
  97. package/server.json +113 -0
@@ -0,0 +1,268 @@
1
+ /**
2
+ * @fileoverview zenodo_list_versions — lists a Zenodo deposit's version series,
3
+ * newest first. Accepts every identifier form zenodo_get_record accepts; a miss
4
+ * (unknown id, deleted record, restricted metadata, DOI not on Zenodo) is a result.
5
+ * @module mcp-server/tools/definitions/list-versions
6
+ */
7
+ import { tool, z } from '@cyanheads/mcp-ts-core';
8
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
9
+ import { parseRecordRef } from '../../../services/zenodo/identifiers.js';
10
+ import { getZenodoService } from '../../../services/zenodo/zenodo-service.js';
11
+ import { notOnZenodoMiss, recordMiss, TombstoneSchema } from '../record-miss.js';
12
+ import { inline, quoteBlock } from '../render.js';
13
+ /** Zenodo answers HTTP 400 when page × size passes this window. */
14
+ const RESULT_WINDOW = 10_000;
15
+ export const listVersions = tool('zenodo_list_versions', {
16
+ title: 'List Zenodo record versions',
17
+ description: "List every version of a Zenodo deposit's version series, newest first, with each version's record id, DOI, version label, publication date, file totals, and usage counts. Accepts any identifier zenodo_get_record accepts; a concept DOI and any single version's DOI list the same series. Use it to find the version a paper cited or the current release. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.",
18
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
19
+ input: z.object({
20
+ id: z
21
+ .string()
22
+ .trim()
23
+ .min(1)
24
+ .max(500)
25
+ .describe('Any version or concept identifier of the deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923) or concept DOI (10.5281/zenodo.591564), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL.'),
26
+ page: z
27
+ .number()
28
+ .int()
29
+ .min(1)
30
+ .default(1)
31
+ .describe('Result page, starting at 1. page × size may not exceed 10,000.'),
32
+ size: z.number().int().min(1).max(25).default(25).describe('Versions per page (1–25).'),
33
+ }),
34
+ output: z.object({
35
+ found: z.boolean().describe('True when the version series resolved.'),
36
+ input_kind: z
37
+ .enum(['record_id', 'zenodo_doi', 'external_doi', 'url'])
38
+ .describe('How id was parsed: record_id (digits), zenodo_doi (10.5281/zenodo.N or zenodo.N), external_doi (another DOI), or url (a zenodo.org or doi.org link).'),
39
+ miss_kind: z
40
+ .enum(['not_found', 'deleted', 'restricted', 'not_on_zenodo'])
41
+ .optional()
42
+ .describe('Why nothing resolved. Present when not found.'),
43
+ guidance: z.string().optional().describe('What to do next. Present when not found.'),
44
+ tombstone: TombstoneSchema.optional().describe('Removal tombstone. Present when miss_kind is deleted.'),
45
+ concept_recid: z
46
+ .string()
47
+ .optional()
48
+ .describe('Concept record id naming the whole series; absent when not found or on a page past the end.'),
49
+ concept_doi: z
50
+ .string()
51
+ .optional()
52
+ .describe('Concept DOI of the series, when minted; absent when not found or on a page past the end.'),
53
+ total_versions: z
54
+ .number()
55
+ .optional()
56
+ .describe('Number of versions in the series. Present when found.'),
57
+ latest_recid: z
58
+ .string()
59
+ .optional()
60
+ .describe('Record id of the newest version. Present when found, unless Zenodo cannot name it for a page past the end.'),
61
+ page: z.number().describe('Page returned.'),
62
+ size: z.number().describe('Page size applied.'),
63
+ has_more: z.boolean().describe('True when another page of versions follows.'),
64
+ next_page: z.number().optional().describe('The next page number, when has_more.'),
65
+ versions: z
66
+ .array(z
67
+ .object({
68
+ recid: z.string().describe('Record id of this version — feeds zenodo_get_record id.'),
69
+ doi: z.string().optional().describe('DOI of this version; absent on some old records.'),
70
+ version: z
71
+ .string()
72
+ .optional()
73
+ .describe('Version label as deposited; absent when the depositor set none.'),
74
+ title: z.string().describe('Title of this version.'),
75
+ publication_date: z
76
+ .string()
77
+ .optional()
78
+ .describe('Publication date (EDTF as given); absent when not recorded.'),
79
+ index: z
80
+ .number()
81
+ .optional()
82
+ .describe('Position in the series (1 = first version); absent if Zenodo omits version data.'),
83
+ is_latest: z
84
+ .boolean()
85
+ .optional()
86
+ .describe('True for the newest version; absent if Zenodo omits version data.'),
87
+ file_count: z
88
+ .number()
89
+ .optional()
90
+ .describe('Number of files; absent when files are restricted or embargoed.'),
91
+ total_bytes: z
92
+ .number()
93
+ .optional()
94
+ .describe('Total file size in bytes; absent when files are restricted or embargoed.'),
95
+ views: z
96
+ .number()
97
+ .optional()
98
+ .describe('Unique views of this version; absent when not reported.'),
99
+ downloads: z
100
+ .number()
101
+ .optional()
102
+ .describe('Unique downloads of this version; absent when not reported.'),
103
+ })
104
+ .describe('One version.'))
105
+ .describe('Versions on this page, newest first; empty when not found.'),
106
+ }),
107
+ enrichment: {
108
+ truncated: z.boolean().describe('True when more versions follow this page.'),
109
+ shown: z.number().describe('Versions returned on this page.'),
110
+ cap: z.number().describe('Page size applied.'),
111
+ totalCount: z.number().describe('Number of versions in the series.'),
112
+ notice: z.string().optional().describe('Guidance on paging or a page past the end.'),
113
+ },
114
+ errors: [
115
+ {
116
+ reason: 'invalid_identifier',
117
+ code: JsonRpcErrorCode.ValidationError,
118
+ when: 'id matches no accepted form, or is a GitHub-badge latestdoi id or a non-zenodo.org host',
119
+ recovery: 'Pass a Zenodo record id (22705923), a DOI (10.5281/zenodo.22705923), or a zenodo.org/records URL as id; for a title or keyword, use zenodo_search_records.',
120
+ },
121
+ {
122
+ reason: 'result_window_exceeded',
123
+ code: JsonRpcErrorCode.ValidationError,
124
+ when: 'page × size exceeds 10,000',
125
+ recovery: 'Zenodo pages only the first 10,000 versions of a series, and no series comes near that; call zenodo_list_versions with page 1 (total_versions and has_more show how far the series goes).',
126
+ },
127
+ {
128
+ reason: 'record_unavailable',
129
+ code: JsonRpcErrorCode.ServiceUnavailable,
130
+ when: 'Zenodo could not serve this record or its versions page: HTTP 500 after one retry, HTTP 500 while resolving a non-Zenodo DOI, or no complete record response within the time budget (its gateway cuts off near 30 s, which deposits with about 10,000 or more files hit)',
131
+ thrownBy: 'service',
132
+ recovery: 'Look the record up with zenodo_search_records using query doi:"<its DOI>" (all_versions true) or its title; withdrawn legacy records and deposits with more than about 10,000 files fail on the record endpoint, and if a keyword search also fails, Zenodo is degraded.',
133
+ },
134
+ {
135
+ reason: 'upstream_timeout',
136
+ code: JsonRpcErrorCode.Timeout,
137
+ when: 'The versions page got no complete response within its time budget',
138
+ retryable: false,
139
+ thrownBy: 'service',
140
+ recovery: 'Call zenodo_list_versions again with a smaller size (5); this series holds large file manifests.',
141
+ },
142
+ {
143
+ reason: 'rate_limited',
144
+ code: JsonRpcErrorCode.RateLimited,
145
+ when: "Zenodo answered HTTP 429, or this server's shared Zenodo request budget is spent for the current window",
146
+ retryable: true,
147
+ thrownBy: 'service',
148
+ recovery: 'Wait for the retryAfter seconds in the error data, then call zenodo_list_versions again with the same arguments.',
149
+ },
150
+ ],
151
+ async handler(input, ctx) {
152
+ ctx.enrich({ truncated: false, shown: 0, cap: input.size, totalCount: 0 });
153
+ if (input.page * input.size > RESULT_WINDOW) {
154
+ throw ctx.fail('result_window_exceeded', `page ${input.page} × size ${input.size} is past the first ${RESULT_WINDOW.toLocaleString('en-US')} versions Zenodo pages through.`, ctx.recoveryFor('result_window_exceeded'));
155
+ }
156
+ const ref = parseRecordRef(input.id);
157
+ if (ref.kind === 'invalid') {
158
+ throw ctx.fail('invalid_identifier', ref.message, ctx.recoveryFor('invalid_identifier'));
159
+ }
160
+ const service = getZenodoService();
161
+ const inputKind = ref.inputKind;
162
+ const miss = { found: false, input_kind: inputKind, page: input.page, size: input.size };
163
+ let recid;
164
+ if (ref.kind === 'external_doi') {
165
+ const resolution = await service.resolveDoi(ref.doi, ref.strippedDoi, ctx);
166
+ if (resolution.status === 'not_on_zenodo') {
167
+ return {
168
+ ...miss,
169
+ ...notOnZenodoMiss(ref.strippedDoi ?? ref.doi),
170
+ has_more: false,
171
+ versions: [],
172
+ };
173
+ }
174
+ recid = resolution.record.recid;
175
+ }
176
+ else {
177
+ recid = ref.recid;
178
+ }
179
+ let lookup = await service.listVersions(recid, input.page, input.size, ctx);
180
+ if (lookup.status === 'not_found' || lookup.total === 0) {
181
+ // A concept id 404s on /versions and a deleted recid answers 200 with no hits; the record GET classifies every miss.
182
+ const record = await service.getRecord(recid, ctx);
183
+ if (record.status !== 'found') {
184
+ return { ...miss, ...recordMiss(recid, record), has_more: false, versions: [] };
185
+ }
186
+ if (record.record.recid !== recid) {
187
+ recid = record.record.recid;
188
+ lookup = await service.listVersions(recid, input.page, input.size, ctx);
189
+ }
190
+ if (lookup.status === 'not_found')
191
+ lookup = { status: 'ok', total: 0, hits: [] };
192
+ lookup = {
193
+ ...lookup,
194
+ ...(lookup.concept_recid || !record.record.concept_recid
195
+ ? {}
196
+ : { concept_recid: record.record.concept_recid }),
197
+ ...(lookup.concept_doi || !record.record.concept_doi
198
+ ? {}
199
+ : { concept_doi: record.record.concept_doi }),
200
+ };
201
+ }
202
+ const { hits, total } = lookup;
203
+ const latestRecid = hits.find((h) => h.is_latest)?.recid ??
204
+ (input.page === 1 ? hits[0]?.recid : await service.latestRecid(recid, ctx));
205
+ const hasMore = input.page * input.size < total;
206
+ ctx.enrich({ shown: hits.length });
207
+ ctx.enrich.total(total);
208
+ if (hasMore) {
209
+ ctx.enrich.truncated({
210
+ shown: hits.length,
211
+ cap: input.size,
212
+ guidance: `Showing ${hits.length} of ${total} versions; call again with page ${input.page + 1}.`,
213
+ });
214
+ }
215
+ else if (total > 0 && hits.length === 0) {
216
+ ctx.enrich.notice(`Page ${input.page} is past the last page (${Math.max(1, Math.ceil(total / input.size))}).`);
217
+ }
218
+ return {
219
+ found: true,
220
+ input_kind: inputKind,
221
+ ...(lookup.concept_recid ? { concept_recid: lookup.concept_recid } : {}),
222
+ ...(lookup.concept_doi ? { concept_doi: lookup.concept_doi } : {}),
223
+ total_versions: total,
224
+ ...(latestRecid ? { latest_recid: latestRecid } : {}),
225
+ page: input.page,
226
+ size: input.size,
227
+ has_more: hasMore,
228
+ ...(hasMore ? { next_page: input.page + 1 } : {}),
229
+ versions: hits,
230
+ };
231
+ },
232
+ format: (result) => {
233
+ const lines = [`**Found:** ${result.found} | **Input kind:** ${result.input_kind}`];
234
+ if (result.miss_kind)
235
+ lines.push(`**Miss kind:** ${result.miss_kind}`);
236
+ if (result.guidance)
237
+ lines.push(`**Guidance:** ${inline(result.guidance)}`);
238
+ const t = result.tombstone;
239
+ if (t) {
240
+ lines.push(`**Tombstone:** removed ${inline(t.removal_date ?? 'on an unrecorded date')}; reason: ${t.removal_reason ? inline(t.removal_reason) : 'not given'}`);
241
+ if (t.note)
242
+ lines.push(quoteBlock(t.note, 'Removal note (untrusted):'));
243
+ if (t.citation_text)
244
+ lines.push(quoteBlock(t.citation_text, 'Tombstone citation (untrusted):'));
245
+ }
246
+ const series = [
247
+ result.concept_recid ? `**Concept record:** ${result.concept_recid}` : undefined,
248
+ result.concept_doi ? `**Concept DOI:** ${inline(result.concept_doi)}` : undefined,
249
+ result.total_versions !== undefined ? `**Versions:** ${result.total_versions}` : undefined,
250
+ result.latest_recid ? `**Latest record:** ${result.latest_recid}` : undefined,
251
+ ].filter(Boolean);
252
+ if (series.length)
253
+ lines.push(series.join(' | '));
254
+ lines.push(`**Page:** ${result.page} | **Size:** ${result.size} | **Has more:** ${result.has_more}${result.next_page !== undefined ? ` | **Next page:** ${result.next_page}` : ''}`);
255
+ for (const v of result.versions) {
256
+ lines.push('', `### ${v.version ? `${inline(v.version)} — ` : ''}record ${v.recid}${v.is_latest ? ' (latest)' : ''}`, `**Title:** ${inline(v.title)}`, [
257
+ v.doi ? `**DOI:** ${inline(v.doi)}` : undefined,
258
+ v.publication_date ? `**Published:** ${inline(v.publication_date)}` : undefined,
259
+ v.index !== undefined ? `**Index:** ${v.index}` : undefined,
260
+ v.is_latest !== undefined ? `**Latest:** ${v.is_latest}` : undefined,
261
+ ]
262
+ .filter(Boolean)
263
+ .join(' | '), `**Files:** ${v.file_count ?? 'not disclosed'} (${v.total_bytes ?? 'not disclosed'} bytes) | **Views:** ${v.views ?? 'not available'} | **Downloads:** ${v.downloads ?? 'not available'}`);
264
+ }
265
+ return [{ type: 'text', text: lines.join('\n') }];
266
+ },
267
+ });
268
+ //# sourceMappingURL=list-versions.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-versions.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/list-versions.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @fileoverview zenodo_lookup_vocabulary — resolves community, funder, award,
3
+ * license, and resource-type names to the ids zenodo_search_records filters on.
4
+ * The routing target for every unknown-value and zero-hit path.
5
+ * @module mcp-server/tools/definitions/lookup-vocabulary
6
+ */
7
+ import { z } from '@cyanheads/mcp-ts-core';
8
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
9
+ export declare const lookupVocabulary: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
10
+ vocabulary: z.ZodPreprocess<z.ZodEnum<{
11
+ awards: "awards";
12
+ communities: "communities";
13
+ funders: "funders";
14
+ licenses: "licenses";
15
+ resource_types: "resource_types";
16
+ }>, unknown>;
17
+ query: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
18
+ funder: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
19
+ page: z.ZodDefault<z.ZodNumber>;
20
+ size: z.ZodDefault<z.ZodNumber>;
21
+ }, z.core.$strip>, z.ZodObject<{
22
+ vocabulary: z.ZodEnum<{
23
+ awards: "awards";
24
+ communities: "communities";
25
+ funders: "funders";
26
+ licenses: "licenses";
27
+ resource_types: "resource_types";
28
+ }>;
29
+ query: z.ZodOptional<z.ZodString>;
30
+ total: z.ZodNumber;
31
+ page: z.ZodNumber;
32
+ size: z.ZodNumber;
33
+ has_more: z.ZodBoolean;
34
+ next_page: z.ZodOptional<z.ZodNumber>;
35
+ entries: z.ZodArray<z.ZodObject<{
36
+ filter_param: z.ZodEnum<{
37
+ award: "award";
38
+ community: "community";
39
+ funder: "funder";
40
+ license: "license";
41
+ resource_type: "resource_type";
42
+ }>;
43
+ filter_value: z.ZodString;
44
+ label: z.ZodString;
45
+ slug: z.ZodOptional<z.ZodString>;
46
+ uuid: z.ZodOptional<z.ZodString>;
47
+ community_type: z.ZodOptional<z.ZodString>;
48
+ website: z.ZodOptional<z.ZodString>;
49
+ organizations: z.ZodOptional<z.ZodArray<z.ZodString>>;
50
+ ror_id: z.ZodOptional<z.ZodString>;
51
+ funder_doi: z.ZodOptional<z.ZodString>;
52
+ acronym: z.ZodOptional<z.ZodString>;
53
+ country: z.ZodOptional<z.ZodString>;
54
+ country_name: z.ZodOptional<z.ZodString>;
55
+ number: z.ZodOptional<z.ZodString>;
56
+ title: z.ZodOptional<z.ZodString>;
57
+ program: z.ZodOptional<z.ZodString>;
58
+ funder_id: z.ZodOptional<z.ZodString>;
59
+ funder_name: z.ZodOptional<z.ZodString>;
60
+ award_doi: z.ZodOptional<z.ZodString>;
61
+ award_url: z.ZodOptional<z.ZodString>;
62
+ start_date: z.ZodOptional<z.ZodString>;
63
+ end_date: z.ZodOptional<z.ZodString>;
64
+ url: z.ZodOptional<z.ZodString>;
65
+ osi_approved: z.ZodOptional<z.ZodBoolean>;
66
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ parent_type: z.ZodOptional<z.ZodString>;
68
+ search_value: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>>;
70
+ }, z.core.$strip>, readonly [{
71
+ readonly reason: "funder_only_for_awards";
72
+ readonly code: JsonRpcErrorCode.ValidationError;
73
+ readonly when: "funder is set with a vocabulary other than awards";
74
+ readonly recovery: "Call zenodo_lookup_vocabulary again without funder, or set vocabulary to awards to scope grants by funder.";
75
+ }, {
76
+ readonly reason: "unknown_funder";
77
+ readonly code: JsonRpcErrorCode.ValidationError;
78
+ readonly when: "funder (awards) resolves to no Zenodo funder";
79
+ readonly recovery: "Resolve the funder first with zenodo_lookup_vocabulary (vocabulary: funders) and pass its ROR id as funder.";
80
+ }, {
81
+ readonly reason: "result_window_exceeded";
82
+ readonly code: JsonRpcErrorCode.ValidationError;
83
+ readonly when: "page × size exceeds 10,000";
84
+ readonly recovery: "Narrow the query and call zenodo_lookup_vocabulary again instead of paging past 10,000 entries.";
85
+ }, {
86
+ readonly reason: "rate_limited";
87
+ readonly code: JsonRpcErrorCode.RateLimited;
88
+ readonly when: "Zenodo answered HTTP 429, or this server's shared Zenodo request budget is spent for the current window";
89
+ readonly retryable: true;
90
+ readonly thrownBy: "service";
91
+ readonly recovery: "Wait for the retryAfter seconds in the error data, then call zenodo_lookup_vocabulary again with the same arguments.";
92
+ }], {
93
+ readonly truncated: z.ZodBoolean;
94
+ readonly shown: z.ZodNumber;
95
+ readonly cap: z.ZodNumber;
96
+ readonly totalCount: z.ZodNumber;
97
+ readonly notice: z.ZodOptional<z.ZodString>;
98
+ }>;
99
+ //# sourceMappingURL=lookup-vocabulary.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-vocabulary.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/lookup-vocabulary.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAmJjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsO3B,CAAC"}