---
summary: "field-test bug fixes: JATS stripping, null type handling, 404 recovery, filter docs, nextCursor naming"
breaking: false
security: false
---

# 0.1.4 — 2026-05-23

## Changed

- **`crossref_search_works` description** — filter value clarification: all values must be strings; boolean flag keys (`has-abstract`, `has-references`, `has-full-text`) require string `"true"` or `"false"`
- **`crossref_search_works`, `crossref_search_journals`, `crossref_search_funders`** — cursor paging descriptions updated to use `nextCursor` (was `next_cursor`) for consistency with the output schema field name
- **`User-Agent`** — version now read dynamically from `package.json` at service init; no longer hardcoded

## Fixed

- **`crossref_search_works`, `crossref_get_work`, `crossref_search_journals`, `crossref_search_funders`** — `type` field made optional in output schema and handler; Crossref returns `null` or omits `type` on some records, previously caused a crash
- **`crossref_search_works`, `crossref_get_work`** — abstract JATS XML stripped at service layer via `stripJats()`; raw JATS tags (`<jats:p>`, etc.) are no longer forwarded to the LLM
- **`crossref_search_journals`** — `issn_not_found` error contract added with recovery guidance for 404 ISSN lookups
- **`crossref_search_funders`** — `funder_not_found` error contract added with recovery guidance for 404 funder DOI lookups
- **`crossref_get_work`, `crossref_get_references`** — dead `invalid_doi` error contract entries removed (schema-level validation catches these; the contract was unreachable)
- **`tests/tools/get-work.tool.test.ts`** — mock updated to preserve `stripJats` export so the JATS test case passes
