* feat: send a pdf that needs ocr to firecrawl parse * fix: reject a malformed parse reply as hosted and honour an empty api key
* feat(pdf): report pages that need ocr * docs: exit code 3 and the error contract after needsocr * docs(python): count the conversion failures after needsocr * feat(pdf): name the pages that need ocr in the message