---
summary: "county-scoped tract/block-group queries, geography_type enum validation, dataset_not_found error contract"
breaking: false
security: false
---

# 0.1.9 — 2026-06-04

## Added

- **`census_query_data`**: new `county_fips` input field (3-digit county FIPS) for scoping tract and block-group queries to a specific county alongside `parent_fips` (state) — fixes [#11](https://github.com/cyanheads/census-mcp-server/issues/11).
- **`census_compare_geographies`**: new `within_county` input field for county-scoped tract comparisons — fixes [#11](https://github.com/cyanheads/census-mcp-server/issues/11).
- **`CensusApiService.queryData`**: accepts `countyFips` param; builds compound `in=state:XX%20county:YYY` clause when both `parentFips` and `countyFips` are supplied.
- **`census_query_data`**: `dataset_not_found` error contract entry; unknown-dataset guard now uses `ctx.fail('dataset_not_found', …)` for a consistent `data.reason` — fixes [#12](https://github.com/cyanheads/census-mcp-server/issues/12).

## Changed

- **`census_resolve_geography` `geography_type`**: changed from `z.string()` to `z.enum(['state', 'county', 'place', 'tract'])` — invalid and whitespace-padded values now rejected at the schema boundary; JSON Schema serializes as an `enum` array surfaced to clients — fixes [#14](https://github.com/cyanheads/census-mcp-server/issues/14).
- **`census_resolve_geography` `format()`**: county FIPS line now annotates `— also use as county_fips in census_query_data` when `geography_type` is `tract`.
- **`census_query_data` `parent_fips`** and **`census_compare_geographies` `within`** descriptions updated to clarify state-FIPS semantics; `parent_required` error recovery message extended to mention `county_fips` requirement for tract/block-group levels.
