# firecrawl probes, 2026-09-18T06:16Z, from a cloud container (one IP), no credentials, no payment # Responses are cut at 6000 bytes (initialize), 20000 (tools/list), 2500 (protected resource), 9000 (authorization server), 4000 (REST). Nothing here was sent with a credential. ## 1. MCP initialize, POST https://mcp.firecrawl.dev/v2/mcp $ curl -sS -i -m 25 -X POST https://mcp.firecrawl.dev/v2/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '' HTTP/1.1 200 Connection Established HTTP/2 200 cache-control: no-cache content-type: text/event-stream date: Fri, 18 Sep 2026 06:16:45 GMT server: nginx/1.30.4 content-length: 1356 event: message id: a50b98a4-d93f-41a0-b2ff-5bf070ff2982_1789712205734_0000_nux data: {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":"firecrawl-fastmcp","version":"3.24.1"},"instructions":"Hosted keyless sessions expose firecrawl_search, firecrawl_scrape, and firecrawl_parse with usage limits. firecrawl_search searches the web. For programming questions, firecrawl_search with categories: [\"developer\"] searches indexed repositories, GitHub issues, merged pull requests, repository READMEs, and curated documentation sites. For biomedical, life-science, clinical, or arXiv literature, firecrawl_search with categories: [\"research\"] filters ordinary web results to research-affiliated websites. firecrawl_scrape retrieves one supplied page and can return JSON matching a supplied schema. firecrawl_parse processes supported local files through its two-phase upload flow. An Authorization bearer API key can provide higher usage limits and expose additional tools, subject to plan, deployment, and team policy, including firecrawl_map for site URL discovery, firecrawl_agent and firecrawl_agent_status for multi-source research that returns structured data when the URLs are not known, and firecrawl_research_* for paper-index and repository research."},"jsonrpc":"2.0","id":1} ## 1b. MCP tools/list, POST https://mcp.firecrawl.dev/v2/mcp (initialize answered 200; the session id from step 1 is sent back when the server issued one) $ curl -sS -i -m 25 -X POST https://mcp.firecrawl.dev/v2/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -H 'MCP-Protocol-Version: 2025-06-18' [-H 'Mcp-Session-Id: '] -d '' # tools counted over the whole response before the cut, by occurrences of "inputSchema": 3 (0 means no list came back) HTTP/1.1 200 Connection Established HTTP/2 200 cache-control: no-cache content-type: text/event-stream date: Fri, 18 Sep 2026 06:16:46 GMT server: nginx/1.30.4 event: message id: ebf14ef5-2d61-4c34-8c09-68eb804cc184_1789712206345_0000_i0b data: {"result":{"tools":[{"annotations":{"title":"Firecrawl scrape","readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"description":"\nRetrieve and extract content from one supplied URL through Firecrawl. Use this when the request identifies a page and needs its content or defined fields. It can return markdown, HTML, links, screenshots, branding data, a targeted answer, or JSON matching a supplied schema; JSON is useful when the requested result has defined fields, while markdown preserves readable page content.\n\nThis tool operates on a known page. For a set of pages use `firecrawl_crawl`, and to discover page URLs use `firecrawl_map` or `firecrawl_search`. Options include JavaScript render delay, cache age, main-content filtering, PII redaction, and lockdown cache-only retrieval. Browser actions may change the live page when interactive actions are enabled.\n\nFirecrawl may reuse recently indexed content instead of refetching the page, and the reuse window varies by domain. Set `maxAge: 0` to force a live fetch, or a smaller `maxAge` to bound how stale reused content may be. A successful response does not by itself confirm that the state it describes is still current.\n\nReturns the selected content formats and page metadata.\n","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"url":{"type":"string","format":"uri"},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","screenshot","links","summary","changeTracking","branding","json","query","audio"]}},"jsonOptions":{"type":"object","properties":{"prompt":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false}},"additionalProperties":false},"queryOptions":{"type":"object","properties":{"prompt":{"type":"string","maxLength":10000},"mode":{"default":"freeform","type":"string","enum":["directQuote","freeform"]}},"required":["prompt","mode"],"additionalProperties":false},"screenshotOptions":{"type":"object","properties":{"fullPage":{"type":"boolean"},"quality":{"type":"number"},"viewport":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"}},"required":["width","height"],"additionalProperties":false}},"additionalProperties":false},"parsers":{"type":"array","items":{"type":"string","enum":["pdf"]}},"pdfOptions":{"type":"object","properties":{"maxPages":{"type":"integer","minimum":1,"maximum":10000}},"additionalProperties":false},"onlyMainContent":{"type":"boolean"},"redactPII":{"type":"boolean"},"includeTags":{"type":"array","items":{"type":"string"}},"excludeTags":{"type":"array","items":{"type":"string"}},"waitFor":{"type":"number"},"mobile":{"type":"boolean"},"skipTlsVerification":{"type":"boolean"},"removeBase64Images":{"type":"boolean"},"location":{"type":"object","properties":{"country":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"storeInCache":{"type":"boolean"},"zeroDataRetention":{"type":"boolean"},"maxAge":{"type":"number"},"lockdown":{"type":"boolean"},"proxy":{"type":"string","enum":["basic","stealth","enhanced","auto"]},"profile":{"type":"object","properties":{"name":{"type":"string"},"saveChanges":{"type":"boolean"}},"required":["name"],"additionalProperties":false}},"required":["url"],"additionalProperties":false},"name":"firecrawl_scrape"},{"annotations":{"title":"Firecrawl web search","readOnlyHint":true,"openWorldHint":true,"destructiveHint":false},"description":"\nSearch web, news, or image sources and return ranked results. Operators include quoted phrases, `-term`, `site:host`, `inurl:term`, `intitle:term`, and `related:host`; the set is non-exhaustive. `includeDomains` and `excludeDomains` are mutually exclusive hostname filters; categories limit results to GitHub, research, PDF, or developer sources.\n\nFor a programming question, add `categories: [\"developer\"]`. It searches an index of repositories, GitHub issues, merged pull requests, repository READMEs, and curated documentation sites, and returns the hits in `data.web` with `category: \"developer\"`.\n\n`categories: [\"research\"]` restricts these web results to research-affiliated websites and returns page snippets. The `firecrawl_research_*` tools are a separate surface that searches paper abstracts and full text across biomedical (PubMed, bioRxiv, medRxiv) and arXiv literature.\n\nEach web result is a title, URL, and description, not the page. Add `scrapeOptions` to attach page content in the same call; those fetches ignore `maxAge`, so use `firecrawl_scrape` when you need a live fetch. Returns source-type result groups and usage metadata. Authenticated responses can include an `id` for optional search feedback.\n","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"query":{"type":"string","minLength":1},"highlights":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":100},"tbs":{"type":"string"},"filter":{"type":"string"},"location":{"type":"string"},"includeDomains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$"}},"excludeDomains":{"type":"array","items":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$"}},"sources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["web","images","news"]}},"required":["type"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"string","enum":["github","research","pdf","developer"]}},"enterprise":{"type":"array","items":{"type":"string","enum":["default","anon","zdr"]}},"scrapeOptions":{"type":"object","properties":{"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","screenshot","links","summary","changeTracking","branding","json","query","audio"]}},"jsonOptions":{"type":"object","properties":{"prompt":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false}},"additionalProperties":false},"queryOptions":{"type":"object","properties":{"prompt":{"type":"string","maxLength":10000},"mode":{"default":"freeform","type":"string","enum":["directQuote","freeform"]}},"required":["prompt","mode"],"additionalProperties":false},"screenshotOptions":{"type":"object","properties":{"fullPage":{"type":"boolean"},"quality":{"type":"number"},"viewport":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"}},"required":["width","height"],"additionalProperties":false}},"additionalProperties":false},"parsers":{"type":"array","items":{"type":"string","enum":["pdf"]}},"pdfOptions":{"type":"object","properties":{"maxPages":{"type":"integer","minimum":1,"maximum":10000}},"additionalProperties":false},"onlyMainContent":{"type":"boolean"},"redactPII":{"type":"boolean"},"includeTags":{"type":"array","items":{"type":"string"}},"excludeTags":{"type":"array","items":{"type":"string"}},"waitFor":{"type":"number"},"mobile":{"type":"boolean"},"skipTlsVerification":{"type":"boolean"},"removeBase64Images":{"type":"boolean"},"location":{"type":"object","properties":{"country":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"storeInCache":{"type":"boolean"},"zeroDataRetention":{"type":"boolean"},"maxAge":{"type":"number"},"lockdown":{"type":"boolean"},"proxy":{"type":"string","enum":["basic","stealth","enhanced","auto"]},"profile":{"type":"object","properties":{"name":{"type":"string"},"saveChanges":{"type":"boolean"}},"required":["name"],"additionalProperties":false}},"additionalProperties":false}},"required":["query"],"additionalProperties":false},"name":"firecrawl_search"},{"annotations":{"title":"Firecrawl file parsing","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"description":"\nParse one supported document into markdown, HTML, links, summary, targeted answers, or JSON matching a schema. Supported inputs include common HTML, PDF, Word, RTF, OpenDocument, and spreadsheet files; PDF parsing can be bounded with `pdfOptions.maxPages`.\n\nLocal MCP reads `filePath` from the server filesystem. Hosted MCP uses two calls: first provide `filePath` to receive upload instructions, upload locally, then call again with the returned `uploadRef`; do not send both fields together. Remote web URLs belong in `firecrawl_scrape`.\n\nSet `redactPII` to request redaction of personally identifiable information in the returned content. `zeroDataRetention` requires an eligible authenticated account; omit it for anonymous keyless use. Returns upload instructions for hosted phase one or parsed document content for the final call.\n","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","links","summary","json","query"]}},"jsonOptions":{"type":"object","properties":{"prompt":{"type":"string"},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":false}},"additionalProperties":false},"queryOptions":{"type":"object","properties":{"prompt":{"type":"string","maxLength":10000},"mode":{"default":"freeform","type":"string","enum":["directQuote","freeform"]}},"required":["prompt","mode"],"additionalProperties":false},"parsers":{"type":"array","items":{"type":"string","enum":["pdf"]}},"pdfOptions":{"type":"object","properties":{"maxPages":{"type":"integer","minimum":1,"maximum":10000}},"additionalProperties":false},"onlyMainContent":{"type":"boolean"},"redactPII":{"type":"boolean"},"includeTags":{"type":"array","items":{"type":"string"}},"excludeTags":{"type":"array","items":{"type":"string"}},"removeBase64Images":{"type":"boolean"},"skipTlsVerification":{"type":"boolean"},"storeInCache":{"type":"boolean"},"zeroDataRetention":{"type":"boolean"},"maxAge":{"type":"number"},"proxy":{"type":"string","enum":["basic","auto"]},"filePath":{"type":"string","minLength":1},"uploadRef":{"type":"string","minLength":1},"contentType":{"type":"string"},"declaredSizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"additionalProperties":false},"name":"firecrawl_parse"}]},"jsonrpc":"2.0","id":2} ## 2. Protected-resource metadata, GET https://mcp.firecrawl.dev/.well-known/oauth-protected-resource/v2/mcp (not named in the challenge; the RFC 9728 default path) HTTP/1.1 200 Connection Established HTTP/2 404 date: Fri, 18 Sep 2026 06:16:47 GMT server: nginx/1.30.4 ## 3. Authorization-server metadata: no authorization_servers in step 2