---
summary: "Fix dataframe describe/query failing on an ambiguous table_name probe, and stop get_study from reporting server-wide companion counts as study-scoped"
breaking: false
security: false
---

# 0.7.5 — 2026-06-18

## Fixed

- **`brapi_dataframe_query` / `brapi_dataframe_describe`** — both failed before any user SQL ran, raising `Binder Error: Ambiguous reference to column name "table_name"`. `CanvasBridge.describe()` no longer forwards a `tableName` to the framework's describe-by-name path (which pushes an unqualified `table_name` predicate into a catalog query that LEFT JOINs `information_schema.tables` with `duckdb_tables()`, both exposing `table_name`); it lists every table via the unambiguous `table_schema`-only query and narrows by name in JS. `dataframe_query`'s internal type-probe describes its freshly-registered result by name, so this also unblocks plain queries like `SELECT 1`. Server-side reroute pending the upstream root-cause fix in [cyanheads/mcp-ts-core#235](https://github.com/cyanheads/mcp-ts-core/issues/235). ([#39](https://github.com/cyanheads/brapi-mcp-server/issues/39))
- **`brapi_get_study`** — `observationCount` and `variableCount` reported server-wide totals when the dialect dropped the `studyDbIds` filter (`/observations`) or the server accepted but ignored it (`/variables`), silently collapsing to the global count while presented as per-study signals. Both are now omitted with a warning when the upstream can't scope the query — never reported as the server-wide total. `observationUnitCount` was already correctly scoped and is unchanged. The `brapi://study/{studyDbId}` resource delegates to the same handler and inherits the fix. ([#40](https://github.com/cyanheads/brapi-mcp-server/issues/40))

## Changed

- **`fetchValidatedScopedCount`** — new shared helper in `src/mcp-server/tools/shared/find-helpers.ts` consolidating the validated-count pattern (guard 1: dialect drops the scope filter; guard 2: scoped probe equals an unfiltered baseline, so the server ignored it). `brapi_get_germplasm` now uses it in place of its private `fetchValidatedStudyCount`, and `fetchTotalCount` moved to the shared module. `observationCount` / `variableCount` output `.describe()` strings note they are omitted (not zero) when the upstream can't scope the count.

## Dependencies

- **`@biomejs/biome`** `^2.4.16` → `^2.5.0`
- **`vitest`** `^4.1.8` → `^4.1.9`
- **`@duckdb/node-api`** held at `^1.5.3-r.3` (its `1.5.4-r.1` prerelease falls outside the caret) and added to the `devcheck` outdated allowlist; the bump is deferred to a maintenance pass.
