Added
- Added Gemini API PDF-to-Markdown conversion before local
unpdffallback, with inline PDF upload, page-marker validation, configurablepdf.maxSizeMB, and streamed size enforcement. Thanks José Antonio Galiano Sandoval (@jagaliano) for PR #180. - Added Searchinfinity (Byteplus Searchinfinity / 豆包搜索 Global edition) as a search provider with
searchinfinityApiKey/SEARCHINFINITY_API_KEYcredentials, native domain and recency filters, model-generated result summaries, HTTP-semantics mapping for business error codes, provider-array/all-provider routing, and curator selection. Thanks@cyzlmhfor PR #186. - Added Querit as a search and hosted content provider with
queritApiKey/QUERIT_API_KEYcredentials, native domain and recency filters, optional inline Contents retrieval, provider-array/all-provider routing, curator selection, and afetch_contentfallback. Thanks@MCapricornsfor PR #185.
Changed
- The 5MB
fetch_contentresponse size limit is now enforced while streaming the decoded body, not just via theContent-Lengthheader. Chunked or compressed pages whose decoded content exceeds 5MB now fail withResponse too large (5MB)instead of being buffered unbounded and parsed. Shared config parsing for SSRF and fetch-content domain policy loaders also removes duplicate reads on the fetch hot path.
Fixed
- Fixed filtered zero-config Exa search silently losing its request options: the default keyless MCP tool (
web_search_exa) only acceptsqueryandnumResults, sotype,livecrawl, andcontextMaxCharacterswere dropped server-side andincludeContentnever returned page text. Filtered or content-carrying keyless searches now useweb_search_advanced_exa— served by the same keyless free tier — which appliesincludeDomains/excludeDomains,startPublishedDate, highlights, and text limits as real parameters instead ofsite:/ "past week" strings appended to the semantic query. Plain searches stay onweb_search_exa, and the advanced path falls back to it if it is unavailable. - Stopped requesting citation text on keyed Exa
/answercalls, which was fetched and then discarded, and stopped requesting page text on keyed/searchcalls that do not ask for content. - Exa MCP rate-limit responses (429) now explain that adding
exaApiKeyto~/.pi/web-search.jsonremoves the free-tier limit, instead of surfacing a bare status code. Thanks@keskufor PR #187.