addedInput schema / properties / find
Added value: +{
+ "description": "A passage to locate instead of paging to it: the response starts at the first occurrence at or after offset and adds match, and an absent passage fails with passage_not_found rather than returning other text. Matching ignores letter case and whitespace around find. Any run of spaces, tabs, or line breaks matches any other such run, so a hard-wrapped line still matches. Straight and curly quotes match each other. Accents count: \"cafe\" does not match \"café\". Everything else is literal, with no wildcards or patterns, so an italic word stored as _word_ needs its underscores. A blank find is an ordinary read.",
+ "type": "string"
+}
changedInput schema / properties / limit / description
Previous value: -"Requested maximum characters. Default 20,000 (~4–5 pages of prose); requests above 50,000 are capped locally at 50,000. Paragraph-boundary trimming may return less than the applied limit — use length for continuation."New value: +"Requested maximum characters. Default 20,000 (~4–5 pages of prose); requests above 50,000 are capped locally at 50,000. Paragraph-boundary trimming may return less than the applied limit — use length for continuation. Trimming never cuts before a find match ends."
changedInput schema / properties / offset / description
Previous value: -"Character offset into the stripped literary text at which to start reading. 0 returns the beginning of the work. To read subsequent chunks, use offset = prior_offset + prior_length (the length field from the previous response — NOT offset + limit, because the actual returned length may be slightly less than limit due to paragraph-boundary trimming)."New value: +"Character offset into the stripped literary text at which to start reading. 0 returns the beginning of the work. To read subsequent chunks, use offset = prior_offset + prior_length (the length field from the previous response — NOT offset + limit, because the actual returned length may be slightly less than limit due to paragraph-boundary trimming). With find, the search starts here and the returned chunk starts at the match."
changedOutput schema / properties / error / properties / data / properties / reason / description
Previous value: -"Machine-readable failure mode. Declared by this tool: `text_file_not_found`: The catalog entry exists but its mirror text file returned HTTP 404. `text_fetch_rejected`: The mirror permanently rejected this text request. `invalid_text_response`: The mirror returned an empty document, HTML on a plain-text path, or recognizable server failure document. `not_found`: No book exists with the given ID. `audio_book`: The book is an audio recording (media_type \"Sound\"), not a text book — no literary plain text is available. `no_text_format`: The book has no UTF-8 plain-text or HTML edition available to read (for example an older ASCII-only entry). `offset_out_of_range`: The offset is greater than or equal to totalChars (past the end of the book). `text_fetch_failed`: The Gutenberg mirror had a transient failure or did not respond within the request budget. `catalog_unavailable`: The catalog lookup that precedes reading a book did not answer within the time this server allows. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `text_file_not_found`: The catalog entry exists but its mirror text file returned HTTP 404. `text_fetch_rejected`: The mirror permanently rejected this text request. `invalid_text_response`: The mirror returned an empty document, HTML on a plain-text path, or recognizable server failure document. `not_found`: No book exists with the given ID. `audio_book`: The book is an audio recording (media_type \"Sound\"), not a text book — no literary plain text is available. `no_text_format`: The book has no UTF-8 plain-text or HTML edition available to read (for example an older ASCII-only entry). `offset_out_of_range`: The offset is greater than or equal to totalChars (past the end of the book). `passage_not_found`: find has no occurrence at or after offset. `text_fetch_failed`: The Gutenberg mirror had a transient failure or did not respond within the request budget. `catalog_unavailable`: The catalog lookup that precedes reading a book did not answer within the time this server allows. Other values are possible when a failure originates below the handler."
changedOutput schema / properties / error / properties / data / properties / reason / examples
Previous value: -[
- "text_file_not_found",
- "text_fetch_rejected",
- "invalid_text_response",
- "not_found",
- "audio_book",
- "no_text_format",
- "offset_out_of_range",
- "text_fetch_failed",
- "catalog_unavailable"
-]New value: +[
+ "text_file_not_found",
+ "text_fetch_rejected",
+ "invalid_text_response",
+ "not_found",
+ "audio_book",
+ "no_text_format",
+ "offset_out_of_range",
+ "passage_not_found",
+ "text_fetch_failed",
+ "catalog_unavailable"
+]
changedOutput schema / properties / hasMore / description
Previous value: -"True if there is more text after this chunk. When true, call again with offset = offset + length."New value: +"True if there is more text after this chunk. When true, call again with offset = offset + length and no find."
addedOutput schema / properties / match
Added value: +{
+ "additionalProperties": false,
+ "description": "Where find matched. Absent on a read without find.",
+ "properties": {
+ "laterMatches": {
+ "description": "Non-overlapping occurrences after this one. While above 0, repeat the same find with offset = match.offset + match.length for the next.",
+ "type": "number"
+ },
+ "length": {
+ "description": "Characters the match spans in the stored text. Can differ from the length of find, since a whitespace run matches a run of any length.",
+ "type": "number"
+ },
+ "offset": {
+ "description": "Start of the match, in the same coordinates as offset and totalChars.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "offset",
+ "length",
+ "laterMatches"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / offset / description
Previous value: -"Character offset where this chunk begins."New value: +"Character offset where this chunk begins: the match start when find matched."