---
summary: "Sources gutenberg_get_text exclusively from the PG-sanctioned mirror gutenberg.pglaf.org instead of the ToS-restricted www.gutenberg.org, drops the us-ascii plain-text fallback, and aligns has_plain_text so it no longer advertises those books as readable."
breaking: false
security: false
---

# 0.1.6 — 2026-07-11

## Changed

- **`GUTENBERG_TEXT_BASE_URL` default** — `https://www.gutenberg.org` → `https://gutenberg.pglaf.org`, a PG-sanctioned mirror that permits automated access ([MIRRORS.ALL](https://www.gutenberg.org/MIRRORS.ALL)).
- **README / `docs/design.md`** — updated for the mirror-sourced UTF-8/HTML fallback chain; the `us-ascii` fallback and HTTPS→HTTP redirect workaround notes are removed.

## Fixed

- **`gutenberg_get_text` sources exclusively from the PG-sanctioned mirror** — `GutenbergTextService` now builds fetch URLs from the book ID against `GUTENBERG_TEXT_BASE_URL`, never from Gutendex's raw format URLs, which point at the ToS-restricted `www.gutenberg.org`. The `toHttps` SSRF-guard function is replaced by an ID-derived `rewriteToHttpsHtmlCachePath` for the HTML fallback. ([#1](https://github.com/cyanheads/gutenberg-mcp-server/issues/1))
- **`has_plain_text` no longer advertises unreadable us-ascii-only books** — `hasPlainText()` (now exported from `GutendexService`) requires a UTF-8 `text/plain` format; us-ascii-only books now report `has_plain_text: false` instead of promising a `gutenberg_get_text` call that always failed. ([#7](https://github.com/cyanheads/gutenberg-mcp-server/issues/7))
- **`resolveTextUrl` returns `null` for us-ascii-only books** — `GutenbergTextService.fetchAndCacheText` now throws `notFound` (`no_text_format`) instead of `serviceUnavailable`, and the `gutenberg_get_text` tool's own format guard matches, so these books fail fast with a full recovery hint.
