---
summary: "GDELT requests get a configurable per-request deadline bounding the whole call, the pacer now spaces from the previous response's completion instead of its start, and invalid TV stations and calendar-invalid or reversed date ranges are rejected with a proper contract instead of an opaque error."
breaking: false
security: false
---

# 0.4.3 — 2026-09-22

## Added

- **`GDELT_REQUEST_TIMEOUT_MS`** (default `60000`) sets the per-request deadline; the whole call, retries included, is bounded at twice this value. Declared in `.env.example`, the README env table, `docs/design.md`, both `server.json` package entries, `manifest.json`, and both plugin manifests.

## Fixed

- **Exhausted GDELT timeouts now classify as `gdelt_unavailable`** — a `FetchTimeout` after the last retry attempt and a `retry_deadline_exceeded` deadline expiry both surface the declared `ServiceUnavailable` code, `retryable: true`, and the contract's recovery hint instead of an undeclared `Timeout`. ([#42](https://github.com/cyanheads/gdelt-mcp-server/issues/42), [#39](https://github.com/cyanheads/gdelt-mcp-server/issues/39))
- **The GDELT pacer now spaces requests from the previous response's completion, not its start** — `createPacer` only spaces consecutive starts, so a response slower than the configured gap left ~0ms before the next request, and GDELT's limiter counts from completion. The queue wait budget decouples from the 60s cooldown ceiling and rises to 90s, and a shed request reports the wait it actually measured when the queue projection has nothing to say. ([#44](https://github.com/cyanheads/gdelt-mcp-server/issues/44))
- **An `Invalid Station: <id>` rejection (HTTP 200) now classifies as `invalid_query`** with a hint pointing at `gdelt_list_tv_stations`, instead of an opaque `SerializationError` — the rejection-sentence heuristic no longer requires terminal punctuation for short single-line bodies. ([#43](https://github.com/cyanheads/gdelt-mcp-server/issues/43))
- **Calendar-invalid and reversed date ranges are rejected before the upstream request**, across all seven date-taking tools — `20241301000000` (month 13) or `startDatetime >= endDatetime` previously reached GDELT, which normalized them and answered for a different window. ([#36](https://github.com/cyanheads/gdelt-mcp-server/issues/36))

## Dependencies

- `@types/node` `^26.6.1` → `^26.6.2`
