28cdd72815
Exa's MCP endpoint answers `text/event-stream` without a charset, so `requests` decoded `.text` as ISO-8859-1: every non-ASCII character came back as mojibake, and for CJK results the UTF-8 continuation byte 0x85 became U+0085, which `str.splitlines()` treats as a line break — the `data:` JSON line was cut in two and the perfectly valid result surfaced as "Unrecognized MCP response shape", after which the ring fell through to keyless Firecrawl (403). Decode the bytes as UTF-8 (JSON-RPC and SSE are UTF-8 by spec) and split SSE frames on newlines only. A parsed envelope that really carries no text is now reported as "no text content" instead of an unrecognized shape.