Resolves three findings from field-testing pubmed_fetch_articles
against live PubMed data (PMIDs 13054692, 17960126, 36813558).
Fixed (#26)
- format() now renders every field in the output schema in content[],
the only field most LLM clients forward to the model. Previously
dropped: articleDates, author firstName, ORCID, per-author
affiliationIndices, journal ISSN/eIssn, publication month/day,
medlineDate, raw pmcId, grant acronym, and authors beyond the
third (collapsed to "et al."). Authors render as a bulleted list
with firstName lastName, 1-based affiliation markers into a
numbered Affiliations section, and an inline ORCID suffix. Full
publication date rendered (or medlineDate). New Article Dates line
surfaces electronic/received/revised dates. Grants show acronym
alongside ID. Empty-result responses include a hint pointing
callers at pubmed_search_articles.
Changed (#27)
- Actionable PMID validation error message applied across every tool
accepting PMIDs (fetch_articles, fetch_fulltext, find_related,
format_citations). The new message names the domain concept, shows
an example, and lists common pitfalls (whitespace, commas,
non-digit characters).
Changed (#28)
- parseFullArticle omits empty arrays for absent optional fields
(publicationTypes, keywords, articleDates, meshTerms, grantList)
instead of returning []. Output schema already marked them
optional; runtime now matches.
Quality
- 20+ new tests covering format content completeness, validation
message quality, and parser empty-array omission. 387 tests pass;
bun run devcheck clean. Field-tested end-to-end over HTTP.