@cyanheads/brapi-mcp-server 0.3.5

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 (238) hide show
  1. package/CLAUDE.md +391 -0
  2. package/Dockerfile +99 -0
  3. package/LICENSE +201 -0
  4. package/README.md +590 -0
  5. package/changelog/0.1.x/0.1.0.md +19 -0
  6. package/changelog/0.1.x/0.1.1.md +27 -0
  7. package/changelog/0.1.x/0.1.2.md +22 -0
  8. package/changelog/0.2.x/0.2.0.md +35 -0
  9. package/changelog/0.2.x/0.2.1.md +36 -0
  10. package/changelog/0.3.x/0.3.0.md +38 -0
  11. package/changelog/0.3.x/0.3.1.md +40 -0
  12. package/changelog/0.3.x/0.3.2.md +29 -0
  13. package/changelog/0.3.x/0.3.3.md +19 -0
  14. package/changelog/0.3.x/0.3.4.md +33 -0
  15. package/changelog/0.3.x/0.3.5.md +24 -0
  16. package/changelog/template.md +51 -0
  17. package/dist/config/alias-credentials.d.ts +82 -0
  18. package/dist/config/alias-credentials.d.ts.map +1 -0
  19. package/dist/config/alias-credentials.js +159 -0
  20. package/dist/config/alias-credentials.js.map +1 -0
  21. package/dist/config/server-config.d.ts +39 -0
  22. package/dist/config/server-config.d.ts.map +1 -0
  23. package/dist/config/server-config.js +128 -0
  24. package/dist/config/server-config.js.map +1 -0
  25. package/dist/index.d.ts +10 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +85 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.d.ts +14 -0
  30. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.d.ts.map +1 -0
  31. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js +75 -0
  32. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js.map +1 -0
  33. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.d.ts +16 -0
  34. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.d.ts.map +1 -0
  35. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js +109 -0
  36. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js.map +1 -0
  37. package/dist/mcp-server/resources/definitions/brapi-calls.resource.d.ts +11 -0
  38. package/dist/mcp-server/resources/definitions/brapi-calls.resource.d.ts.map +1 -0
  39. package/dist/mcp-server/resources/definitions/brapi-calls.resource.js +46 -0
  40. package/dist/mcp-server/resources/definitions/brapi-calls.resource.js.map +1 -0
  41. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts +13 -0
  42. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts.map +1 -0
  43. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js +26 -0
  44. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js.map +1 -0
  45. package/dist/mcp-server/resources/definitions/brapi-filters.resource.d.ts +19 -0
  46. package/dist/mcp-server/resources/definitions/brapi-filters.resource.d.ts.map +1 -0
  47. package/dist/mcp-server/resources/definitions/brapi-filters.resource.js +45 -0
  48. package/dist/mcp-server/resources/definitions/brapi-filters.resource.js.map +1 -0
  49. package/dist/mcp-server/resources/definitions/brapi-germplasm.resource.d.ts +18 -0
  50. package/dist/mcp-server/resources/definitions/brapi-germplasm.resource.d.ts.map +1 -0
  51. package/dist/mcp-server/resources/definitions/brapi-germplasm.resource.js +34 -0
  52. package/dist/mcp-server/resources/definitions/brapi-germplasm.resource.js.map +1 -0
  53. package/dist/mcp-server/resources/definitions/brapi-server-info.resource.d.ts +11 -0
  54. package/dist/mcp-server/resources/definitions/brapi-server-info.resource.d.ts.map +1 -0
  55. package/dist/mcp-server/resources/definitions/brapi-server-info.resource.js +28 -0
  56. package/dist/mcp-server/resources/definitions/brapi-server-info.resource.js.map +1 -0
  57. package/dist/mcp-server/resources/definitions/brapi-study.resource.d.ts +18 -0
  58. package/dist/mcp-server/resources/definitions/brapi-study.resource.d.ts.map +1 -0
  59. package/dist/mcp-server/resources/definitions/brapi-study.resource.js +34 -0
  60. package/dist/mcp-server/resources/definitions/brapi-study.resource.js.map +1 -0
  61. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts +82 -0
  62. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts.map +1 -0
  63. package/dist/mcp-server/tools/definitions/brapi-connect.tool.js +106 -0
  64. package/dist/mcp-server/tools/definitions/brapi-connect.tool.js.map +1 -0
  65. package/dist/mcp-server/tools/definitions/brapi-describe-filters.tool.d.ts +41 -0
  66. package/dist/mcp-server/tools/definitions/brapi-describe-filters.tool.d.ts.map +1 -0
  67. package/dist/mcp-server/tools/definitions/brapi-describe-filters.tool.js +88 -0
  68. package/dist/mcp-server/tools/definitions/brapi-describe-filters.tool.js.map +1 -0
  69. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +74 -0
  70. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts.map +1 -0
  71. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js +386 -0
  72. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js.map +1 -0
  73. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts +72 -0
  74. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -0
  75. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +290 -0
  76. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js.map +1 -0
  77. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts +65 -0
  78. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -0
  79. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js +243 -0
  80. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js.map +1 -0
  81. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts +63 -0
  82. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -0
  83. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +278 -0
  84. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js.map +1 -0
  85. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts +74 -0
  86. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -0
  87. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js +288 -0
  88. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js.map +1 -0
  89. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts +69 -0
  90. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -0
  91. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js +243 -0
  92. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js.map +1 -0
  93. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts +86 -0
  94. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -0
  95. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +337 -0
  96. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js.map +1 -0
  97. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts +59 -0
  98. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -0
  99. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js +248 -0
  100. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -0
  101. package/dist/mcp-server/tools/definitions/brapi-get-germplasm.tool.d.ts +59 -0
  102. package/dist/mcp-server/tools/definitions/brapi-get-germplasm.tool.d.ts.map +1 -0
  103. package/dist/mcp-server/tools/definitions/brapi-get-germplasm.tool.js +306 -0
  104. package/dist/mcp-server/tools/definitions/brapi-get-germplasm.tool.js.map +1 -0
  105. package/dist/mcp-server/tools/definitions/brapi-get-image.tool.d.ts +57 -0
  106. package/dist/mcp-server/tools/definitions/brapi-get-image.tool.d.ts.map +1 -0
  107. package/dist/mcp-server/tools/definitions/brapi-get-image.tool.js +291 -0
  108. package/dist/mcp-server/tools/definitions/brapi-get-image.tool.js.map +1 -0
  109. package/dist/mcp-server/tools/definitions/brapi-get-study.tool.d.ts +75 -0
  110. package/dist/mcp-server/tools/definitions/brapi-get-study.tool.d.ts.map +1 -0
  111. package/dist/mcp-server/tools/definitions/brapi-get-study.tool.js +323 -0
  112. package/dist/mcp-server/tools/definitions/brapi-get-study.tool.js.map +1 -0
  113. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts +87 -0
  114. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts.map +1 -0
  115. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js +296 -0
  116. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js.map +1 -0
  117. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts +35 -0
  118. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts.map +1 -0
  119. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js +148 -0
  120. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js.map +1 -0
  121. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +33 -0
  122. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts.map +1 -0
  123. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js +126 -0
  124. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js.map +1 -0
  125. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts +51 -0
  126. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts.map +1 -0
  127. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.js +41 -0
  128. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.js.map +1 -0
  129. package/dist/mcp-server/tools/definitions/brapi-submit-observations.tool.d.ts +117 -0
  130. package/dist/mcp-server/tools/definitions/brapi-submit-observations.tool.d.ts.map +1 -0
  131. package/dist/mcp-server/tools/definitions/brapi-submit-observations.tool.js +574 -0
  132. package/dist/mcp-server/tools/definitions/brapi-submit-observations.tool.js.map +1 -0
  133. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.d.ts +52 -0
  134. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.d.ts.map +1 -0
  135. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.js +420 -0
  136. package/dist/mcp-server/tools/definitions/brapi-walk-pedigree.tool.js.map +1 -0
  137. package/dist/mcp-server/tools/shared/connect-auth-schema.d.ts +29 -0
  138. package/dist/mcp-server/tools/shared/connect-auth-schema.d.ts.map +1 -0
  139. package/dist/mcp-server/tools/shared/connect-auth-schema.js +55 -0
  140. package/dist/mcp-server/tools/shared/connect-auth-schema.js.map +1 -0
  141. package/dist/mcp-server/tools/shared/find-helpers.d.ts +143 -0
  142. package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -0
  143. package/dist/mcp-server/tools/shared/find-helpers.js +319 -0
  144. package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -0
  145. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts +97 -0
  146. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts.map +1 -0
  147. package/dist/mcp-server/tools/shared/orientation-envelope.js +254 -0
  148. package/dist/mcp-server/tools/shared/orientation-envelope.js.map +1 -0
  149. package/dist/mcp-server/tools/shared/raw-routing-hints.d.ts +10 -0
  150. package/dist/mcp-server/tools/shared/raw-routing-hints.d.ts.map +1 -0
  151. package/dist/mcp-server/tools/shared/raw-routing-hints.js +46 -0
  152. package/dist/mcp-server/tools/shared/raw-routing-hints.js.map +1 -0
  153. package/dist/services/brapi-client/brapi-client.d.ts +76 -0
  154. package/dist/services/brapi-client/brapi-client.d.ts.map +1 -0
  155. package/dist/services/brapi-client/brapi-client.js +320 -0
  156. package/dist/services/brapi-client/brapi-client.js.map +1 -0
  157. package/dist/services/brapi-client/index.d.ts +9 -0
  158. package/dist/services/brapi-client/index.d.ts.map +1 -0
  159. package/dist/services/brapi-client/index.js +7 -0
  160. package/dist/services/brapi-client/index.js.map +1 -0
  161. package/dist/services/brapi-client/types.d.ts +82 -0
  162. package/dist/services/brapi-client/types.d.ts.map +1 -0
  163. package/dist/services/brapi-client/types.js +8 -0
  164. package/dist/services/brapi-client/types.js.map +1 -0
  165. package/dist/services/brapi-filters/catalog.d.ts +14 -0
  166. package/dist/services/brapi-filters/catalog.d.ts.map +1 -0
  167. package/dist/services/brapi-filters/catalog.js +490 -0
  168. package/dist/services/brapi-filters/catalog.js.map +1 -0
  169. package/dist/services/brapi-filters/index.d.ts +8 -0
  170. package/dist/services/brapi-filters/index.d.ts.map +1 -0
  171. package/dist/services/brapi-filters/index.js +7 -0
  172. package/dist/services/brapi-filters/index.js.map +1 -0
  173. package/dist/services/brapi-filters/types.d.ts +23 -0
  174. package/dist/services/brapi-filters/types.d.ts.map +1 -0
  175. package/dist/services/brapi-filters/types.js +9 -0
  176. package/dist/services/brapi-filters/types.js.map +1 -0
  177. package/dist/services/capability-registry/capability-registry.d.ts +51 -0
  178. package/dist/services/capability-registry/capability-registry.d.ts.map +1 -0
  179. package/dist/services/capability-registry/capability-registry.js +234 -0
  180. package/dist/services/capability-registry/capability-registry.js.map +1 -0
  181. package/dist/services/capability-registry/index.d.ts +9 -0
  182. package/dist/services/capability-registry/index.d.ts.map +1 -0
  183. package/dist/services/capability-registry/index.js +7 -0
  184. package/dist/services/capability-registry/index.js.map +1 -0
  185. package/dist/services/capability-registry/types.d.ts +67 -0
  186. package/dist/services/capability-registry/types.d.ts.map +1 -0
  187. package/dist/services/capability-registry/types.js +9 -0
  188. package/dist/services/capability-registry/types.js.map +1 -0
  189. package/dist/services/dataset-store/dataset-store.d.ts +35 -0
  190. package/dist/services/dataset-store/dataset-store.d.ts.map +1 -0
  191. package/dist/services/dataset-store/dataset-store.js +190 -0
  192. package/dist/services/dataset-store/dataset-store.js.map +1 -0
  193. package/dist/services/dataset-store/index.d.ts +8 -0
  194. package/dist/services/dataset-store/index.d.ts.map +1 -0
  195. package/dist/services/dataset-store/index.js +7 -0
  196. package/dist/services/dataset-store/index.js.map +1 -0
  197. package/dist/services/dataset-store/types.d.ts +65 -0
  198. package/dist/services/dataset-store/types.d.ts.map +1 -0
  199. package/dist/services/dataset-store/types.js +8 -0
  200. package/dist/services/dataset-store/types.js.map +1 -0
  201. package/dist/services/ontology-resolver/index.d.ts +8 -0
  202. package/dist/services/ontology-resolver/index.d.ts.map +1 -0
  203. package/dist/services/ontology-resolver/index.js +7 -0
  204. package/dist/services/ontology-resolver/index.js.map +1 -0
  205. package/dist/services/ontology-resolver/ontology-resolver.d.ts +49 -0
  206. package/dist/services/ontology-resolver/ontology-resolver.d.ts.map +1 -0
  207. package/dist/services/ontology-resolver/ontology-resolver.js +99 -0
  208. package/dist/services/ontology-resolver/ontology-resolver.js.map +1 -0
  209. package/dist/services/ontology-resolver/types.d.ts +38 -0
  210. package/dist/services/ontology-resolver/types.d.ts.map +1 -0
  211. package/dist/services/ontology-resolver/types.js +8 -0
  212. package/dist/services/ontology-resolver/types.js.map +1 -0
  213. package/dist/services/reference-data-cache/index.d.ts +9 -0
  214. package/dist/services/reference-data-cache/index.d.ts.map +1 -0
  215. package/dist/services/reference-data-cache/index.js +7 -0
  216. package/dist/services/reference-data-cache/index.js.map +1 -0
  217. package/dist/services/reference-data-cache/reference-data-cache.d.ts +31 -0
  218. package/dist/services/reference-data-cache/reference-data-cache.d.ts.map +1 -0
  219. package/dist/services/reference-data-cache/reference-data-cache.js +131 -0
  220. package/dist/services/reference-data-cache/reference-data-cache.js.map +1 -0
  221. package/dist/services/reference-data-cache/types.d.ts +42 -0
  222. package/dist/services/reference-data-cache/types.d.ts.map +1 -0
  223. package/dist/services/reference-data-cache/types.js +9 -0
  224. package/dist/services/reference-data-cache/types.js.map +1 -0
  225. package/dist/services/server-registry/index.d.ts +9 -0
  226. package/dist/services/server-registry/index.d.ts.map +1 -0
  227. package/dist/services/server-registry/index.js +7 -0
  228. package/dist/services/server-registry/index.js.map +1 -0
  229. package/dist/services/server-registry/server-registry.d.ts +57 -0
  230. package/dist/services/server-registry/server-registry.d.ts.map +1 -0
  231. package/dist/services/server-registry/server-registry.js +210 -0
  232. package/dist/services/server-registry/server-registry.js.map +1 -0
  233. package/dist/services/server-registry/types.d.ts +43 -0
  234. package/dist/services/server-registry/types.d.ts.map +1 -0
  235. package/dist/services/server-registry/types.js +10 -0
  236. package/dist/services/server-registry/types.js.map +1 -0
  237. package/package.json +86 -0
  238. package/server.json +99 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @fileoverview `brapi_find_variables` — find observation variables (traits)
3
+ * by name, trait class, ontology term, or free-text query. When `text` is
4
+ * supplied, results are re-ranked client-side via OntologyResolver; when
5
+ * the server exposes ontology metadata, matches can resolve to ontology
6
+ * URIs. Otherwise falls back to pure substring ordering.
7
+ *
8
+ * @module mcp-server/tools/definitions/brapi-find-variables.tool
9
+ */
10
+ import { z } from '@cyanheads/mcp-ts-core';
11
+ export declare const brapiFindVariables: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
12
+ alias: z.ZodOptional<z.ZodString>;
13
+ variables: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ variableNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ variablePUIs: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ traitClasses: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ ontologies: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ studies: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ methods: z.ZodOptional<z.ZodArray<z.ZodString>>;
20
+ scales: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ crop: z.ZodOptional<z.ZodString>;
22
+ text: z.ZodOptional<z.ZodString>;
23
+ loadLimit: z.ZodOptional<z.ZodNumber>;
24
+ extraFilters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
+ }, z.core.$strip>, z.ZodObject<{
26
+ alias: z.ZodString;
27
+ results: z.ZodArray<z.ZodObject<{
28
+ observationVariableDbId: z.ZodString;
29
+ observationVariableName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ observationVariablePUI: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ ontologyDbId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ ontologyName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
33
+ commonCropName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
+ trait: z.ZodOptional<z.ZodNullable<z.ZodObject<{
35
+ traitDbId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ traitName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
37
+ traitClass: z.ZodOptional<z.ZodNullable<z.ZodString>>;
38
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ synonyms: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
40
+ }, z.core.$loose>>>;
41
+ scale: z.ZodOptional<z.ZodNullable<z.ZodObject<{
42
+ scaleDbId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
43
+ scaleName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
44
+ dataType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ }, z.core.$loose>>>;
46
+ method: z.ZodOptional<z.ZodNullable<z.ZodObject<{
47
+ methodDbId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
+ methodName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ }, z.core.$loose>>>;
50
+ }, z.core.$loose>>;
51
+ returnedCount: z.ZodNumber;
52
+ totalCount: z.ZodNumber;
53
+ hasMore: z.ZodBoolean;
54
+ distributions: z.ZodObject<{
55
+ ontologyDbId: z.ZodRecord<z.ZodString, z.ZodNumber>;
56
+ traitClass: z.ZodRecord<z.ZodString, z.ZodNumber>;
57
+ scaleName: z.ZodRecord<z.ZodString, z.ZodNumber>;
58
+ }, z.core.$strip>;
59
+ ontologyCandidates: z.ZodArray<z.ZodObject<{
60
+ termId: z.ZodOptional<z.ZodString>;
61
+ name: z.ZodOptional<z.ZodString>;
62
+ description: z.ZodOptional<z.ZodString>;
63
+ synonyms: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
+ ontologyDbId: z.ZodOptional<z.ZodString>;
65
+ source: z.ZodEnum<{
66
+ puiMatch: "puiMatch";
67
+ nameMatch: "nameMatch";
68
+ synonymMatch: "synonymMatch";
69
+ traitClassMatch: "traitClassMatch";
70
+ }>;
71
+ }, z.core.$strip>>;
72
+ refinementHint: z.ZodOptional<z.ZodString>;
73
+ dataset: z.ZodOptional<z.ZodObject<{
74
+ datasetId: z.ZodString;
75
+ rowCount: z.ZodNumber;
76
+ sizeBytes: z.ZodNumber;
77
+ columns: z.ZodArray<z.ZodString>;
78
+ createdAt: z.ZodString;
79
+ expiresAt: z.ZodString;
80
+ truncated: z.ZodOptional<z.ZodBoolean>;
81
+ maxRows: z.ZodOptional<z.ZodNumber>;
82
+ }, z.core.$strip>>;
83
+ warnings: z.ZodArray<z.ZodString>;
84
+ appliedFilters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
85
+ }, z.core.$strip>, undefined>;
86
+ //# sourceMappingURL=brapi-find-variables.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brapi-find-variables.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-find-variables.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAgJjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6N7B,CAAC"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * @fileoverview `brapi_find_variables` — find observation variables (traits)
3
+ * by name, trait class, ontology term, or free-text query. When `text` is
4
+ * supplied, results are re-ranked client-side via OntologyResolver; when
5
+ * the server exposes ontology metadata, matches can resolve to ontology
6
+ * URIs. Otherwise falls back to pure substring ordering.
7
+ *
8
+ * @module mcp-server/tools/definitions/brapi-find-variables.tool
9
+ */
10
+ import { tool, z } from '@cyanheads/mcp-ts-core';
11
+ import { getServerConfig } from '../../../config/server-config.js';
12
+ import { getBrapiClient } from '../../../services/brapi-client/index.js';
13
+ import { getCapabilityRegistry } from '../../../services/capability-registry/index.js';
14
+ import { getDatasetStore } from '../../../services/dataset-store/index.js';
15
+ import { getOntologyResolver, } from '../../../services/ontology-resolver/index.js';
16
+ import { DEFAULT_ALIAS, getServerRegistry } from '../../../services/server-registry/index.js';
17
+ import { AliasInput, asString, buildRefinementHint, computeDistribution, DatasetHandleSchema, ExtraFiltersInput, LoadLimitInput, loadInitialPage, maybeSpill, mergeFilters, renderDatasetHandle, renderDistributions, } from '../shared/find-helpers.js';
18
+ const VariableRowSchema = z
19
+ .object({
20
+ observationVariableDbId: z
21
+ .string()
22
+ .describe('Server-side identifier for the observation variable.'),
23
+ observationVariableName: z.string().nullish().describe('Display name.'),
24
+ observationVariablePUI: z
25
+ .string()
26
+ .nullish()
27
+ .describe('Persistent unique identifier — typically an ontology term URI.'),
28
+ ontologyDbId: z.string().nullish().describe('FK to the owning ontology.'),
29
+ ontologyName: z.string().nullish().describe('Display name of the owning ontology.'),
30
+ commonCropName: z.string().nullish().describe('Common crop name this variable is scoped to.'),
31
+ trait: z
32
+ .object({
33
+ traitDbId: z.string().nullish().describe('FK to the trait.'),
34
+ traitName: z.string().nullish().describe('Display name of the trait.'),
35
+ traitClass: z
36
+ .string()
37
+ .nullish()
38
+ .describe('High-level trait grouping (e.g. "agronomic", "morphological").'),
39
+ description: z.string().nullish().describe('Free-text trait description.'),
40
+ synonyms: z
41
+ .array(z.string().describe('Trait synonym value.'))
42
+ .nullish()
43
+ .describe('Registered trait synonyms.'),
44
+ })
45
+ .passthrough()
46
+ .nullish()
47
+ .describe('The biological trait this variable measures.'),
48
+ scale: z
49
+ .object({
50
+ scaleDbId: z.string().nullish().describe('FK to the scale.'),
51
+ scaleName: z.string().nullish().describe('Display name of the scale.'),
52
+ dataType: z
53
+ .string()
54
+ .nullish()
55
+ .describe('Scale data type (e.g. "Numerical", "Categorical", "Date", "Text").'),
56
+ })
57
+ .passthrough()
58
+ .nullish()
59
+ .describe('Scale used to record this variable (units / type / range).'),
60
+ method: z
61
+ .object({
62
+ methodDbId: z.string().nullish().describe('FK to the method.'),
63
+ methodName: z.string().nullish().describe('Display name of the method.'),
64
+ })
65
+ .passthrough()
66
+ .nullish()
67
+ .describe('Measurement method or protocol used to collect this variable.'),
68
+ })
69
+ .passthrough()
70
+ .describe('One BrAPI observation variable record.');
71
+ const CandidateSchema = z
72
+ .object({
73
+ termId: z
74
+ .string()
75
+ .optional()
76
+ .describe('Ontology term ID / PUI when available (e.g. "CO_334:0000013").'),
77
+ name: z.string().optional().describe('Display name of the candidate.'),
78
+ description: z.string().optional().describe('Trait description, when available.'),
79
+ synonyms: z
80
+ .array(z.string().describe('Registered synonym.'))
81
+ .optional()
82
+ .describe('Combined variable + trait synonyms.'),
83
+ ontologyDbId: z.string().optional().describe('Owning ontology ID.'),
84
+ source: z
85
+ .enum(['puiMatch', 'nameMatch', 'synonymMatch', 'traitClassMatch'])
86
+ .describe('How the candidate was ranked — PUI exact / name / synonym / trait-class.'),
87
+ })
88
+ .describe('One ranked ontology candidate from a free-text query.');
89
+ const OutputSchema = z.object({
90
+ alias: z.string().describe('Alias of the registered BrAPI connection the call used.'),
91
+ results: z
92
+ .array(VariableRowSchema)
93
+ .describe('Observation variable rows returned in-context (up to loadLimit). Rows matching `text` are promoted to the top when the free-text query produces candidates.'),
94
+ returnedCount: z.number().int().nonnegative().describe('Length of `results[]`.'),
95
+ totalCount: z.number().int().nonnegative().describe('Total rows reported by the server.'),
96
+ hasMore: z.boolean().describe('True when more rows exist beyond the returned set.'),
97
+ distributions: z
98
+ .object({
99
+ ontologyDbId: z
100
+ .record(z.string(), z.number())
101
+ .describe('Ontology ID → count of variables in that ontology.'),
102
+ traitClass: z
103
+ .record(z.string(), z.number())
104
+ .describe('Trait class → count of variables in that class.'),
105
+ scaleName: z
106
+ .record(z.string(), z.number())
107
+ .describe('Scale name → count of variables using that scale.'),
108
+ })
109
+ .describe('Value frequency per field across the full result set.'),
110
+ ontologyCandidates: z
111
+ .array(CandidateSchema)
112
+ .describe('Top ranked candidates from the free-text query (if any). Empty when `text` was not supplied.'),
113
+ refinementHint: z
114
+ .string()
115
+ .optional()
116
+ .describe('Suggested next-step query refinement when the result set is large.'),
117
+ dataset: DatasetHandleSchema.optional().describe('Dataset handle when the full result set was persisted to DatasetStore.'),
118
+ warnings: z
119
+ .array(z.string())
120
+ .describe('Advisory messages (filter overrides, partial data, capability gaps, etc.).'),
121
+ appliedFilters: z
122
+ .record(z.string(), z.unknown())
123
+ .describe('The final filter map sent to the server (named + extraFilters).'),
124
+ });
125
+ export const brapiFindVariables = tool('brapi_find_variables', {
126
+ description: 'Find observation variables (traits) by name, trait class, ontology term, or free-text query. Free-text queries are ranked against the returned set and may resolve to ontology URIs when the server advertises them. Returns a dataset handle when the upstream total exceeds loadLimit.',
127
+ annotations: { readOnlyHint: true, openWorldHint: true },
128
+ input: z.object({
129
+ alias: AliasInput,
130
+ variables: z.array(z.string()).optional().describe('Filter by observationVariableDbIds.'),
131
+ variableNames: z
132
+ .array(z.string())
133
+ .optional()
134
+ .describe('Filter by exact observationVariableNames.'),
135
+ variablePUIs: z.array(z.string()).optional().describe('Filter by persistent ontology URIs.'),
136
+ traitClasses: z.array(z.string()).optional().describe('Filter by trait class.'),
137
+ ontologies: z.array(z.string()).optional().describe('Filter by ontologyDbIds.'),
138
+ studies: z.array(z.string()).optional().describe('Filter by studyDbIds.'),
139
+ methods: z.array(z.string()).optional().describe('Filter by methodDbIds.'),
140
+ scales: z.array(z.string()).optional().describe('Filter by scaleDbIds.'),
141
+ crop: z.string().optional().describe('Filter by common crop name (single value).'),
142
+ text: z
143
+ .string()
144
+ .optional()
145
+ .describe('Free-text query. Ranked client-side against variable names, synonyms, and descriptions.'),
146
+ loadLimit: LoadLimitInput,
147
+ extraFilters: ExtraFiltersInput,
148
+ }),
149
+ output: OutputSchema,
150
+ async handler(input, ctx) {
151
+ const registry = getServerRegistry();
152
+ const capabilities = getCapabilityRegistry();
153
+ const client = getBrapiClient();
154
+ const datasetStore = getDatasetStore();
155
+ const resolver = getOntologyResolver();
156
+ const config = getServerConfig();
157
+ const connection = await registry.get(ctx, input.alias ?? DEFAULT_ALIAS);
158
+ const capabilityLookup = {};
159
+ if (connection.resolvedAuth)
160
+ capabilityLookup.auth = connection.resolvedAuth;
161
+ await capabilities.ensure(connection.baseUrl, { service: 'variables', method: 'GET' }, ctx, capabilityLookup);
162
+ const profile = await capabilities.profile(connection.baseUrl, ctx, capabilityLookup);
163
+ const hasOntologyEndpoint = Boolean(profile.supported.ontologies);
164
+ const warnings = [];
165
+ const filters = mergeFilters({
166
+ observationVariableDbIds: input.variables,
167
+ observationVariableNames: input.variableNames,
168
+ observationVariablePUIs: input.variablePUIs,
169
+ traitClasses: input.traitClasses,
170
+ ontologyDbIds: input.ontologies,
171
+ studyDbId: input.studies?.[0],
172
+ methodDbIds: input.methods,
173
+ scaleDbIds: input.scales,
174
+ commonCropName: input.crop,
175
+ }, input.extraFilters, warnings);
176
+ if ((input.studies?.length ?? 0) > 1) {
177
+ warnings.push('BrAPI /variables accepts only one studyDbId per call; using the first value from `studies`.');
178
+ }
179
+ if (input.text && !hasOntologyEndpoint) {
180
+ warnings.push('Server does not expose /ontologies — free-text matching falls back to local substring + synonym matching on the returned rows.');
181
+ }
182
+ const loadLimit = input.loadLimit ?? config.loadLimit;
183
+ const firstPage = await loadInitialPage(client, connection, '/variables', filters, loadLimit, ctx);
184
+ const { fullRows, dataset: datasetMeta } = await maybeSpill({
185
+ firstPage,
186
+ client,
187
+ connection,
188
+ path: '/variables',
189
+ filters,
190
+ source: 'find_variables',
191
+ loadLimit,
192
+ ctx,
193
+ store: datasetStore,
194
+ });
195
+ let rankedResults = firstPage.rows;
196
+ let candidates = [];
197
+ if (input.text) {
198
+ candidates = resolver.match(input.text, fullRows, { limit: 10 });
199
+ if (candidates.length > 0) {
200
+ const orderedIds = new Set(candidates.map((c) => c.termId).filter(Boolean));
201
+ // Promote matched rows to the top of the in-context set.
202
+ const matched = [];
203
+ const rest = [];
204
+ for (const row of firstPage.rows) {
205
+ const pui = row.observationVariablePUI;
206
+ if (typeof pui === 'string' && orderedIds.has(pui))
207
+ matched.push(row);
208
+ else
209
+ rest.push(row);
210
+ }
211
+ rankedResults = [...matched, ...rest];
212
+ }
213
+ }
214
+ const distributions = {
215
+ ontologyDbId: computeDistribution(fullRows, (r) => asString(r.ontologyDbId)),
216
+ traitClass: computeDistribution(fullRows, (r) => {
217
+ const trait = r.trait;
218
+ if (!trait || typeof trait !== 'object')
219
+ return;
220
+ return asString(trait.traitClass);
221
+ }),
222
+ scaleName: computeDistribution(fullRows, (r) => {
223
+ const scale = r.scale;
224
+ if (!scale || typeof scale !== 'object')
225
+ return;
226
+ return asString(scale.scaleName);
227
+ }),
228
+ };
229
+ const totalCount = firstPage.totalCount ?? firstPage.rows.length;
230
+ const refinementHint = buildRefinementHint(totalCount, loadLimit, distributions);
231
+ const result = {
232
+ alias: connection.alias,
233
+ results: rankedResults,
234
+ returnedCount: rankedResults.length,
235
+ totalCount,
236
+ hasMore: firstPage.hasMore,
237
+ distributions,
238
+ ontologyCandidates: candidates,
239
+ warnings,
240
+ appliedFilters: filters,
241
+ };
242
+ if (refinementHint)
243
+ result.refinementHint = refinementHint;
244
+ if (datasetMeta)
245
+ result.dataset = datasetMeta;
246
+ return result;
247
+ },
248
+ format: (result) => {
249
+ const lines = [];
250
+ lines.push(`# ${result.returnedCount} of ${result.totalCount} variables — \`${result.alias}\``);
251
+ lines.push('');
252
+ if (result.hasMore) {
253
+ lines.push(`⚠ More rows exist beyond the returned set. ${result.dataset ? `Full set persisted as dataset \`${result.dataset.datasetId}\`.` : 'Narrow filters or raise loadLimit.'}`);
254
+ lines.push('');
255
+ }
256
+ if (result.refinementHint) {
257
+ lines.push(`**Refinement hint:** ${result.refinementHint}`);
258
+ lines.push('');
259
+ }
260
+ lines.push(`Applied filters: \`${JSON.stringify(result.appliedFilters)}\``);
261
+ lines.push('');
262
+ if (result.ontologyCandidates.length > 0) {
263
+ lines.push('## Ontology candidates (ranked)');
264
+ for (const c of result.ontologyCandidates) {
265
+ const parts = [];
266
+ if (c.name)
267
+ parts.push(`**${c.name}**`);
268
+ if (c.termId)
269
+ parts.push(`termId=\`${c.termId}\``);
270
+ if (c.ontologyDbId)
271
+ parts.push(`ontology=${c.ontologyDbId}`);
272
+ parts.push(`source=${c.source}`);
273
+ if (c.description)
274
+ parts.push(`desc=${c.description}`);
275
+ if (c.synonyms?.length)
276
+ parts.push(`synonyms=${c.synonyms.join(',')}`);
277
+ lines.push(`- ${parts.join(' · ')}`);
278
+ }
279
+ lines.push('');
280
+ }
281
+ lines.push('## Distributions');
282
+ lines.push(renderDistributions(result.distributions) || '_No values to summarize._');
283
+ lines.push('');
284
+ lines.push('## Variables');
285
+ if (result.results.length === 0) {
286
+ lines.push('_No rows returned._');
287
+ }
288
+ else {
289
+ for (const v of result.results) {
290
+ const parts = [`**${v.observationVariableName ?? v.observationVariableDbId}**`];
291
+ parts.push(`id=\`${v.observationVariableDbId}\``);
292
+ if (v.observationVariablePUI)
293
+ parts.push(`pui=${v.observationVariablePUI}`);
294
+ if (v.ontologyDbId)
295
+ parts.push(`ontology=${v.ontologyDbId}`);
296
+ if (v.ontologyName)
297
+ parts.push(`ontologyName=${v.ontologyName}`);
298
+ if (v.commonCropName)
299
+ parts.push(`crop=${v.commonCropName}`);
300
+ if (v.trait?.traitName)
301
+ parts.push(`trait=${v.trait.traitName}`);
302
+ if (v.trait?.traitDbId)
303
+ parts.push(`traitDbId=${v.trait.traitDbId}`);
304
+ if (v.trait?.traitClass)
305
+ parts.push(`class=${v.trait.traitClass}`);
306
+ if (v.trait?.description)
307
+ parts.push(`desc=${v.trait.description}`);
308
+ if (v.trait?.synonyms?.length)
309
+ parts.push(`synonyms=${v.trait.synonyms.join(',')}`);
310
+ if (v.scale?.scaleName)
311
+ parts.push(`scale=${v.scale.scaleName}`);
312
+ if (v.scale?.scaleDbId)
313
+ parts.push(`scaleDbId=${v.scale.scaleDbId}`);
314
+ if (v.scale?.dataType)
315
+ parts.push(`dataType=${v.scale.dataType}`);
316
+ if (v.method?.methodName)
317
+ parts.push(`method=${v.method.methodName}`);
318
+ if (v.method?.methodDbId)
319
+ parts.push(`methodDbId=${v.method.methodDbId}`);
320
+ lines.push(`- ${parts.join(' · ')}`);
321
+ }
322
+ }
323
+ if (result.dataset) {
324
+ lines.push('');
325
+ lines.push('## Dataset handle');
326
+ lines.push(...renderDatasetHandle(result.dataset));
327
+ }
328
+ if (result.warnings.length > 0) {
329
+ lines.push('');
330
+ lines.push('## Warnings');
331
+ for (const w of result.warnings)
332
+ lines.push(`- ${w}`);
333
+ }
334
+ return [{ type: 'text', text: lines.join('\n') }];
335
+ },
336
+ });
337
+ //# sourceMappingURL=brapi-find-variables.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brapi-find-variables.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-find-variables.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @fileoverview `brapi_find_variants` — find variant records by variant set,
3
+ * reference, or genomic region. Standard find_* pattern — distributions +
4
+ * dataset spillover. Note: the BrAPI filter catalog uses `start` / `end` as
5
+ * single scalars (1-based inclusive / exclusive) per the spec.
6
+ *
7
+ * @module mcp-server/tools/definitions/brapi-find-variants.tool
8
+ */
9
+ import { z } from '@cyanheads/mcp-ts-core';
10
+ export declare const brapiFindVariants: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
11
+ alias: z.ZodOptional<z.ZodString>;
12
+ variantSets: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ references: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ referenceName: z.ZodOptional<z.ZodString>;
16
+ start: z.ZodOptional<z.ZodNumber>;
17
+ end: z.ZodOptional<z.ZodNumber>;
18
+ loadLimit: z.ZodOptional<z.ZodNumber>;
19
+ extraFilters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
20
+ }, z.core.$strip>, z.ZodObject<{
21
+ alias: z.ZodString;
22
+ results: z.ZodArray<z.ZodObject<{
23
+ variantDbId: z.ZodString;
24
+ variantNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ variantSetDbId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
26
+ variantSetDbIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ variantType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ referenceBases: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ alternateBases: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
30
+ referenceName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ start: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
32
+ end: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
33
+ filtersPassed: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
34
+ filtersApplied: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
35
+ filtersFailed: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
36
+ }, z.core.$loose>>;
37
+ returnedCount: z.ZodNumber;
38
+ totalCount: z.ZodNumber;
39
+ hasMore: z.ZodBoolean;
40
+ distributions: z.ZodObject<{
41
+ variantType: z.ZodRecord<z.ZodString, z.ZodNumber>;
42
+ referenceName: z.ZodRecord<z.ZodString, z.ZodNumber>;
43
+ variantSetDbId: z.ZodRecord<z.ZodString, z.ZodNumber>;
44
+ }, z.core.$strip>;
45
+ refinementHint: z.ZodOptional<z.ZodString>;
46
+ dataset: z.ZodOptional<z.ZodObject<{
47
+ datasetId: z.ZodString;
48
+ rowCount: z.ZodNumber;
49
+ sizeBytes: z.ZodNumber;
50
+ columns: z.ZodArray<z.ZodString>;
51
+ createdAt: z.ZodString;
52
+ expiresAt: z.ZodString;
53
+ truncated: z.ZodOptional<z.ZodBoolean>;
54
+ maxRows: z.ZodOptional<z.ZodNumber>;
55
+ }, z.core.$strip>>;
56
+ warnings: z.ZodArray<z.ZodString>;
57
+ appliedFilters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
+ }, z.core.$strip>, undefined>;
59
+ //# sourceMappingURL=brapi-find-variants.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brapi-find-variants.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-find-variants.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA0GjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAwJ5B,CAAC"}