---
summary: "Error-path accuracy fixes, stricter input validation, and malformed-response handling"
breaking: false
security: false
---

# 0.1.6 — 2026-08-06

## Changed

- **`invalid_location` error message** — `openchargemap_find_stations` now names the actual failure: which single coordinate is missing, or that both a center and a boundingbox were supplied, instead of a generic "neither or both" string. (#12)
- **`auth_failed` contract `when` text** — widened to "HTTP 401 or 403" on `find_stations`, `get_station`, and `get_station_comments`, matching `translateFetchError()`'s existing 401+403 classification. (#12)
- **`lookup_reference` `notice` output field** — description narrowed to describe only its live writer (`enrich.truncated()`'s browse-cap guidance); the dead `ctx.enrich.notice()` call before the unreachable `no_match` throw is removed. (#12)

## Fixed

- **`openchargemap_lookup_reference` `query`** — a whitespace-only string (`"   "`, `"\t\n"`) is now rejected at the schema instead of silently falling through to browse mode. (#13)
- **`openchargemap_find_stations` ID filters** (`connectiontypeid`, `operatorid`, `usagetypeid`, `levelid`, `statustypeid`) — an empty array is now rejected instead of silently disabling the filter. (#14)
- **`OpenChargeMapService` malformed `/v3/poi` responses** — invalid JSON, a non-array body, and an array containing an unreadable member now all throw the declared `upstream_unavailable` envelope instead of leaking a raw `SyntaxError`/`TypeError`. The whole response is rejected rather than discarding bad rows, so a partially-corrupt body can't surface as a plausible but incomplete station list. (#15)
