def search( query: str, source: str = None, content_types: list[str] = None, # ["text", "table", "image", "code"] n_chunks: int = 10 ) -> dict: """ Search documents and get back content in the right format for reasoning. Tables, images, and structured content are automatically formatted for optimal analysis. Simple tables return as Markdown for easy data work. Complex tables with merged cells return as HTML so you can understand the relationships. Images include both the visual content and searchable OCR text. Args: query: What you're looking for in natural language source: Limit to specific document (optional) content_types: Filter by content type like ["table"] or ["image"] (optional) n_chunks: How many chunks to return (default: 10) Returns: Content formatted appropriately for each type (Markdown, HTML, images with OCR) """ pass def load_pages(source: str, pages: list[int]) -> dict: """ Get complete pages when you need full context instead of fragments. Use this when search shows multiple chunks from the same document - usually better to read full pages than piece together fragments. Args: source: Document path (like "reports/Q3-2024.pdf") pages: Which pages to load (like [3, 7, 12]) Returns: Complete page content with all formatting preserved """ pass