---
summary: "tool contract fixes: upstream_timeout/unavailable recovery hints, tightened invalid-params hints, direction-inversion note, consumer-phrasing scrub; remove unused tsx devDependency"
breaking: false
security: false
---

# 0.6.17 — 2026-06-01

## Added

- **`upstream_timeout` and `upstream_unavailable` error contracts** declared on all four tool definitions (`openalex_search_entities`, `openalex_analyze_trends`, `openalex_get_citation_graph`, `openalex_resolve_name`) — recovery hints now surface on the wire for HTTP 408/504 (timeout) and HTTP 503 (unavailable) responses. ([#35](https://github.com/cyanheads/openalex-mcp-server/issues/35))

## Changed

- **`openalex_search_entities` / `openalex_analyze_trends` / `openalex_get_citation_graph`** `upstream_invalid_params` recovery hints tightened: no longer direct callers to read a valid-fields list that may be absent due to upstream body truncation; hints now acknowledge the truncated case and give an actionable path (`select`: retry without the field to see curated defaults). ([#26](https://github.com/cyanheads/openalex-mcp-server/issues/26))
- **`openalex_get_citation_graph`** tool description now includes a note that `direction` follows OpenAlex's filter convention (`cites` = works that cite the seed; `cited_by` = works the seed cites), which inverts the common English reading. ([#28](https://github.com/cyanheads/openalex-mcp-server/issues/28))
- **`meta.echo` descriptions** on `openalex_search_entities`, `openalex_analyze_trends`, and `openalex_get_citation_graph` rephrased to remove consumer-aware language (`callers`); `openalex_analyze_trends` `per_page` description drops `token spend` framing. ([#28](https://github.com/cyanheads/openalex-mcp-server/issues/28))
- **`select` field description** on `openalex_search_entities` corrects the claim that invalid names produce "an error listing the valid ones" — the list may be truncated.

## Removed

- **`tsx`** devDependency removed — all scripts run via Bun; `tsx` was unused.
