@cyanheads/brapi-mcp-server 0.4.14 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CLAUDE.md +23 -19
  2. package/README.md +40 -26
  3. package/changelog/0.5.x/0.5.0.md +59 -0
  4. package/changelog/0.5.x/0.5.1.md +13 -0
  5. package/dist/config/builtin-aliases.d.ts +1 -1
  6. package/dist/config/builtin-aliases.js +1 -1
  7. package/dist/config/server-config.d.ts +3 -3
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +13 -13
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.js +62 -15
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js +1 -1
  14. package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js.map +1 -1
  15. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js +3 -3
  16. package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.d.ts +8 -11
  18. package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.js +15 -25
  20. package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.d.ts +6 -10
  22. package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.js +6 -16
  24. package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.d.ts +69 -0
  26. package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.d.ts.map +1 -0
  27. package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.js +233 -0
  28. package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.js.map +1 -0
  29. package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.d.ts +19 -11
  30. package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.js +80 -28
  32. package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +4 -6
  34. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js +28 -36
  36. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js.map +1 -1
  37. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts +3 -5
  38. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +20 -19
  40. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js.map +1 -1
  41. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts +4 -6
  42. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js +17 -16
  44. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js.map +1 -1
  45. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts +3 -5
  46. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -1
  47. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +16 -15
  48. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js.map +1 -1
  49. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts +4 -6
  50. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -1
  51. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js +18 -17
  52. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js.map +1 -1
  53. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts +4 -6
  54. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -1
  55. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js +23 -21
  56. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js.map +1 -1
  57. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts +2 -4
  58. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -1
  59. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +18 -17
  60. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js.map +1 -1
  61. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts +3 -5
  62. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -1
  63. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js +18 -15
  64. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -1
  65. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts +17 -2
  66. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts.map +1 -1
  67. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js +51 -7
  68. package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js.map +1 -1
  69. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +16 -2
  70. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts.map +1 -1
  71. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js +51 -5
  72. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js.map +1 -1
  73. package/dist/mcp-server/tools/definitions/index.d.ts +141 -165
  74. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  75. package/dist/mcp-server/tools/definitions/index.js +28 -17
  76. package/dist/mcp-server/tools/definitions/index.js.map +1 -1
  77. package/dist/mcp-server/tools/shared/find-helpers.d.ts +76 -45
  78. package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
  79. package/dist/mcp-server/tools/shared/find-helpers.js +159 -72
  80. package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
  81. package/dist/mcp-server/tools/shared/raw-routing-hints.d.ts.map +1 -1
  82. package/dist/mcp-server/tools/shared/raw-routing-hints.js +6 -6
  83. package/dist/mcp-server/tools/shared/raw-routing-hints.js.map +1 -1
  84. package/dist/services/canvas-bridge/canvas-bridge.d.ts +69 -44
  85. package/dist/services/canvas-bridge/canvas-bridge.d.ts.map +1 -1
  86. package/dist/services/canvas-bridge/canvas-bridge.js +143 -112
  87. package/dist/services/canvas-bridge/canvas-bridge.js.map +1 -1
  88. package/dist/services/canvas-bridge/index.d.ts +1 -1
  89. package/dist/services/canvas-bridge/index.d.ts.map +1 -1
  90. package/dist/services/canvas-bridge/index.js +1 -1
  91. package/dist/services/canvas-bridge/index.js.map +1 -1
  92. package/dist/services/canvas-bridge/types.d.ts +11 -12
  93. package/dist/services/canvas-bridge/types.d.ts.map +1 -1
  94. package/dist/services/canvas-bridge/types.js +4 -4
  95. package/package.json +3 -11
  96. package/server.json +3 -3
  97. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts +0 -13
  98. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts.map +0 -1
  99. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js +0 -26
  100. package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js.map +0 -1
  101. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts +0 -89
  102. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts.map +0 -1
  103. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js +0 -306
  104. package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js.map +0 -1
  105. package/dist/services/dataset-store/dataset-store.d.ts +0 -44
  106. package/dist/services/dataset-store/dataset-store.d.ts.map +0 -1
  107. package/dist/services/dataset-store/dataset-store.js +0 -208
  108. package/dist/services/dataset-store/dataset-store.js.map +0 -1
  109. package/dist/services/dataset-store/index.d.ts +0 -8
  110. package/dist/services/dataset-store/index.d.ts.map +0 -1
  111. package/dist/services/dataset-store/index.js +0 -7
  112. package/dist/services/dataset-store/index.js.map +0 -1
  113. package/dist/services/dataset-store/types.d.ts +0 -72
  114. package/dist/services/dataset-store/types.d.ts.map +0 -1
  115. package/dist/services/dataset-store/types.js +0 -8
  116. package/dist/services/dataset-store/types.js.map +0 -1
@@ -2,8 +2,8 @@
2
2
  * @fileoverview Shared building blocks for `find_*` tools — Zod fragments for
3
3
  * common inputs (alias, loadLimit, extraFilters), utilities to merge named
4
4
  * filters with the passthrough map, a generic distribution aggregator, and
5
- * the dataset-spillover handler that turns a "too many rows" result into a
6
- * DatasetStore handle.
5
+ * the spillover handler that turns a "too many rows" result into a canvas
6
+ * dataframe handle.
7
7
  *
8
8
  * @module mcp-server/tools/shared/find-helpers
9
9
  */
@@ -11,14 +11,14 @@ import { type Context, type HandlerContext, z } from '@cyanheads/mcp-ts-core';
11
11
  import type { ServerConfig } from '../../../config/server-config.js';
12
12
  import type { BrapiClient, BrapiEnvelope, BrapiPagination, BrapiRequestOptions, ResolvedAuth } from '../../../services/brapi-client/index.js';
13
13
  import type { BrapiDialect } from '../../../services/brapi-dialect/index.js';
14
+ import type { CanvasBridge, RegisterDataframeResult } from '../../../services/canvas-bridge/index.js';
14
15
  import type { CapabilityProfile } from '../../../services/capability-registry/types.js';
15
- import type { DatasetMetadata, DatasetStore } from '../../../services/dataset-store/index.js';
16
16
  import type { RegisteredServer } from '../../../services/server-registry/index.js';
17
17
  /** True when the thrown value is an upstream 404 surfaced by the BrAPI client. */
18
18
  export declare function isUpstreamNotFound(err: unknown): boolean;
19
- /** Upper cap on how many rows we'll pull for DatasetStore spillover per call. */
19
+ /** Upper cap on how many rows we'll pull for canvas dataframe spillover per call. */
20
20
  export declare const MAX_SPILLOVER_ROWS = 50000;
21
- /** Hard cap on how many BrAPI pages we'll traverse when building a dataset. */
21
+ /** Hard cap on how many BrAPI pages we'll traverse when building a dataframe. */
22
22
  export declare const MAX_SPILLOVER_PAGES = 50;
23
23
  export declare const AliasInput: z.ZodOptional<z.ZodString>;
24
24
  export declare const LoadLimitInput: z.ZodOptional<z.ZodNumber>;
@@ -90,27 +90,30 @@ export declare function companionRequestOptions(connection: RegisteredServer, di
90
90
  */
91
91
  export declare function computeDistribution<T>(rows: readonly T[], accessor: (row: T) => string | readonly string[] | undefined | null): Record<string, number>;
92
92
  /**
93
- * Render the standardized header line for `find_*` tools. When a dataset
94
- * spillover is present, surfaces the dataset row count alongside the
93
+ * Render the standardized header line for `find_*` tools. When a dataframe
94
+ * spillover is present, surfaces the dataframe row count alongside the
95
95
  * in-context count and the upstream total — `{returned} of {total}` alone
96
96
  * hides the middle number and confuses readers when filters miss server-
97
- * side and the dataset row count diverges from both.
97
+ * side and the dataframe row count diverges from both.
98
98
  */
99
99
  export declare function renderFindHeader(opts: {
100
100
  noun: string;
101
101
  alias: string;
102
102
  returnedCount: number;
103
103
  totalCount: number;
104
- dataset?: {
104
+ dataframe?: {
105
105
  rowCount: number;
106
106
  expiresAt?: string;
107
107
  } | undefined;
108
108
  }): string;
109
109
  /**
110
- * Render the applied-filters block, optionally translating server-side
111
- * keys to the user-facing parameter names declared by the tool. Server
112
- * keys without a user-facing alias (e.g. anything from `extraFilters`) are
113
- * rendered as-is.
110
+ * Render the filters-sent-to-server block, optionally translating
111
+ * server-side keys to the user-facing parameter names declared by the
112
+ * tool. Server keys without a user-facing alias (e.g. anything from
113
+ * `extraFilters`) are rendered as-is. The label deliberately says "sent
114
+ * to server" rather than "applied" — this is the wire-shape payload, not
115
+ * a verified honor list. Drift between requested and honored values
116
+ * surfaces in the warnings produced by `checkFilterMatchRates`.
114
117
  */
115
118
  export declare function renderAppliedFilters(filters: Record<string, unknown>, serverToUser?: Record<string, string>): string;
116
119
  /** Cheap sanity-render for a distributions block in markdown. */
@@ -127,12 +130,13 @@ export interface LoadedRows<T> {
127
130
  /**
128
131
  * Pull rows up to `loadLimit` on a single page. If the server reports more
129
132
  * rows than the limit, leave the rest behind — callers decide whether to
130
- * spill via `spillToDataset`.
133
+ * spill via `spillToCanvas`.
131
134
  */
132
135
  export declare function loadInitialPage<T>(client: BrapiClient, connection: RegisteredServer, path: string, filters: Record<string, unknown>, loadLimit: number, ctx: Context): Promise<LoadedRows<T>>;
133
136
  /** Pull the first page for either a GET list endpoint or POST /search route. */
134
137
  export declare function loadInitialFindPage<T>(client: BrapiClient, connection: RegisteredServer, route: FindRoute, loadLimit: number, ctx: Context): Promise<LoadedRows<T>>;
135
138
  export interface SpillInput<T> {
139
+ bridge: CanvasBridge;
136
140
  client: BrapiClient;
137
141
  connection: RegisteredServer;
138
142
  ctx: Context;
@@ -147,8 +151,8 @@ export interface SpillInput<T> {
147
151
  route?: FindRoute;
148
152
  /**
149
153
  * Optional client-side predicate applied to every row (first-page + spilled)
150
- * before persistence. When present, only rows that pass are persisted to
151
- * DatasetStore and returned in `fullRows`. The unfiltered upstream total is
154
+ * before persistence. When present, only rows that pass are registered on
155
+ * the canvas and returned in `fullRows`. The unfiltered upstream total is
152
156
  * preserved separately on the LoadedRows envelope so distributions and
153
157
  * headers can still report the true upstream size.
154
158
  */
@@ -157,54 +161,53 @@ export interface SpillInput<T> {
157
161
  * Optional client-side transform applied to every row (first-page + spilled)
158
162
  * before any predicate filter runs. Used to normalize sparse / duplicated
159
163
  * upstream payloads (e.g. dedup'ing CassavaBase's 11×-repeated synonym
160
- * arrays) so the in-context view, the persisted dataset, and the canvas
161
- * dataframe all see the same cleaned shape. Runs before `rowFilter`.
164
+ * arrays) so the in-context view and the canvas dataframe see the same
165
+ * cleaned shape. Runs before `rowFilter`.
162
166
  */
163
167
  rowMapper?: (row: T) => T;
164
168
  source: string;
165
- store: DatasetStore;
166
169
  /** Total reported by the server on the first page. */
167
170
  totalCount: number;
168
171
  }
169
172
  export interface SpillResult<T> {
170
- dataset: DatasetMetadata;
171
- /** Rows that were persisted (post-filter when `rowFilter` was supplied). */
173
+ dataframe: RegisterDataframeResult;
174
+ /** Rows that were registered (post-filter when `rowFilter` was supplied). */
172
175
  fullRows: T[];
173
176
  pagesFetched: number;
174
177
  }
175
178
  /**
176
- * Shape of the dataset handle returned inline by `find_*` tools. Drops the
177
- * provenance fields (source/baseUrl/query) since those are internal and
178
- * available via `brapi_manage_dataset summary`.
179
+ * Shape of the dataframe handle returned inline by `find_*` tools. The
180
+ * dataframe is the canvas table holding every row beyond `loadLimit`; query
181
+ * it with `brapi_dataframe_query` for SQL access or describe it with
182
+ * `brapi_dataframe_describe` for schema + provenance.
179
183
  */
180
- export declare const DatasetHandleSchema: z.ZodObject<{
181
- datasetId: z.ZodString;
184
+ export declare const DataframeHandleSchema: z.ZodObject<{
185
+ tableName: z.ZodString;
182
186
  rowCount: z.ZodNumber;
183
- sizeBytes: z.ZodNumber;
184
187
  columns: z.ZodArray<z.ZodString>;
185
188
  createdAt: z.ZodString;
186
189
  expiresAt: z.ZodString;
187
190
  truncated: z.ZodOptional<z.ZodBoolean>;
188
191
  maxRows: z.ZodOptional<z.ZodNumber>;
189
- dataframe: z.ZodOptional<z.ZodString>;
190
192
  }, z.core.$strip>;
191
- export type DatasetHandle = z.infer<typeof DatasetHandleSchema>;
193
+ export type DataframeHandle = z.infer<typeof DataframeHandleSchema>;
192
194
  /**
193
- * Render a DatasetHandle as bullet lines, matching the existing find_* tool
195
+ * Render a DataframeHandle as bullet lines, matching the existing find_* tool
194
196
  * format. Centralized so the truncated/maxRows fields surface consistently.
195
197
  * `expiresAt` is paired with a human-readable `expires in Xh / Xd` so the
196
198
  * agent doesn't have to subtract dates to know when the handle goes stale.
197
199
  */
198
- export declare function renderDatasetHandle(handle: DatasetHandle): string[];
200
+ export declare function renderDataframeHandle(handle: DataframeHandle): string[];
199
201
  /**
200
202
  * Render an absolute `expiresAt` timestamp as a relative human label
201
203
  * (`expires in 24h`, `expires in 30m`, `expired 5m ago`). Coarsens to the
202
204
  * most useful unit so the value reads at a glance.
203
205
  */
204
206
  export declare function formatExpiresIn(expiresAt: string, now?: Date): string;
205
- /** Project a `DatasetMetadata` to the in-context handle shape. */
206
- export declare function toDatasetHandle(metadata: DatasetMetadata): DatasetHandle;
207
+ /** Project a `RegisterDataframeResult` to the inline handle shape. */
208
+ export declare function toDataframeHandle(result: RegisterDataframeResult): DataframeHandle;
207
209
  export interface MaybeSpillInput<T> {
210
+ bridge: CanvasBridge;
208
211
  client: BrapiClient;
209
212
  connection: RegisteredServer;
210
213
  ctx: Context;
@@ -215,7 +218,7 @@ export interface MaybeSpillInput<T> {
215
218
  route?: FindRoute;
216
219
  /**
217
220
  * Optional client-side predicate applied to every row before persistence.
218
- * Forwarded to `spillToDataset`. When present and no spillover happens, the
221
+ * Forwarded to `spillToCanvas`. When present and no spillover happens, the
219
222
  * first-page rows are also filtered before being returned.
220
223
  */
221
224
  rowFilter?: (row: T) => boolean;
@@ -227,38 +230,49 @@ export interface MaybeSpillInput<T> {
227
230
  source: string;
228
231
  /**
229
232
  * Optional request overrides for spillover page pulls. Useful when a tool
230
- * wants dataset persistence to be best-effort under a tighter latency
231
- * budget than the first page.
233
+ * wants dataframe materialization to run under a tighter latency budget
234
+ * than the first page.
232
235
  */
233
236
  spillRequestOptions?: BrapiRequestOptions;
234
- store: DatasetStore;
235
237
  /** Optional warning sink. When supplied, spillover failures degrade to rows-only output. */
236
238
  warnings?: string[];
237
239
  }
238
240
  export interface MaybeSpillResult<T> {
239
- dataset?: DatasetHandle;
241
+ dataframe?: DataframeHandle;
240
242
  /** Row set after `rowFilter` (when supplied), spilled or first-page only. */
241
243
  fullRows: T[];
242
244
  }
243
245
  /**
244
- * Wrap `spillToDataset` with the "only spill when hasMore and totalCount >
246
+ * Wrap `spillToCanvas` with the "only spill when hasMore and totalCount >
245
247
  * loadLimit" guard that every `find_*` tool replicates. When no spillover is
246
- * needed, returns the first-page rows untouched. When it is, persists the
247
- * union to DatasetStore and returns both the full set and the handle.
248
+ * needed, returns the first-page rows untouched. When it is, materializes
249
+ * the union as a canvas dataframe and returns both the full set and the
250
+ * handle.
248
251
  */
249
252
  export declare function maybeSpill<T extends Record<string, unknown>>(input: MaybeSpillInput<T>): Promise<MaybeSpillResult<T>>;
250
253
  /**
251
- * Pull every remaining page up to MAX_SPILLOVER_* caps, then persist the
252
- * union to DatasetStore. Returns the dataset metadata plus the full row set
253
- * (so callers can compute honest distributions from the whole result).
254
+ * Pull every remaining page up to MAX_SPILLOVER_* caps, then materialize the
255
+ * union as a canvas dataframe. Returns the dataframe metadata plus the full
256
+ * row set (so callers can compute honest distributions from the whole result).
254
257
  */
255
- export declare function spillToDataset<T extends Record<string, unknown>>(input: SpillInput<T>): Promise<SpillResult<T>>;
258
+ export declare function spillToCanvas<T extends Record<string, unknown>>(input: SpillInput<T>): Promise<SpillResult<T>>;
256
259
  /** BrAPI list endpoints return `{data: T[], ...}`. Some omit the wrapper. */
257
260
  export interface BrapiListResult<T> {
258
261
  data?: T[];
259
262
  [key: string]: unknown;
260
263
  }
261
264
  export declare function extractRows<T>(result: BrapiListResult<T> | T[]): T[];
265
+ /**
266
+ * Extract a homogeneous record-row set from a raw BrAPI envelope `result`.
267
+ * Returns the array when `result` is itself a list of objects, or when
268
+ * `result.data` is — covering both bare-array and BrAPI-list-envelope shapes.
269
+ * Returns `null` for non-list shapes (single object, scalar, primitive
270
+ * arrays) so callers — notably `raw_get` / `raw_search` — can skip spillover
271
+ * and pass the upstream payload through unchanged. Empty arrays are list-
272
+ * shaped but carry no rows; the caller uses `length === 0` to decide whether
273
+ * to register a dataframe.
274
+ */
275
+ export declare function extractListRows<T extends Record<string, unknown>>(result: unknown): T[] | null;
262
276
  /** Return the input as a non-empty string, or undefined. Used in distribution accessors. */
263
277
  export declare function asString(value: unknown): string | undefined;
264
278
  /**
@@ -350,6 +364,23 @@ export declare function checkFilterMatchRates(warnings: string[], fullRowCount:
350
364
  export declare function fkMatchCheck(paramName: string, requestedValues: readonly (string | number | boolean)[] | undefined, rows: readonly Record<string, unknown>[], fieldName: string, options?: {
351
365
  requireEveryRowMatch?: boolean;
352
366
  }): FilterMatchCheck;
367
+ /**
368
+ * Generate `FilterMatchCheck` entries for every key in `extraFilters` that
369
+ * can be cross-referenced against a top-level column on the returned rows.
370
+ * Catches the wrong-results class of bug where the agent passes a filter the
371
+ * upstream silently ignores (e.g. `locationName` on `/studies` — not a valid
372
+ * filter key, server returns the unfiltered baseline). The named-param
373
+ * verification path treats requested values as authoritative; this helper
374
+ * extends that same check across `extraFilters` so the post-hoc validator
375
+ * runs uniformly regardless of how the filter entered the call.
376
+ *
377
+ * Column inference is intentionally narrow — exact match, then a trailing-`s`
378
+ * strip (`locationDbIds → locationDbId`, `locationNames → locationName`).
379
+ * Keys that don't resolve to a column produce a single grouped warning
380
+ * ("could not verify these extraFilters keys: …") so the agent knows the
381
+ * trace can't speak to whether they were honored.
382
+ */
383
+ export declare function buildExtraFilterChecks(extraFilters: Record<string, unknown> | undefined, rows: readonly Record<string, unknown>[], warnings: string[]): FilterMatchCheck[];
353
384
  export interface RefinementHintOptions {
354
385
  /**
355
386
  * Filter parameter names available on the calling tool. Used to suggest
@@ -1 +1 @@
1
- {"version":3,"file":"find-helpers.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/shared/find-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-helpers.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/shared/find-helpers.ts"],"names":[],"mappings":"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"}