---
summary: "Uppercase ID schemes and PubMed URLs now resolve instead of 404ing, summary_stats leaves (h_index, i10_index, 2yr_mean_citedness) alias into select, and describe_fields ranking no longer hides a nested field's parent."
breaking: false
security: false
---

# 0.7.11 — 2026-09-08

## Changed

- **`normalizeId()` folds a recognized scheme prefix to lower case and adds a PubMed URL branch** (#66) — `PMID:`, `DOI:`, `ORCID:`, `ISSN:`, `ROR:`, `PMCID:` (any case) and bare `https://pubmed.ncbi.nlm.nih.gov/<pmid>` URLs now resolve instead of 404ing, across `openalex_search_entities` (`id`), `openalex_resolve_name` (`query`), and `openalex_get_citation_graph` (`seed_id`). The identifier value itself is never re-cased.
- **`select` aliases `h_index`, `i10_index`, and `2yr_mean_citedness` to `summary_stats`** on `authors`, `sources`, `institutions`, `publishers`, and `funders` (#64) — these leaves live under `summary_stats` upstream and previously 400'd with a field list that named nothing resembling the request.
- **`openalex_describe_fields`'s `query` reorders the full field list instead of truncating it** (#63) — a nested leaf's parent object (e.g. `summary_stats` for `h_index`) is now always reachable, since a lexical ranker can't score a leaf against its parent and previously dropped zero-overlap candidates entirely.
- **`.env.example` activates `MCP_SESSION_MODE=stateless`** and `README.md` documents it in the `## Configuration` table (#65) — matches what the published Docker image already sets; the `src/index.ts` half is blocked on `cyanheads/mcp-ts-core#376`.
- Framework skills synced to the versions shipped with `@cyanheads/mcp-ts-core` 0.12.6 and 0.12.7: `add-tool`, `api-errors`, `api-workers`, `design-mcp-server`, `field-test`, `git-wrapup`.

## Dependencies

Runtime:

- `@cyanheads/mcp-ts-core` `^0.12.5` → `^0.12.7`

Dev:

- `@biomejs/biome` `^2.5.11` → `^2.5.12`
- `@types/node` `^26.4.0` → `^26.4.1`
- `ignore` `^7.0.7` → `^7.0.8`
- `tsc-alias` `^1.9.2` → `^1.9.4`
- `vitest` `^4.1.11` → `^5.0.0`
