---
summary: "A not-found DOI or prefix names the registration agency that holds it, page sizes above the per-call cap are clamped with a notice instead of rejected, and reference, search-result, and journal records carry more fields."
breaking: false
security: false
---

# 0.4.3 — 2026-10-22

## Added

- **Update links on `crossref_search_works` rows** ([#79](https://github.com/cyanheads/crossref-mcp-server/issues/79)) — `updatedBy` and `updateTo` in the entry shape and rendered line `crossref_get_work` uses; `fields` accepts `updated-by` and `update-to`.
- **More reference fields on `crossref_get_references`** ([#78](https://github.com/cyanheads/crossref-mcp-server/issues/78)) — `volumeTitle` (the title of a cited book, shown in place of `[N]` when there is no article title), `seriesTitle`, `issue`, `edition`, and `doiAssertedBy` (`publisher` or `crossref`).
- **ISSN types, DOI counts, coverage, and DOIs by year on `crossref_search_journals`** ([#81](https://github.com/cyanheads/crossref-mcp-server/issues/81)) — `issnTypes`, `currentDois`, `backfileDois`, and `coverage` (the per-category breakdown `crossref_get_member` returns) on every record, and `doisByYear` on an `issn` lookup only.

## Changed

- **`doi_not_found` and `prefix_not_found` name the registration agency** ([#76](https://github.com/cyanheads/crossref-mcp-server/issues/76)) — `crossref_get_work`, `crossref_get_references`, and `crossref_get_prefix` ask `https://doi.org/doiRA` which agency holds the identifier, then say it is registered with that agency (`data.registrationAgency`), that Crossref registered it but serves no record, or that no agency registered it. An unreadable answer leaves the message as before. The lookup runs only after a Crossref 404, to `doi.org` regardless of `CROSSREF_BASE_URL`, without the `CROSSREF_MAILTO` User-Agent.
- **A cursor walk with a query term and no `sort` sends `sort=score`** ([#77](https://github.com/cyanheads/crossref-mcp-server/issues/77)) — page one holds the best match instead of registration order, and `order` is not forwarded. Such a walk can repeat or skip a record at a page boundary; `sort: "created"` walks without repeats.
- **`rows`, `authorLimit`, and `limit` above their per-call cap are clamped, not rejected** ([#80](https://github.com/cyanheads/crossref-mcp-server/issues/80)) — 100 for `rows`, 500 for `authorLimit` and `limit`, with a `notice` naming the value requested and the cap. The schema ceilings are now 1000 and 100000; `offset_too_large` and `works_offset_too_large` are evaluated on the clamped `rows`, and their hints, like the notice on a journal or funder page that stops short of an offset ceiling, name the `rows` that still fit.
- **Works count reads ~188M** in the `crossref_search_works` description, the package, plugin, and registry descriptions, and the README.

## Fixed

- **`issn` on `crossref_get_references` entries is filled** ([#78](https://github.com/cyanheads/crossref-mcp-server/issues/78)) — Crossref deposits it as an `https://id.crossref.org/issn/` URI under `ISSN`; the bare ISSN is returned.
- **`crossref_search_journals` no longer advertises ISSN-L as returned** ([#81](https://github.com/cyanheads/crossref-mcp-server/issues/81)) — Crossref journal records carry none; `issnTypes` says which ISSN is print and which electronic.

## Dependencies

- `@cyanheads/mcp-ts-core` `^0.13.14` → `^0.13.15`; `zod` `^4.6.5` → `^4.6.7`.
- Dev: `@types/node` `^26.6.4` → `^26.6.5`, `ignore` `^7.0.12` → `^7.0.13`, `tsc-alias` `^1.9.7` → `^1.9.8`, `vitest` `^5.0.3` → `^5.0.5`.
- Bun 1.4.2 → 1.4.4 (`packageManager`, Docker base images).
