---
summary: "Bound pubchem_search_compounds fast searches with PubChem's MaxRecords instead of pulling the full match set, reporting a totalFoundAtLeast floor when saturated; add offset pagination to pubchem_get_bioactivity. Breaking: outputSchema.required changes on both tools."
breaking: true
security: false
---

# 0.5.0 — 2026-07-28

## Migration

| Tool | `outputSchema.required` before | After |
|:--|:--|:--|
| `pubchem_search_compounds` | `results`, `searchType`, `totalFound` | `totalFound` drops out of `required` (now optional). A caller reading it unconditionally must handle its absence — check the new optional `totalFoundAtLeast` instead, populated when a bounded search (`formula`/`substructure`/`superstructure`/`similarity`) saturated its cap and the exact count is unknowable. `identifier` searches are unbounded and always report an exact `totalFound`. |
| `pubchem_get_bioactivity` | 8 entries | Gains `offset` (9 entries). Additive and always populated on success, so no existing reader breaks — but the advertised schema changes. |

## Added

- **`pubchem_get_bioactivity`** — `offset` input paginates past the first page of filtered assay results, applied after `outcomeFilter`/`targetGeneId`/`targetAccession` and before the `maxResults` slice. Enrichment gains `offset` (now required) and an optional `nextOffset` to pass into the next call; an offset past the end of the filtered set returns an empty page with a notice instead of erroring. ([#33](https://github.com/cyanheads/pubchem-mcp-server/issues/33))

## Changed

- **`pubchem_search_compounds`** — formula, substructure, superstructure, and similarity searches now bound the upstream request with PubChem's `MaxRecords` parameter (`maxResults + 1`) instead of pulling the entire match set; a benzoic-acid substructure query that previously moved a 16.2 MB, 1,000,000-CID upstream payload now moves 316 bytes, cutting latency from 8.7s to 1.1s. `identifier` searches (name/SMILES/InChIKey) are unbounded and unaffected. See Migration for the `totalFound`/`totalFoundAtLeast` output change. ([#41](https://github.com/cyanheads/pubchem-mcp-server/issues/41))
- **`pubchem://compound/{cid}/bioactivity`** resource description now points at the new `offset` input instead of only mentioning `outcomeFilter`/target filtering.
- **`.dockerignore`**, **`vitest.config.ts`**, **`.github/ISSUE_TEMPLATE/bug_report.yml`**, **`.github/ISSUE_TEMPLATE/feature_request.yml`** — realigned to the current mcp-ts-core scaffold: `.agents` added to the Docker ignore list, `vitest.config.ts` adopts Vitest 4 `projects` (an `unit` project today, commented-out `smoke`/`fuzz`/`integration` slots for later), and both issue templates gained secondary-label guidance and dropped the `@cyanheads/` scope from their descriptions.
