{"tools":[{"name":"md","title":null,"description":"Convert a web page into Markdown format.\n\nSupports multiple extraction modes:\n- fit (default): Readability-based extraction for clean content\n- raw: Direct DOM to Markdown conversion\n- bm25: BM25 relevance ranking with optional query\n- llm: LLM-based summarization with optional query\n\nUse this tool when you need clean, readable text from web pages.","inputSchema":{"$defs":{"FilterType":{"enum":["raw","fit","bm25","llm"],"title":"FilterType","type":"string"}},"description":"Request body for the /md endpoint.","properties":{"url":{"description":"Absolute http/https URL to fetch","title":"Url","type":"string"},"f":{"$ref":"#/$defs/FilterType","default":"fit","description":"Content‑filter strategy: fit, raw, bm25, or llm"},"q":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Query string used by BM25/LLM filters","title":"Q"},"c":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"0","description":"Cache‑bust / revision counter","title":"C"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"LLM provider override (e.g., 'anthropic/claude-3-opus')","title":"Provider"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"LLM temperature override (0.0-2.0)","title":"Temperature"}},"required":["url"],"title":"MarkdownRequest","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"html","title":null,"description":"Crawls the URL, preprocesses the raw HTML for schema extraction, and returns the processed HTML.\nUse when you need sanitized HTML structures for building schemas or further processing.","inputSchema":{"properties":{"url":{"title":"Url","type":"string"}},"required":["url"],"title":"HTMLRequest","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"screenshot","title":null,"description":"Capture a full-page PNG screenshot of the specified URL, waiting an optional delay before capture.\nUse when you need an image snapshot of the rendered page. The image is also written to the\nsandboxed artifact store; the response includes an `artifact_id` and a `url` to fetch it.","inputSchema":{"properties":{"url":{"title":"Url","type":"string"},"screenshot_wait_for":{"anyOf":[{"type":"number"},{"type":"null"}],"default":2,"title":"Screenshot Wait For"},"wait_for_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"title":"Wait For Images"}},"required":["url"],"title":"ScreenshotRequest","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"pdf","title":null,"description":"Generate a PDF document of the specified URL.\nUse when you need a printable or archivable snapshot of the page. The PDF is also written to the\nsandboxed artifact store; the response includes an `artifact_id` and a `url` to fetch it.","inputSchema":{"properties":{"url":{"title":"Url","type":"string"}},"required":["url"],"title":"PDFRequest","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"execute_js","title":null,"description":"Execute a sequence of JavaScript snippets on the specified URL.\nReturn the full CrawlResult JSON (first result).\nUse this when you need to interact with dynamic pages using JS.\nREMEMBER: Scripts accept a list of separated JS snippets to execute and execute them in order.\nIMPORTANT: Each script should be an expression that returns a value. It can be an IIFE or an async function. You can think of it as such.\n    Your script will replace '{script}' and execute in the browser context. So provide either an IIFE or a sync/async function that returns a value.\nReturn Format:\n    - The return result is an instance of CrawlResult, so you have access to markdown, links, and other stuff. If this is enough, you don't need to call again for other endpoints.\n\n    ```python\n    class CrawlResult(BaseModel):\n        url: str\n        html: str\n        success: bool\n        cleaned_html: Optional[str] = None\n        media: Dict[str, List[Dict]] = {}\n        links: Dict[str, List[Dict]] = {}\n        downloaded_files: Optional[List[str]] = None\n        js_execution_result: Optional[Dict[str, Any]] = None\n        screenshot: Optional[str] = None\n        pdf: Optional[bytes] = None\n        mhtml: Optional[str] = None\n        _markdown: Optional[MarkdownGenerationResult] = PrivateAttr(default=None)\n        extracted_content: Optional[str] = None\n        metadata: Optional[dict] = None\n        error_message: Optional[str] = None\n        session_id: Optional[str] = None\n        response_headers: Optional[dict] = None\n        status_code: Optional[int] = None\n        ssl_certificate: Optional[SSLCertificate] = None\n        dispatch_result: Optional[DispatchResult] = None\n        redirected_url: Optional[str] = None\n        network_requests: Optional[List[Dict[str, Any]]] = None\n        console_messages: Optional[List[Dict[str, Any]]] = None\n\n    class MarkdownGenerationResult(BaseModel):\n        raw_markdown: str\n        markdown_with_citations: str\n        references_markdown: str\n        fit_markdown: Optional[str] = None\n        fit_html: Optional[str] = None\n    ```","inputSchema":{"properties":{"url":{"title":"Url","type":"string"},"scripts":{"description":"List of separated JavaScript snippets to execute","items":{"type":"string"},"title":"Scripts","type":"array"}},"required":["url","scripts"],"title":"JSEndpointRequest","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"crawl","title":null,"description":"Crawl a list of URLs and return the results as JSON.\nFor streaming responses, use /crawl/stream endpoint.\nSupports optional user-provided hook functions for customization.","inputSchema":{"$defs":{"HookConfig":{"description":"Configuration for declarative hooks.","example":{"hooks":[{"action":"block_resources","params":{"resource_types":["image","font"]}},{"action":"scroll_to_bottom","params":{"delay_ms":500,"max_steps":10}}],"timeout":30},"properties":{"hooks":{"description":"Declarative hook specs (action + params), max 10","items":{"$ref":"#/$defs/HookSpec"},"maxItems":10,"title":"Hooks","type":"array"},"timeout":{"default":30,"description":"Timeout in seconds for each hook execution","maximum":120,"minimum":1,"title":"Timeout","type":"integer"}},"title":"HookConfig","type":"object"},"HookSpec":{"description":"A single declarative hook: a fixed action plus schema-validated params.\n\nArbitrary Python (the old `code` map) is no longer accepted - it was an\nexec()-based RCE surface. Available actions are enumerated by GET /hooks/info\nand validated server-side by hook_registry.py.","properties":{"action":{"description":"One of the registered hook actions","title":"Action","type":"string"},"params":{"additionalProperties":true,"description":"Action parameters","title":"Params","type":"object"}},"required":["action"],"title":"HookSpec","type":"object"}},"description":"Extended crawl request with hooks support","properties":{"urls":{"items":{"type":"string"},"maxItems":100,"minItems":1,"title":"Urls","type":"array"},"browser_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Browser Config"},"crawler_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Crawler Config"},"crawler_configs":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"description":"List of per-URL CrawlerRunConfig dicts for arun_many(). When provided, each config can include a 'url_matcher' pattern to match against specific URLs. Takes precedence over crawler_config.","title":"Crawler Configs"},"hooks":{"anyOf":[{"$ref":"#/$defs/HookConfig"},{"type":"null"}],"default":null,"description":"Optional user-provided hook functions"}},"required":["urls"],"title":"CrawlRequestWithHooks","type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null},{"name":"ask","title":null,"description":"This end point is design for any questions about Crawl4ai library. It returns a plain text markdown with extensive information about Crawl4ai. \nYou can use this as a context for any AI assistant. Use this endpoint for AI assistants to retrieve library context for decision making or code generation tasks.\nAlway is BEST practice you provide a query to filter the context. Otherwise the lenght of the response will be very long.\n\nParameters:\n- context_type: Specify \"code\" for code context, \"doc\" for documentation context, or \"all\" for both.\n- query: RECOMMENDED search query to filter paragraphs using BM25. You can leave this empty to get all the context.\n- score_ratio: Minimum score as a fraction of the maximum score for filtering results.\n- max_results: Maximum number of results to return. Default is 20.\n\nReturns:\n- JSON response with the requested context.\n- If \"code\" is specified, returns the code context.\n- If \"doc\" is specified, returns the documentation context.\n- If \"all\" is specified, returns both code and documentation contexts.","inputSchema":{"type":"object"},"outputSchema":null,"icons":null,"annotations":null,"meta":null,"execution":null}],"resources":[],"resource_templates":[]}