@cyanheads/brapi-mcp-server 0.3.5 → 0.3.7

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.
@@ -0,0 +1,1030 @@
1
+ /**
2
+ * @fileoverview Tool registration barrel. The write tool
3
+ * (`brapi_submit_observations`) is exported separately so callers can decide
4
+ * whether to register it based on the `BRAPI_ENABLE_WRITES` flag — keeping
5
+ * this module free of eager config reads.
6
+ * @module mcp-server/tools/definitions/index
7
+ */
8
+ /** Read-only tools registered unconditionally on every server. */
9
+ export declare const readOnlyToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
10
+ endpoint: import("zod").ZodEnum<{
11
+ [x: string]: string;
12
+ }>;
13
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
14
+ endpoint: import("zod").ZodString;
15
+ filterCount: import("zod").ZodNumber;
16
+ filters: import("zod").ZodArray<import("zod").ZodObject<{
17
+ name: import("zod").ZodString;
18
+ type: import("zod").ZodEnum<{
19
+ string: "string";
20
+ number: "number";
21
+ boolean: "boolean";
22
+ date: "date";
23
+ integer: "integer";
24
+ "string[]": "string[]";
25
+ "integer[]": "integer[]";
26
+ }>;
27
+ description: import("zod").ZodString;
28
+ example: import("zod").ZodString;
29
+ }, import("zod/v4/core").$strip>>;
30
+ specReference: import("zod").ZodOptional<import("zod").ZodString>;
31
+ availableEndpoints: import("zod").ZodArray<import("zod").ZodString>;
32
+ }, import("zod/v4/core").$strip>, readonly [{
33
+ readonly reason: "unknown_endpoint";
34
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
35
+ readonly when: "No filter catalog is registered for the requested endpoint";
36
+ readonly recovery: "Pick an endpoint from data.availableEndpoints — same set as the input enum (studies, germplasm, observations, variables, images, variants, locations).";
37
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
38
+ germplasmDbId: import("zod").ZodString;
39
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
40
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
41
+ alias: import("zod").ZodString;
42
+ germplasm: import("zod").ZodObject<{
43
+ germplasmDbId: import("zod").ZodString;
44
+ germplasmName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
45
+ germplasmPUI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
46
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
47
+ accessionNumber: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
48
+ genus: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
49
+ species: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
50
+ subtaxa: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
51
+ defaultDisplayName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
52
+ pedigree: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
53
+ biologicalStatusOfAccessionDescription: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
54
+ germplasmOrigin: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{}, import("zod/v4/core").$loose>>>>;
55
+ countryOfOriginCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
56
+ collection: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
57
+ instituteCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
58
+ instituteName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
59
+ synonyms: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
60
+ synonym: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
61
+ type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
62
+ }, import("zod/v4/core").$loose>>>>;
63
+ }, import("zod/v4/core").$loose>;
64
+ parents: import("zod").ZodArray<import("zod").ZodObject<{
65
+ germplasmDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
66
+ germplasmName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
67
+ parentType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
68
+ }, import("zod/v4/core").$loose>>;
69
+ attributes: import("zod").ZodArray<import("zod").ZodObject<{
70
+ attributeDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
71
+ attributeName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
72
+ attributeValue: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
73
+ determinedDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
74
+ }, import("zod/v4/core").$loose>>;
75
+ studyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
76
+ directParentCount: import("zod").ZodNumber;
77
+ directDescendantCount: import("zod").ZodOptional<import("zod").ZodNumber>;
78
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
79
+ }, import("zod/v4/core").$strip>, readonly [{
80
+ readonly reason: "germplasm_not_found";
81
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
82
+ readonly when: "Upstream returned no germplasm record for the requested DbId";
83
+ readonly recovery: "Verify the germplasmDbId on the target server, or run brapi_find_germplasm to discover valid IDs.";
84
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
85
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
86
+ forceRefresh: import("zod").ZodDefault<import("zod").ZodBoolean>;
87
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
88
+ alias: import("zod").ZodString;
89
+ baseUrl: import("zod").ZodString;
90
+ server: import("zod").ZodObject<{
91
+ name: import("zod").ZodOptional<import("zod").ZodString>;
92
+ description: import("zod").ZodOptional<import("zod").ZodString>;
93
+ organizationName: import("zod").ZodOptional<import("zod").ZodString>;
94
+ organizationURL: import("zod").ZodOptional<import("zod").ZodString>;
95
+ documentationURL: import("zod").ZodOptional<import("zod").ZodString>;
96
+ contactEmail: import("zod").ZodOptional<import("zod").ZodString>;
97
+ brapiVersion: import("zod").ZodOptional<import("zod").ZodString>;
98
+ }, import("zod/v4/core").$strip>;
99
+ auth: import("zod").ZodObject<{
100
+ mode: import("zod").ZodEnum<{
101
+ none: "none";
102
+ sgn: "sgn";
103
+ oauth2: "oauth2";
104
+ api_key: "api_key";
105
+ bearer: "bearer";
106
+ }>;
107
+ headerName: import("zod").ZodOptional<import("zod").ZodString>;
108
+ expiresAt: import("zod").ZodOptional<import("zod").ZodString>;
109
+ }, import("zod/v4/core").$strip>;
110
+ capabilities: import("zod").ZodObject<{
111
+ supportedCount: import("zod").ZodNumber;
112
+ supported: import("zod").ZodArray<import("zod").ZodString>;
113
+ notableGaps: import("zod").ZodArray<import("zod").ZodString>;
114
+ }, import("zod/v4/core").$strip>;
115
+ content: import("zod").ZodObject<{
116
+ crops: import("zod").ZodArray<import("zod").ZodString>;
117
+ studyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
118
+ germplasmCount: import("zod").ZodOptional<import("zod").ZodNumber>;
119
+ programCount: import("zod").ZodOptional<import("zod").ZodNumber>;
120
+ locationCount: import("zod").ZodOptional<import("zod").ZodNumber>;
121
+ }, import("zod/v4/core").$strip>;
122
+ notes: import("zod").ZodArray<import("zod").ZodString>;
123
+ fetchedAt: import("zod").ZodString;
124
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
125
+ studyDbId: import("zod").ZodString;
126
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
127
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
128
+ alias: import("zod").ZodString;
129
+ study: import("zod").ZodObject<{
130
+ studyDbId: import("zod").ZodString;
131
+ studyName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
132
+ studyType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
133
+ studyDescription: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
134
+ programDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
135
+ programName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
136
+ trialDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
137
+ trialName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
138
+ locationDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
139
+ locationName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
140
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
141
+ seasons: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
142
+ active: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
143
+ startDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
144
+ endDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
145
+ studyCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
146
+ studyPUI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
147
+ }, import("zod/v4/core").$loose>;
148
+ program: import("zod").ZodOptional<import("zod").ZodObject<{
149
+ programDbId: import("zod").ZodString;
150
+ programName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
151
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
152
+ abbreviation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
153
+ leadPersonName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
154
+ documentationURL: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
155
+ }, import("zod/v4/core").$loose>>;
156
+ trial: import("zod").ZodOptional<import("zod").ZodObject<{
157
+ trialDbId: import("zod").ZodString;
158
+ trialName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
159
+ programDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
160
+ programName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
161
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
162
+ startDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
163
+ endDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
164
+ active: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
165
+ trialDescription: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
166
+ }, import("zod/v4/core").$loose>>;
167
+ location: import("zod").ZodOptional<import("zod").ZodObject<{
168
+ locationDbId: import("zod").ZodString;
169
+ locationName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
170
+ abbreviation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
171
+ countryCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
172
+ countryName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
173
+ locationType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
174
+ latitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
175
+ longitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
176
+ altitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
177
+ }, import("zod/v4/core").$loose>>;
178
+ observationCount: import("zod").ZodOptional<import("zod").ZodNumber>;
179
+ observationUnitCount: import("zod").ZodOptional<import("zod").ZodNumber>;
180
+ variableCount: import("zod").ZodOptional<import("zod").ZodNumber>;
181
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
182
+ }, import("zod/v4/core").$strip>, readonly [{
183
+ readonly reason: "study_not_found";
184
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
185
+ readonly when: "Upstream returned no study record for the requested DbId";
186
+ readonly recovery: "Verify the studyDbId on the target server, or run brapi_find_studies to discover valid IDs.";
187
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
188
+ baseUrl: import("zod").ZodOptional<import("zod").ZodString>;
189
+ auth: import("zod").ZodOptional<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
190
+ mode: import("zod").ZodLiteral<"none">;
191
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
192
+ mode: import("zod").ZodLiteral<"bearer">;
193
+ token: import("zod").ZodString;
194
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
195
+ mode: import("zod").ZodLiteral<"api_key">;
196
+ apiKey: import("zod").ZodString;
197
+ headerName: import("zod").ZodOptional<import("zod").ZodString>;
198
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
199
+ mode: import("zod").ZodLiteral<"sgn">;
200
+ username: import("zod").ZodString;
201
+ password: import("zod").ZodString;
202
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
203
+ mode: import("zod").ZodLiteral<"oauth2">;
204
+ clientId: import("zod").ZodString;
205
+ clientSecret: import("zod").ZodString;
206
+ tokenUrl: import("zod").ZodOptional<import("zod").ZodString>;
207
+ }, import("zod/v4/core").$strip>], "mode">>;
208
+ alias: import("zod").ZodDefault<import("zod").ZodString>;
209
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
210
+ alias: import("zod").ZodString;
211
+ baseUrl: import("zod").ZodString;
212
+ server: import("zod").ZodObject<{
213
+ name: import("zod").ZodOptional<import("zod").ZodString>;
214
+ description: import("zod").ZodOptional<import("zod").ZodString>;
215
+ organizationName: import("zod").ZodOptional<import("zod").ZodString>;
216
+ organizationURL: import("zod").ZodOptional<import("zod").ZodString>;
217
+ documentationURL: import("zod").ZodOptional<import("zod").ZodString>;
218
+ contactEmail: import("zod").ZodOptional<import("zod").ZodString>;
219
+ brapiVersion: import("zod").ZodOptional<import("zod").ZodString>;
220
+ }, import("zod/v4/core").$strip>;
221
+ auth: import("zod").ZodObject<{
222
+ mode: import("zod").ZodEnum<{
223
+ none: "none";
224
+ sgn: "sgn";
225
+ oauth2: "oauth2";
226
+ api_key: "api_key";
227
+ bearer: "bearer";
228
+ }>;
229
+ headerName: import("zod").ZodOptional<import("zod").ZodString>;
230
+ expiresAt: import("zod").ZodOptional<import("zod").ZodString>;
231
+ }, import("zod/v4/core").$strip>;
232
+ capabilities: import("zod").ZodObject<{
233
+ supportedCount: import("zod").ZodNumber;
234
+ supported: import("zod").ZodArray<import("zod").ZodString>;
235
+ notableGaps: import("zod").ZodArray<import("zod").ZodString>;
236
+ }, import("zod/v4/core").$strip>;
237
+ content: import("zod").ZodObject<{
238
+ crops: import("zod").ZodArray<import("zod").ZodString>;
239
+ studyCount: import("zod").ZodOptional<import("zod").ZodNumber>;
240
+ germplasmCount: import("zod").ZodOptional<import("zod").ZodNumber>;
241
+ programCount: import("zod").ZodOptional<import("zod").ZodNumber>;
242
+ locationCount: import("zod").ZodOptional<import("zod").ZodNumber>;
243
+ }, import("zod/v4/core").$strip>;
244
+ notes: import("zod").ZodArray<import("zod").ZodString>;
245
+ fetchedAt: import("zod").ZodString;
246
+ }, import("zod/v4/core").$strip>, readonly [{
247
+ readonly reason: "auth_token_exchange_failed";
248
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
249
+ readonly when: "SGN or OAuth token exchange against the BrAPI /token endpoint failed";
250
+ readonly recovery: "Verify the credentials and that the server exposes /token before retrying.";
251
+ }, {
252
+ readonly reason: "auth_no_access_token";
253
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
254
+ readonly when: "Token endpoint responded but did not return an access_token";
255
+ readonly recovery: "Confirm the credentials are valid and the upstream IdP issues access tokens for this grant.";
256
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
257
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
258
+ variantSetDbId: import("zod").ZodOptional<import("zod").ZodString>;
259
+ variantSetDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
260
+ germplasmDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
261
+ callSetDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
262
+ variantDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
263
+ callFormat: import("zod").ZodOptional<import("zod").ZodEnum<{
264
+ VCF: "VCF";
265
+ FLAPJACK: "FLAPJACK";
266
+ DARTSEQ: "DARTSEQ";
267
+ JSON: "JSON";
268
+ }>>;
269
+ maxCalls: import("zod").ZodOptional<import("zod").ZodNumber>;
270
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
271
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
272
+ alias: import("zod").ZodString;
273
+ results: import("zod").ZodArray<import("zod").ZodObject<{
274
+ callSetDbId: import("zod").ZodOptional<import("zod").ZodString>;
275
+ callSetName: import("zod").ZodOptional<import("zod").ZodString>;
276
+ variantDbId: import("zod").ZodOptional<import("zod").ZodString>;
277
+ variantName: import("zod").ZodOptional<import("zod").ZodString>;
278
+ variantSetDbId: import("zod").ZodOptional<import("zod").ZodString>;
279
+ genotype: import("zod").ZodOptional<import("zod").ZodObject<{
280
+ values: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
281
+ }, import("zod/v4/core").$loose>>;
282
+ genotypeValue: import("zod").ZodOptional<import("zod").ZodString>;
283
+ phaseSet: import("zod").ZodOptional<import("zod").ZodString>;
284
+ }, import("zod/v4/core").$loose>>;
285
+ returnedCount: import("zod").ZodNumber;
286
+ totalCount: import("zod").ZodNumber;
287
+ hasMore: import("zod").ZodBoolean;
288
+ callFormatting: import("zod").ZodObject<{
289
+ expandHomozygotes: import("zod").ZodOptional<import("zod").ZodBoolean>;
290
+ unknownString: import("zod").ZodOptional<import("zod").ZodString>;
291
+ sepPhased: import("zod").ZodOptional<import("zod").ZodString>;
292
+ sepUnphased: import("zod").ZodOptional<import("zod").ZodString>;
293
+ }, import("zod/v4/core").$strip>;
294
+ distributions: import("zod").ZodObject<{
295
+ callSetName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
296
+ variantName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
297
+ variantSetDbId: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
298
+ }, import("zod/v4/core").$strip>;
299
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
300
+ datasetId: import("zod").ZodString;
301
+ rowCount: import("zod").ZodNumber;
302
+ sizeBytes: import("zod").ZodNumber;
303
+ columns: import("zod").ZodArray<import("zod").ZodString>;
304
+ createdAt: import("zod").ZodString;
305
+ expiresAt: import("zod").ZodString;
306
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
307
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
308
+ }, import("zod/v4/core").$strip>>;
309
+ truncated: import("zod").ZodBoolean;
310
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
311
+ searchBody: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
312
+ }, import("zod/v4/core").$strip>, readonly [{
313
+ readonly reason: "no_filters";
314
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
315
+ readonly when: "No variant set, germplasm, call set, or variant filter was provided";
316
+ readonly recovery: "Provide variantSetDbId or germplasmDbIds before retrying — unfiltered pulls are too expensive.";
317
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
318
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
319
+ names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
320
+ germplasmDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
321
+ germplasmPUIs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
322
+ accessionNumbers: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
323
+ crops: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
324
+ synonyms: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
325
+ collections: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
326
+ genus: import("zod").ZodOptional<import("zod").ZodString>;
327
+ species: import("zod").ZodOptional<import("zod").ZodString>;
328
+ text: import("zod").ZodOptional<import("zod").ZodString>;
329
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
330
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
331
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
332
+ alias: import("zod").ZodString;
333
+ results: import("zod").ZodArray<import("zod").ZodObject<{
334
+ germplasmDbId: import("zod").ZodString;
335
+ germplasmName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
336
+ germplasmPUI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
337
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
338
+ accessionNumber: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
339
+ genus: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
340
+ species: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
341
+ subtaxa: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
342
+ defaultDisplayName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
343
+ pedigree: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
344
+ biologicalStatusOfAccessionDescription: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
345
+ germplasmOrigin: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{}, import("zod/v4/core").$loose>>>>;
346
+ countryOfOriginCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
347
+ collection: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
348
+ instituteCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
349
+ instituteName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
350
+ synonyms: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
351
+ synonym: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
352
+ type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
353
+ }, import("zod/v4/core").$loose>>>>;
354
+ }, import("zod/v4/core").$loose>>;
355
+ returnedCount: import("zod").ZodNumber;
356
+ totalCount: import("zod").ZodNumber;
357
+ hasMore: import("zod").ZodBoolean;
358
+ distributions: import("zod").ZodObject<{
359
+ commonCropName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
360
+ genus: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
361
+ species: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
362
+ collection: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
363
+ countryOfOriginCode: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
364
+ }, import("zod/v4/core").$strip>;
365
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
366
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
367
+ datasetId: import("zod").ZodString;
368
+ rowCount: import("zod").ZodNumber;
369
+ sizeBytes: import("zod").ZodNumber;
370
+ columns: import("zod").ZodArray<import("zod").ZodString>;
371
+ createdAt: import("zod").ZodString;
372
+ expiresAt: import("zod").ZodString;
373
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
374
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
375
+ }, import("zod/v4/core").$strip>>;
376
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
377
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
378
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
379
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
380
+ images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
381
+ observationUnits: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
382
+ observations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
383
+ studies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
384
+ imageFileNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
385
+ mimeTypes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
386
+ descriptiveOntologyTerms: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
387
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
388
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
389
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
390
+ alias: import("zod").ZodString;
391
+ results: import("zod").ZodArray<import("zod").ZodObject<{
392
+ imageDbId: import("zod").ZodString;
393
+ imageName: import("zod").ZodOptional<import("zod").ZodString>;
394
+ imageFileName: import("zod").ZodOptional<import("zod").ZodString>;
395
+ imageFileSize: import("zod").ZodOptional<import("zod").ZodNumber>;
396
+ imageHeight: import("zod").ZodOptional<import("zod").ZodNumber>;
397
+ imageWidth: import("zod").ZodOptional<import("zod").ZodNumber>;
398
+ mimeType: import("zod").ZodOptional<import("zod").ZodString>;
399
+ imageTimeStamp: import("zod").ZodOptional<import("zod").ZodString>;
400
+ imageURL: import("zod").ZodOptional<import("zod").ZodString>;
401
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
402
+ observationUnitName: import("zod").ZodOptional<import("zod").ZodString>;
403
+ observationDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
404
+ studyDbId: import("zod").ZodOptional<import("zod").ZodString>;
405
+ studyName: import("zod").ZodOptional<import("zod").ZodString>;
406
+ descriptiveOntologyTerms: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
407
+ copyright: import("zod").ZodOptional<import("zod").ZodString>;
408
+ description: import("zod").ZodOptional<import("zod").ZodString>;
409
+ }, import("zod/v4/core").$loose>>;
410
+ returnedCount: import("zod").ZodNumber;
411
+ totalCount: import("zod").ZodNumber;
412
+ hasMore: import("zod").ZodBoolean;
413
+ distributions: import("zod").ZodObject<{
414
+ mimeType: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
415
+ studyName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
416
+ observationUnitName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
417
+ descriptiveOntologyTerms: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
418
+ }, import("zod/v4/core").$strip>;
419
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
420
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
421
+ datasetId: import("zod").ZodString;
422
+ rowCount: import("zod").ZodNumber;
423
+ sizeBytes: import("zod").ZodNumber;
424
+ columns: import("zod").ZodArray<import("zod").ZodString>;
425
+ createdAt: import("zod").ZodString;
426
+ expiresAt: import("zod").ZodString;
427
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
428
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
429
+ }, import("zod/v4/core").$strip>>;
430
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
431
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
432
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
433
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
434
+ locations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
435
+ locationNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
436
+ countryCodes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
437
+ locationTypes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
438
+ abbreviations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
439
+ bbox: import("zod").ZodOptional<import("zod").ZodObject<{
440
+ minLat: import("zod").ZodOptional<import("zod").ZodNumber>;
441
+ maxLat: import("zod").ZodOptional<import("zod").ZodNumber>;
442
+ minLon: import("zod").ZodOptional<import("zod").ZodNumber>;
443
+ maxLon: import("zod").ZodOptional<import("zod").ZodNumber>;
444
+ }, import("zod/v4/core").$strip>>;
445
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
446
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
447
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
448
+ alias: import("zod").ZodString;
449
+ results: import("zod").ZodArray<import("zod").ZodObject<{
450
+ locationDbId: import("zod").ZodString;
451
+ locationName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
452
+ abbreviation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
453
+ countryCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
454
+ countryName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
455
+ locationType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
456
+ latitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
457
+ longitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
458
+ altitude: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
459
+ instituteName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
460
+ instituteAddress: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
461
+ documentationURL: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
462
+ }, import("zod/v4/core").$loose>>;
463
+ returnedCount: import("zod").ZodNumber;
464
+ totalCount: import("zod").ZodNumber;
465
+ hasMore: import("zod").ZodBoolean;
466
+ distributions: import("zod").ZodObject<{
467
+ countryCode: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
468
+ locationType: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
469
+ }, import("zod/v4/core").$strip>;
470
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
471
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
472
+ datasetId: import("zod").ZodString;
473
+ rowCount: import("zod").ZodNumber;
474
+ sizeBytes: import("zod").ZodNumber;
475
+ columns: import("zod").ZodArray<import("zod").ZodString>;
476
+ createdAt: import("zod").ZodString;
477
+ expiresAt: import("zod").ZodString;
478
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
479
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
480
+ }, import("zod/v4/core").$strip>>;
481
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
482
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
483
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
484
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
485
+ studies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
486
+ germplasm: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
487
+ variables: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
488
+ observationUnits: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
489
+ observations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
490
+ seasons: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
491
+ programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
492
+ trials: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
493
+ observationLevels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
494
+ timestampFrom: import("zod").ZodOptional<import("zod").ZodString>;
495
+ timestampTo: import("zod").ZodOptional<import("zod").ZodString>;
496
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
497
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
498
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
499
+ alias: import("zod").ZodString;
500
+ results: import("zod").ZodArray<import("zod").ZodObject<{
501
+ observationDbId: import("zod").ZodOptional<import("zod").ZodString>;
502
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
503
+ observationUnitName: import("zod").ZodOptional<import("zod").ZodString>;
504
+ observationVariableDbId: import("zod").ZodOptional<import("zod").ZodString>;
505
+ observationVariableName: import("zod").ZodOptional<import("zod").ZodString>;
506
+ studyDbId: import("zod").ZodOptional<import("zod").ZodString>;
507
+ studyName: import("zod").ZodOptional<import("zod").ZodString>;
508
+ germplasmDbId: import("zod").ZodOptional<import("zod").ZodString>;
509
+ germplasmName: import("zod").ZodOptional<import("zod").ZodString>;
510
+ observationLevel: import("zod").ZodOptional<import("zod").ZodString>;
511
+ season: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
512
+ seasonDbId: import("zod").ZodOptional<import("zod").ZodString>;
513
+ year: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
514
+ season: import("zod").ZodOptional<import("zod").ZodString>;
515
+ seasonName: import("zod").ZodOptional<import("zod").ZodString>;
516
+ }, import("zod/v4/core").$loose>]>>;
517
+ value: import("zod").ZodOptional<import("zod").ZodString>;
518
+ observationTimeStamp: import("zod").ZodOptional<import("zod").ZodString>;
519
+ collector: import("zod").ZodOptional<import("zod").ZodString>;
520
+ uploadedBy: import("zod").ZodOptional<import("zod").ZodString>;
521
+ }, import("zod/v4/core").$loose>>;
522
+ returnedCount: import("zod").ZodNumber;
523
+ totalCount: import("zod").ZodNumber;
524
+ hasMore: import("zod").ZodBoolean;
525
+ distributions: import("zod").ZodObject<{
526
+ observationVariableName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
527
+ studyName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
528
+ germplasmName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
529
+ observationLevel: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
530
+ season: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
531
+ }, import("zod/v4/core").$strip>;
532
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
533
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
534
+ datasetId: import("zod").ZodString;
535
+ rowCount: import("zod").ZodNumber;
536
+ sizeBytes: import("zod").ZodNumber;
537
+ columns: import("zod").ZodArray<import("zod").ZodString>;
538
+ createdAt: import("zod").ZodString;
539
+ expiresAt: import("zod").ZodString;
540
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
541
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
542
+ }, import("zod/v4/core").$strip>>;
543
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
544
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
545
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
546
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
547
+ crop: import("zod").ZodOptional<import("zod").ZodString>;
548
+ trialTypes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
549
+ seasons: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
550
+ locations: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
551
+ programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
552
+ trials: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
553
+ studyNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
554
+ active: import("zod").ZodOptional<import("zod").ZodBoolean>;
555
+ text: import("zod").ZodOptional<import("zod").ZodString>;
556
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
557
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
558
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
559
+ alias: import("zod").ZodString;
560
+ results: import("zod").ZodArray<import("zod").ZodObject<{
561
+ studyDbId: import("zod").ZodString;
562
+ studyName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
563
+ studyType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
564
+ studyDescription: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
565
+ programDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
566
+ programName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
567
+ trialDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
568
+ trialName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
569
+ locationDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
570
+ locationName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
571
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
572
+ seasons: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
573
+ active: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
574
+ startDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
575
+ endDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
576
+ studyCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
577
+ studyPUI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
578
+ }, import("zod/v4/core").$loose>>;
579
+ returnedCount: import("zod").ZodNumber;
580
+ totalCount: import("zod").ZodNumber;
581
+ hasMore: import("zod").ZodBoolean;
582
+ distributions: import("zod").ZodObject<{
583
+ programName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
584
+ studyType: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
585
+ seasons: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
586
+ locationName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
587
+ commonCropName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
588
+ }, import("zod/v4/core").$strip>;
589
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
590
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
591
+ datasetId: import("zod").ZodString;
592
+ rowCount: import("zod").ZodNumber;
593
+ sizeBytes: import("zod").ZodNumber;
594
+ columns: import("zod").ZodArray<import("zod").ZodString>;
595
+ createdAt: import("zod").ZodString;
596
+ expiresAt: import("zod").ZodString;
597
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
598
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
599
+ }, import("zod/v4/core").$strip>>;
600
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
601
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
602
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
603
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
604
+ variables: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
605
+ variableNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
606
+ variablePUIs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
607
+ traitClasses: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
608
+ ontologies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
609
+ studies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
610
+ methods: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
611
+ scales: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
612
+ crop: import("zod").ZodOptional<import("zod").ZodString>;
613
+ text: import("zod").ZodOptional<import("zod").ZodString>;
614
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
615
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
616
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
617
+ alias: import("zod").ZodString;
618
+ results: import("zod").ZodArray<import("zod").ZodObject<{
619
+ observationVariableDbId: import("zod").ZodString;
620
+ observationVariableName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
621
+ observationVariablePUI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
622
+ ontologyDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
623
+ ontologyName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
624
+ commonCropName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
625
+ trait: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
626
+ traitDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
627
+ traitName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
628
+ traitClass: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
629
+ description: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
630
+ synonyms: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
631
+ }, import("zod/v4/core").$loose>>>;
632
+ scale: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
633
+ scaleDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
634
+ scaleName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
635
+ dataType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
636
+ }, import("zod/v4/core").$loose>>>;
637
+ method: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
638
+ methodDbId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
639
+ methodName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
640
+ }, import("zod/v4/core").$loose>>>;
641
+ }, import("zod/v4/core").$loose>>;
642
+ returnedCount: import("zod").ZodNumber;
643
+ totalCount: import("zod").ZodNumber;
644
+ hasMore: import("zod").ZodBoolean;
645
+ distributions: import("zod").ZodObject<{
646
+ ontologyDbId: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
647
+ traitClass: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
648
+ scaleName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
649
+ }, import("zod/v4/core").$strip>;
650
+ ontologyCandidates: import("zod").ZodArray<import("zod").ZodObject<{
651
+ termId: import("zod").ZodOptional<import("zod").ZodString>;
652
+ name: import("zod").ZodOptional<import("zod").ZodString>;
653
+ description: import("zod").ZodOptional<import("zod").ZodString>;
654
+ synonyms: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
655
+ ontologyDbId: import("zod").ZodOptional<import("zod").ZodString>;
656
+ source: import("zod").ZodEnum<{
657
+ puiMatch: "puiMatch";
658
+ nameMatch: "nameMatch";
659
+ synonymMatch: "synonymMatch";
660
+ traitClassMatch: "traitClassMatch";
661
+ }>;
662
+ }, import("zod/v4/core").$strip>>;
663
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
664
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
665
+ datasetId: import("zod").ZodString;
666
+ rowCount: import("zod").ZodNumber;
667
+ sizeBytes: import("zod").ZodNumber;
668
+ columns: import("zod").ZodArray<import("zod").ZodString>;
669
+ createdAt: import("zod").ZodString;
670
+ expiresAt: import("zod").ZodString;
671
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
672
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
673
+ }, import("zod/v4/core").$strip>>;
674
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
675
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
676
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
677
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
678
+ variantSets: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
679
+ variants: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
680
+ references: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
681
+ referenceName: import("zod").ZodOptional<import("zod").ZodString>;
682
+ start: import("zod").ZodOptional<import("zod").ZodNumber>;
683
+ end: import("zod").ZodOptional<import("zod").ZodNumber>;
684
+ loadLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
685
+ extraFilters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
686
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
687
+ alias: import("zod").ZodString;
688
+ results: import("zod").ZodArray<import("zod").ZodObject<{
689
+ variantDbId: import("zod").ZodString;
690
+ variantNames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
691
+ variantSetDbId: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>]>>;
692
+ variantSetDbIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
693
+ variantType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
694
+ referenceBases: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
695
+ alternateBases: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
696
+ referenceName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
697
+ start: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
698
+ end: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
699
+ filtersPassed: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
700
+ filtersApplied: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
701
+ filtersFailed: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
702
+ }, import("zod/v4/core").$loose>>;
703
+ returnedCount: import("zod").ZodNumber;
704
+ totalCount: import("zod").ZodNumber;
705
+ hasMore: import("zod").ZodBoolean;
706
+ distributions: import("zod").ZodObject<{
707
+ variantType: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
708
+ referenceName: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
709
+ variantSetDbId: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNumber>;
710
+ }, import("zod/v4/core").$strip>;
711
+ refinementHint: import("zod").ZodOptional<import("zod").ZodString>;
712
+ dataset: import("zod").ZodOptional<import("zod").ZodObject<{
713
+ datasetId: import("zod").ZodString;
714
+ rowCount: import("zod").ZodNumber;
715
+ sizeBytes: import("zod").ZodNumber;
716
+ columns: import("zod").ZodArray<import("zod").ZodString>;
717
+ createdAt: import("zod").ZodString;
718
+ expiresAt: import("zod").ZodString;
719
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
720
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
721
+ }, import("zod/v4/core").$strip>>;
722
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
723
+ appliedFilters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
724
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
725
+ imageDbIds: import("zod").ZodArray<import("zod").ZodString>;
726
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
727
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
728
+ alias: import("zod").ZodString;
729
+ images: import("zod").ZodArray<import("zod").ZodObject<{
730
+ imageDbId: import("zod").ZodString;
731
+ mimeType: import("zod").ZodString;
732
+ sizeBytes: import("zod").ZodNumber;
733
+ source: import("zod").ZodEnum<{
734
+ imageURL: "imageURL";
735
+ imagecontent: "imagecontent";
736
+ }>;
737
+ data: import("zod").ZodString;
738
+ metadata: import("zod").ZodObject<{
739
+ imageDbId: import("zod").ZodString;
740
+ imageName: import("zod").ZodOptional<import("zod").ZodString>;
741
+ imageFileName: import("zod").ZodOptional<import("zod").ZodString>;
742
+ imageHeight: import("zod").ZodOptional<import("zod").ZodNumber>;
743
+ imageWidth: import("zod").ZodOptional<import("zod").ZodNumber>;
744
+ mimeType: import("zod").ZodOptional<import("zod").ZodString>;
745
+ imageURL: import("zod").ZodOptional<import("zod").ZodString>;
746
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
747
+ observationUnitName: import("zod").ZodOptional<import("zod").ZodString>;
748
+ studyDbId: import("zod").ZodOptional<import("zod").ZodString>;
749
+ studyName: import("zod").ZodOptional<import("zod").ZodString>;
750
+ imageTimeStamp: import("zod").ZodOptional<import("zod").ZodString>;
751
+ copyright: import("zod").ZodOptional<import("zod").ZodString>;
752
+ description: import("zod").ZodOptional<import("zod").ZodString>;
753
+ }, import("zod/v4/core").$loose>;
754
+ }, import("zod/v4/core").$strip>>;
755
+ errors: import("zod").ZodArray<import("zod").ZodObject<{
756
+ imageDbId: import("zod").ZodString;
757
+ error: import("zod").ZodString;
758
+ }, import("zod/v4/core").$strip>>;
759
+ warnings: import("zod").ZodArray<import("zod").ZodObject<{
760
+ imageDbId: import("zod").ZodString;
761
+ warning: import("zod").ZodString;
762
+ }, import("zod/v4/core").$strip>>;
763
+ }, import("zod/v4/core").$strip>, readonly [{
764
+ readonly reason: "images_unsupported";
765
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
766
+ readonly when: "BrAPI server does not advertise /images in /serverinfo";
767
+ readonly recovery: "Run brapi_server_info to inspect the advertised endpoints, or call brapi_connect with a different alias for a server that exposes /images.";
768
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
769
+ mode: import("zod").ZodEnum<{
770
+ delete: "delete";
771
+ list: "list";
772
+ summary: "summary";
773
+ load: "load";
774
+ }>;
775
+ datasetId: import("zod").ZodOptional<import("zod").ZodString>;
776
+ cursor: import("zod").ZodOptional<import("zod").ZodString>;
777
+ limit: import("zod").ZodOptional<import("zod").ZodNumber>;
778
+ page: import("zod").ZodOptional<import("zod").ZodNumber>;
779
+ pageSize: import("zod").ZodOptional<import("zod").ZodNumber>;
780
+ columns: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
781
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
782
+ result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
783
+ mode: import("zod").ZodLiteral<"list">;
784
+ datasets: import("zod").ZodArray<import("zod").ZodObject<{
785
+ datasetId: import("zod").ZodString;
786
+ source: import("zod").ZodString;
787
+ baseUrl: import("zod").ZodString;
788
+ query: import("zod").ZodUnknown;
789
+ rowCount: import("zod").ZodNumber;
790
+ columns: import("zod").ZodArray<import("zod").ZodString>;
791
+ sizeBytes: import("zod").ZodNumber;
792
+ createdAt: import("zod").ZodString;
793
+ expiresAt: import("zod").ZodString;
794
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
795
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
796
+ }, import("zod/v4/core").$strip>>;
797
+ cursor: import("zod").ZodOptional<import("zod").ZodString>;
798
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
799
+ mode: import("zod").ZodLiteral<"summary">;
800
+ dataset: import("zod").ZodObject<{
801
+ datasetId: import("zod").ZodString;
802
+ source: import("zod").ZodString;
803
+ baseUrl: import("zod").ZodString;
804
+ query: import("zod").ZodUnknown;
805
+ rowCount: import("zod").ZodNumber;
806
+ columns: import("zod").ZodArray<import("zod").ZodString>;
807
+ sizeBytes: import("zod").ZodNumber;
808
+ createdAt: import("zod").ZodString;
809
+ expiresAt: import("zod").ZodString;
810
+ truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
811
+ maxRows: import("zod").ZodOptional<import("zod").ZodNumber>;
812
+ }, import("zod/v4/core").$strip>;
813
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
814
+ mode: import("zod").ZodLiteral<"load">;
815
+ datasetId: import("zod").ZodString;
816
+ page: import("zod").ZodNumber;
817
+ pageSize: import("zod").ZodNumber;
818
+ totalRows: import("zod").ZodNumber;
819
+ totalPages: import("zod").ZodNumber;
820
+ rows: import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
821
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
822
+ mode: import("zod").ZodLiteral<"delete">;
823
+ datasetId: import("zod").ZodString;
824
+ deleted: import("zod").ZodLiteral<true>;
825
+ }, import("zod/v4/core").$strip>], "mode">;
826
+ }, import("zod/v4/core").$strip>, readonly [{
827
+ readonly reason: "datasetid_required";
828
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
829
+ readonly when: "Mode summary, load, or delete was selected without a datasetId";
830
+ readonly recovery: "Call mode=list first to discover available dataset IDs, then retry with one.";
831
+ }, {
832
+ readonly reason: "dataset_not_found";
833
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
834
+ readonly when: "Requested dataset is not present in the store (never existed or already expired)";
835
+ readonly recovery: "Run mode=list to confirm available datasets, or rerun the find_* tool that produced it.";
836
+ }, {
837
+ readonly reason: "dataset_rows_missing";
838
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
839
+ readonly when: "Dataset metadata is present but the row payload was lost or partially expired";
840
+ readonly recovery: "Delete the stale dataset via mode=delete and rerun the find_* tool that produced it.";
841
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
842
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
843
+ path: import("zod").ZodString;
844
+ params: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean, import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>]>>>;
845
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
846
+ alias: import("zod").ZodString;
847
+ url: import("zod").ZodString;
848
+ path: import("zod").ZodString;
849
+ metadata: import("zod").ZodObject<{
850
+ pagination: import("zod").ZodOptional<import("zod").ZodObject<{
851
+ currentPage: import("zod").ZodNumber;
852
+ pageSize: import("zod").ZodNumber;
853
+ totalCount: import("zod").ZodNumber;
854
+ totalPages: import("zod").ZodNumber;
855
+ }, import("zod/v4/core").$loose>>;
856
+ }, import("zod/v4/core").$loose>;
857
+ result: import("zod").ZodUnknown;
858
+ suggestion: import("zod").ZodOptional<import("zod").ZodString>;
859
+ }, import("zod/v4/core").$strip>, readonly [{
860
+ readonly reason: "cross_origin_path";
861
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
862
+ readonly when: "path argument was a full URL instead of a relative BrAPI route";
863
+ readonly recovery: "Pass a path like \"/samples\" or \"/methods\" — the connection alias supplies the baseUrl.";
864
+ }]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
865
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
866
+ noun: import("zod").ZodString;
867
+ body: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
868
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
869
+ alias: import("zod").ZodString;
870
+ noun: import("zod").ZodString;
871
+ kind: import("zod").ZodEnum<{
872
+ sync: "sync";
873
+ async: "async";
874
+ }>;
875
+ searchResultsDbId: import("zod").ZodOptional<import("zod").ZodString>;
876
+ metadata: import("zod").ZodObject<{
877
+ pagination: import("zod").ZodOptional<import("zod").ZodObject<{
878
+ currentPage: import("zod").ZodNumber;
879
+ pageSize: import("zod").ZodNumber;
880
+ totalCount: import("zod").ZodNumber;
881
+ totalPages: import("zod").ZodNumber;
882
+ }, import("zod/v4/core").$loose>>;
883
+ }, import("zod/v4/core").$loose>;
884
+ result: import("zod").ZodUnknown;
885
+ suggestion: import("zod").ZodOptional<import("zod").ZodString>;
886
+ }, import("zod/v4/core").$strip>, undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
887
+ germplasmDbIds: import("zod").ZodArray<import("zod").ZodString>;
888
+ direction: import("zod").ZodDefault<import("zod").ZodEnum<{
889
+ ancestors: "ancestors";
890
+ descendants: "descendants";
891
+ both: "both";
892
+ }>>;
893
+ maxDepth: import("zod").ZodDefault<import("zod").ZodNumber>;
894
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
895
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
896
+ alias: import("zod").ZodString;
897
+ direction: import("zod").ZodEnum<{
898
+ ancestors: "ancestors";
899
+ descendants: "descendants";
900
+ both: "both";
901
+ }>;
902
+ maxDepth: import("zod").ZodNumber;
903
+ nodes: import("zod").ZodArray<import("zod").ZodObject<{
904
+ germplasmDbId: import("zod").ZodString;
905
+ germplasmName: import("zod").ZodOptional<import("zod").ZodString>;
906
+ depth: import("zod").ZodNumber;
907
+ isRoot: import("zod").ZodBoolean;
908
+ }, import("zod/v4/core").$strip>>;
909
+ edges: import("zod").ZodArray<import("zod").ZodObject<{
910
+ from: import("zod").ZodString;
911
+ to: import("zod").ZodString;
912
+ relationship: import("zod").ZodEnum<{
913
+ parent: "parent";
914
+ child: "child";
915
+ }>;
916
+ parentType: import("zod").ZodOptional<import("zod").ZodString>;
917
+ }, import("zod/v4/core").$strip>>;
918
+ depthReached: import("zod").ZodNumber;
919
+ rootCount: import("zod").ZodNumber;
920
+ leafCount: import("zod").ZodNumber;
921
+ cycleCount: import("zod").ZodNumber;
922
+ deadEndCount: import("zod").ZodNumber;
923
+ truncated: import("zod").ZodBoolean;
924
+ warnings: import("zod").ZodArray<import("zod").ZodString>;
925
+ }, import("zod/v4/core").$strip>, undefined>)[];
926
+ /** Write tools — registered only when `BRAPI_ENABLE_WRITES=true`. */
927
+ export declare const writeToolDefinitions: import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
928
+ alias: import("zod").ZodOptional<import("zod").ZodString>;
929
+ studyDbId: import("zod").ZodString;
930
+ observations: import("zod").ZodArray<import("zod").ZodObject<{
931
+ observationDbId: import("zod").ZodOptional<import("zod").ZodString>;
932
+ observationUnitDbId: import("zod").ZodString;
933
+ observationVariableDbId: import("zod").ZodString;
934
+ value: import("zod").ZodString;
935
+ collector: import("zod").ZodOptional<import("zod").ZodString>;
936
+ observationTimeStamp: import("zod").ZodOptional<import("zod").ZodString>;
937
+ season: import("zod").ZodOptional<import("zod").ZodObject<{
938
+ seasonDbId: import("zod").ZodOptional<import("zod").ZodString>;
939
+ year: import("zod").ZodOptional<import("zod").ZodString>;
940
+ season: import("zod").ZodOptional<import("zod").ZodString>;
941
+ }, import("zod/v4/core").$strip>>;
942
+ geoCoordinates: import("zod").ZodOptional<import("zod").ZodObject<{
943
+ type: import("zod").ZodLiteral<"Feature">;
944
+ geometry: import("zod").ZodObject<{
945
+ type: import("zod").ZodLiteral<"Point">;
946
+ coordinates: import("zod").ZodArray<import("zod").ZodNumber>;
947
+ }, import("zod/v4/core").$strip>;
948
+ }, import("zod/v4/core").$strip>>;
949
+ }, import("zod/v4/core").$strip>>;
950
+ mode: import("zod").ZodDefault<import("zod").ZodEnum<{
951
+ preview: "preview";
952
+ apply: "apply";
953
+ }>>;
954
+ force: import("zod").ZodDefault<import("zod").ZodBoolean>;
955
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
956
+ alias: import("zod").ZodString;
957
+ result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
958
+ mode: import("zod").ZodLiteral<"preview">;
959
+ studyDbId: import("zod").ZodString;
960
+ studyName: import("zod").ZodOptional<import("zod").ZodString>;
961
+ valid: import("zod").ZodNumber;
962
+ invalid: import("zod").ZodNumber;
963
+ routing: import("zod").ZodObject<{
964
+ postCount: import("zod").ZodNumber;
965
+ putCount: import("zod").ZodNumber;
966
+ }, import("zod/v4/core").$strip>;
967
+ perRowWarnings: import("zod").ZodArray<import("zod").ZodObject<{
968
+ rowIndex: import("zod").ZodNumber;
969
+ observationVariableDbId: import("zod").ZodOptional<import("zod").ZodString>;
970
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
971
+ warning: import("zod").ZodString;
972
+ }, import("zod/v4/core").$strip>>;
973
+ knownVariableCount: import("zod").ZodNumber;
974
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
975
+ mode: import("zod").ZodLiteral<"apply">;
976
+ studyDbId: import("zod").ZodString;
977
+ studyName: import("zod").ZodOptional<import("zod").ZodString>;
978
+ posted: import("zod").ZodArray<import("zod").ZodObject<{
979
+ observationDbId: import("zod").ZodOptional<import("zod").ZodString>;
980
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
981
+ observationVariableDbId: import("zod").ZodOptional<import("zod").ZodString>;
982
+ value: import("zod").ZodOptional<import("zod").ZodString>;
983
+ }, import("zod/v4/core").$strip>>;
984
+ updated: import("zod").ZodArray<import("zod").ZodObject<{
985
+ observationDbId: import("zod").ZodString;
986
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
987
+ observationVariableDbId: import("zod").ZodOptional<import("zod").ZodString>;
988
+ value: import("zod").ZodOptional<import("zod").ZodString>;
989
+ }, import("zod/v4/core").$strip>>;
990
+ studyObservationCount: import("zod").ZodOptional<import("zod").ZodNumber>;
991
+ latestObservationTimestamp: import("zod").ZodOptional<import("zod").ZodString>;
992
+ perRowWarnings: import("zod").ZodArray<import("zod").ZodObject<{
993
+ rowIndex: import("zod").ZodNumber;
994
+ observationVariableDbId: import("zod").ZodOptional<import("zod").ZodString>;
995
+ observationUnitDbId: import("zod").ZodOptional<import("zod").ZodString>;
996
+ warning: import("zod").ZodString;
997
+ }, import("zod/v4/core").$strip>>;
998
+ }, import("zod/v4/core").$strip>], "mode">;
999
+ }, import("zod/v4/core").$strip>, readonly [{
1000
+ readonly reason: "observations_unsupported";
1001
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
1002
+ readonly when: "BrAPI server does not advertise /observations";
1003
+ readonly recovery: "Run brapi_server_info to inspect the advertised endpoints, or call brapi_connect with a different alias for a server that exposes /observations.";
1004
+ }, {
1005
+ readonly reason: "study_not_found";
1006
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
1007
+ readonly when: "Upstream returned no study record for the requested studyDbId";
1008
+ readonly recovery: "Verify the studyDbId on the target server, or run brapi_find_studies to discover valid IDs before retrying.";
1009
+ }, {
1010
+ readonly reason: "post_unsupported";
1011
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
1012
+ readonly when: "Server does not advertise POST on /observations but new rows were submitted";
1013
+ readonly recovery: "Remove the rows that lack observationDbId (those are the new rows) before retrying, or connect to a different server that supports POST on /observations.";
1014
+ }, {
1015
+ readonly reason: "put_unsupported";
1016
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
1017
+ readonly when: "Server does not advertise PUT on /observations but update rows were submitted";
1018
+ readonly recovery: "Connect to a different server that supports PUT on /observations — dropping observationDbId would route as POST and create duplicates instead of updating the existing rows.";
1019
+ }, {
1020
+ readonly reason: "elicit_unavailable";
1021
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
1022
+ readonly when: "Apply mode invoked but client does not expose ctx.elicit and force was false";
1023
+ readonly recovery: "Set force=true only with explicit user authorization, or use a client that supports elicitation.";
1024
+ }, {
1025
+ readonly reason: "user_declined";
1026
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
1027
+ readonly when: "User declined the elicitation prompt for the apply write";
1028
+ readonly recovery: "Re-run the tool when the user is ready to confirm the write.";
1029
+ }]>[];
1030
+ //# sourceMappingURL=index.d.ts.map