@cyanheads/brapi-mcp-server 0.3.6 → 0.3.8

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