Firecrawl MCP Server
NPM · FIRECRAWL-MCP · 2 COMPONENTS
Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.
Available components
Last scanned (4 hours ago)
Scores higher than 76% of npm servers
Category Web Scraping
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security91
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects zod 3.25.76, reached via firecrawl > zod. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 5 of 36 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency71
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Cryptographically verified build provenance (signed, bound to firecrawl/firecrawl-mcp-server). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability59
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 7067 tokens (~271/item across 26 items; 26 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage81
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 32% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 27 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- Stability: fail → pass ▲ security
- 4 Nov 26 +15
- Tool safety: pass → unverified ▼ security
- Stability: fail → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Tool coverage: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Schema quality: excellent → good functional
- Package version: 3.36.1 → 3.37.0 functional
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 3.36.0 → 3.36.1 functional
- 28 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 27 Oct 26 0
- Malware scan: unverified → pass ▲ security
- Package version: 3.35.0 → 3.36.0 functional
- 26 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.85 → 0.96 ▲ functional
- Package version: 3.34.1 → 3.35.0 functional
- 24 Oct 26 −3
- CVE-2023-54404 affects this package: high ▼ security
- Known CVEs: pass → fail ▼ security
- 23 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Package version: 3.29.1 → 3.34.1 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/firecrawl-mcp@3.37.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | firecrawl/firecrawl-mcp-server |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/firecrawl/firecrawl-mcp-server/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 3690968232 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:d5256d9feb099d82a6aa2f02d1698b3a08959fb5335ca419c269e8203190af9fc55b6d9e23db4737d79664b71ce9802d054c5cb3b886af1a9b1dc9822 |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-mrhx-c7xc-m3w5 | CVE-2023-54404 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 36 packages
| Packages resolved | 36 |
|---|---|
| Stale | 5 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
firecrawl_agent Firecrawl agent ~637
Run web research that returns structured data when the URLs are not known or the answer spans several sites. Describe the fields you need in `prompt`, optionally pass a JSON `schema` and seed `urls`, and the research agent searches, navigates, reads pages, and returns JSON assembled across sources. Use it to research an entity plus its fields (founders, pricing, contact details), to build lists and datasets (companies, people, products, jobs, papers), and for pages that need navigation or interaction to reach the data. Optional `effort` sets the reasoning budget, `maxCredits` caps spend, and `strictConstrainToURLs` keeps the agent to the supplied `urls`. This call returns only a job ID, not the research result. Read the job with `firecrawl_agent_status` until it reaches `completed` or `failed`; a typical research run takes one to three minutes. For one known URL use `firecrawl_scrape` (with formats: ["json"] for structured output); for a plain lookup that a results page answers, use `firecrawl_search`. The job also returns a `threadId`. To continue that thread, pass it with a follow-up `prompt`; omitted `mode`, `urls`, `schema` and exchange settings carry over from the previous turn. The agent only calls Alexandria providers whose terms the team has accepted. `exchange.skippedProviders` lists gated providers. With `exchange.onTermsRequired` "ask", a terms `pendingApproval` and `exchange.requiresAction` carry the `approvalId` and provider requirements. Read terms/show through `firecrawl_scrape`. An organization admin must accept terms in the Firecrawl dashboard at the provider URL or https://www.firecrawl.dev/app/settings?tab=data-sources. Ignore any terms/accept call in the API response. Only after the admin confirms acceptance, resume with the same `threadId` and `exchange.approve: {approvalId}`; this does not accept terms. To decline, use `exchange.decline: {approvalId}`. Never infer acceptance from a data request.
| Name | Type | Req | Description |
|---|---|---|---|
| effort | string | – | Reasoning budget for the agent task. |
| exchange | object | – | Alexandria provider settings for this turn, forwarded as the request's exchange object. |
| maxCredits | integer | – | Spending limit in credits for this run. Defaults to 2500 on the API. |
| mode | string | – | "extract" (default) returns the complete structured result every turn. "chat" lets a follow-up that asks no new data get a short reply in message instead of a re-run; required for exchange.requireApp… |
| prompt | string | yes | – |
| schema | object | – | – |
| strictConstrainToURLs | boolean | – | If true, agent will only visit URLs provided in the urls array. |
| threadId | string | – | Continue this thread: the threadId from an earlier firecrawl_agent or firecrawl_agent_status result. Omit to start a new thread. |
| urls | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| error | – | – | Error message or error object when the call did not succeed. |
| id | string|null | – | Agent job identifier, for `firecrawl_agent_status`. |
| status | string|null | – | Job state at submission time. |
| success | boolean|null | – | Whether the API call succeeded. |
| threadId | string|null | – | Research thread this job belongs to. |
| threadTurn | number|null | – | Turn number of this job within its thread. |
No examples provided.
firecrawl_agent_status Firecrawl agent status ~129
Retrieve progress or final results for a `firecrawl_agent` job ID. A `processing` response is non-terminal and does not contain the final research result. Check again after 15–30 seconds until the status is `completed` or `failed`; a typical research run takes one to three minutes and complex jobs can take longer. If the job cannot finish within the task's available time, use `firecrawl_search` and `firecrawl_scrape` to complete the requested output. Returns job status, progress information, and result data when completed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| creditsUsed | number|null | – | Credits the job consumed. |
| data | – | – | Research result, present once the job has completed. |
| error | – | – | Error message or error object when the call did not succeed. |
| exchange | – | – | What the job did with Alexandria providers: onTermsRequired, paidCalls, creditsUsed, skippedProviders (gated providers that would have helped), and requiresAction (approvalId and provider requirement… |
| expiresAt | string|null | – | When the job result expires and can no longer be read. |
| id | string|null | – | Agent job identifier. |
| message | – | – | The agent's reply; in chat mode, the short answer to a follow-up. |
| mode | string|null | – | Agent mode the job ran in. |
| model | string|null | – | Agent model that ran the job. |
| notice | string|null | – | Set when the run stopped at its credit limit: what that means and how to continue. |
| partial | – | – | Incomplete best-effort result of a `failed` run; never a completed answer. |
| partialSchemaValid | boolean|null | – | Whether `partial` matches the requested schema, when one was supplied. |
| pendingApproval | – | – | Set when the job ended waiting on the caller. Answer it by calling firecrawl_agent with this threadId and exchange.approve or exchange.decline carrying its id. kind "terms" lists providers whose data… |
| progress | – | – | Progress information for a running job. |
| sources | – | – | Sources the agent read. |
| status | string|null | – | Job state: `processing` is non-terminal; `completed` and `failed` are terminal. |
| stopReason | string|null | – | Why a `failed` run stopped early; `credit_limit_reached` means it hit maxCredits. |
| success | boolean|null | – | Whether the API call succeeded. |
| suggestions | – | – | Follow-ups the agent offers; send one as the prompt of the next turn with this threadId. |
| threadId | string|null | – | Research thread this job belongs to. |
| threadTurn | number|null | – | Turn number of this job within its thread. |
No examples provided.
firecrawl_check_crawl_status Firecrawl crawl status ~52
Retrieve the current status, progress, and available results for an existing crawl ID. This only reads Firecrawl job state and does not start or modify the crawl.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | number|null | – | Pages crawled so far. |
| creditsUsed | number|null | – | Credits the crawl consumed. |
| data | – | – | Scraped documents collected by the crawl. |
| error | – | – | Error message or error object when the call did not succeed. |
| expiresAt | string|null | – | When the crawl results expire. |
| id | string|null | – | Crawl identifier, for `firecrawl_check_crawl_status`. |
| next | string|null | – | URL of the next page of results, when the data is paginated. |
| status | string|null | – | Crawl state, such as `scraping`, `completed`, or `failed`. |
| success | boolean|null | – | Whether the API call succeeded. |
| total | number|null | – | Pages the crawl expects to visit. |
| url | string|null | – | The URL the crawl started from. |
| warning | string|null | – | Non-fatal warning about the result. |
No examples provided.
firecrawl_crawl Firecrawl site crawl ~245
Start a multi-page crawl at a website URL, poll it to a terminal state, and return the final status and collected data. Scope can be bounded with include/exclude paths, depth, page limit, subdomain/external-link controls, sitemap handling, delay, and scrape options. Crawl results can be large; use conservative limits when full-site coverage is unnecessary. Webhooks and interactive scrape actions are unavailable in safe mode. Returns the crawl ID, status, and page data.
| Name | Type | Req | Description |
|---|---|---|---|
| allowExternalLinks | boolean | – | – |
| allowSubdomains | boolean | – | – |
| crawlEntireDomain | boolean | – | – |
| deduplicateSimilarURLs | boolean | – | – |
| delay | number | – | – |
| excludePaths | array | – | – |
| ignoreQueryParameters | boolean | – | – |
| includePaths | array | – | – |
| limit | number | – | – |
| maxConcurrency | number | – | – |
| maxDiscoveryDepth | number | – | – |
| prompt | string | – | – |
| scrapeOptions | object | – | – |
| sitemap | string | – | – |
| url | string | yes | – |
| webhook | string | – | – |
| webhookHeaders | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| completed | number|null | – | Pages crawled so far. |
| creditsUsed | number|null | – | Credits the crawl consumed. |
| data | – | – | Scraped documents collected by the crawl. |
| error | – | – | Error message or error object when the call did not succeed. |
| expiresAt | string|null | – | When the crawl results expire. |
| id | string|null | – | Crawl identifier, for `firecrawl_check_crawl_status`. |
| next | string|null | – | URL of the next page of results, when the data is paginated. |
| status | string|null | – | Crawl state, such as `scraping`, `completed`, or `failed`. |
| success | boolean|null | – | Whether the API call succeeded. |
| total | number|null | – | Pages the crawl expects to visit. |
| url | string|null | – | The URL the crawl started from. |
| warning | string|null | – | Non-fatal warning about the result. |
No examples provided.
firecrawl_credit_usage Firecrawl credit usage ~470
Get the authenticated Firecrawl team's current credit balance or its credit usage over the last 90 days. Use the current view to answer how many credits remain or to check billing-period boundaries. Use the historical view to answer what credits were spent on and when. The current view returns `remainingCredits`, `planCredits`, `billingPeriodStart`, and `billingPeriodEnd`. Extra purchased or granted credits can make `remainingCredits` greater than `planCredits`. Billing-period dates may be null when the upstream billing provider has no period metadata. The historical view returns periods sorted by start date with `startDate`, `endDate`, and `creditsUsed`, one per calendar month, or one per UTC day with `bin: "day"`. Set `byEndpoint` to split each period by the endpoint that used the credits (`endpoint`: scrape, search, crawl, map, agent, ...), or `byApiKey` to split it by API key (`apiKey`). The endpoint split also counts search usage, which the unsplit and per-key figures leave out, so its rows can add up to more. The newest period's `endDate` can be null. A `notice` means the requested split or daily periods are not available yet and the periods are monthly figures. This tool cannot attribute credits to individual jobs, URLs, or MCP clients. Each tool's own result reports what that call used (`creditsUsed`, or `metadata.creditsUsed` on scrapes), and the Usage and Logs pages of the Firecrawl dashboard list usage per job.
| Name | Type | Req | Description |
|---|---|---|---|
| bin | string | – | Length of each historical period: calendar month (default) or UTC day. When view is omitted, it selects the historical view; it cannot be combined with view "current". |
| byApiKey | boolean | – | Break historical usage down by API key. When view is omitted, true selects the historical view; it cannot be combined with view "current". |
| byEndpoint | boolean | – | Break historical usage down by endpoint (scrape, search, crawl, map, agent, ...). When view is omitted, true selects the historical view; it cannot be combined with view "current" or byApiKey. |
| view | string | – | Select current balance or historical usage. Defaults to current. |
| Name | Type | Req | Description |
|---|---|---|---|
| billingPeriodEnd | string|null | – | End of the current billing period; null when the billing provider reports no period. |
| billingPeriodStart | string|null | – | Start of the current billing period; null when the billing provider reports no period. |
| bin | string|null | – | Period length the API applied, `month` or `day`; present when the API applied a requested endpoint split or daily periods. |
| error | – | – | Error message or error object when the call did not succeed. |
| notice | string|null | – | Present when the requested split or daily periods are not available yet; the periods are then calendar-month figures. |
| periods | – | – | Historical periods sorted by start date, each with `startDate`, `endDate`, `creditsUsed`, and `endpoint` or `apiKey` when split. |
| planCredits | number|null | – | Credits included in the plan for the period. |
| remainingCredits | number|null | – | Credits left in the current billing period; can exceed `planCredits` when extra credits were purchased or granted. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_developer_search Firecrawl developer search ~130
Search an index of public repositories, GitHub issues, merged pull requests, repository READMEs, and code documentation for programming questions that need external documentation or upstream evidence. Returns ranked results with an ID, source type, URL, title, and the matched passages in markdown.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | Number of ranked results to return (default 10). |
| query | string | yes | Natural-language developer question or search phrase, including the library, error message, or API involved when relevant. |
| skills | string | – | Set to "only" to search only agent-skill files. |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | Ranked results, in the order the text block lists them. |
No examples provided.
firecrawl_find_tools Find Tools ~495
Browse Alexandria data providers and workflows or read a selected contract. Alexandria covers companies, people, jobs, finance and filings, public records and government spending, real estate, places and restaurants, retail and prices, package registries and developer data, news, research, and more: typed, sourced records through published contracts. Prefer normal firecrawl_search for a data task; it already returns matching providers. Use this tool when the contract you need was not returned in full, to browse a category when search found nothing, or before scraping the same fields from several pages. Discovery is free. Use query for semantic discovery or urls to find providers for a website. With no arguments, browse categories, then providers and tools. Contracts describe the inputs and outputs for execution through firecrawl_scrape. nextTool identifies further discovery or pagination. Discovery does not execute providers. Use firecrawl_search when you also need web results.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | – | Values from each listed tool's `capability` field (e.g. "apps/app"). Put the provider in `providers`: {"providers": ["apps-apple-com"], "capabilities": ["apps/app"]}. A selected capability expands it… |
| categories | array | – | Category IDs returned by an empty call. Lists providers by default. |
| expand | array | – | Use ["options", "response"] for inputs and output shape without example payloads; [] keeps results compact. Omit for full contracts on selected capabilities. |
| groups | array | – | Optional group IDs for explicit group browsing. |
| includeCosts | boolean | – | Include per-capability credit prices (creditsCost, perRecord) in tool results. |
| level | string | – | Usually omit: it follows the arguments (tools for query, urls, providers, capabilities or groups; providers for categories; categories with none). Set providers or groups to list those within a categ… |
| limit | integer | – | – |
| offset | integer | – | – |
| providers | array | – | Values from each listed tool's `provider` field (e.g. "apps-apple-com"). Alone, lists that provider's compact tools; with capabilities, scopes them. |
| query | string | – | Semantic lookup of tools for the data you need. Selectors constrain the search. |
| urls | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| creditsCost | number|null | – | Credits this call consumed. |
| data | – | – | Discovery page in `data.alexandria[0].data`, with `level`, `items`, `total`, and an optional `nextTool`. |
| delivery | string|null | – | `retained` when the full result stayed server-side instead of being inlined. |
| error | – | – | Error message or error object when the call did not succeed. |
| estimatedTokens | number|null | – | Estimated token cost of the full result. |
| feedbackTool | – | – | Pointer to the feedback tool for reporting how this result served the task. |
| idleTtlSeconds | number|null | – | Seconds a retained workspace stays available while idle. |
| inlineTokenBudget | number|null | – | Token budget above which a result is retained rather than inlined. |
| message | string|null | – | Guidance that accompanies the result. |
| nextTool | – | – | A follow-up tool call (`{name, arguments}`) that continues or inspects this result. |
| receipt | – | – | Billing receipt for the execution. |
| requestId | string|null | – | Identifier of this Alexandria execution. |
| responseBytes | number|null | – | Size of the full result in bytes. |
| scrape_id | string|null | – | Identifier of the underlying scrape. |
| success | boolean|null | – | Whether the API call succeeded. |
| tokenEstimateMethod | string|null | – | How `estimatedTokens` was derived. |
| workspaceId | string|null | – | Workspace holding a retained result, for inspection through virtual Bash. |
No examples provided.
firecrawl_gov_search Firecrawl Government Index search ~470
Search US federal, state, and local statutes, regulations, codes, court opinions, and other government publications for legal or regulatory questions that need primary text. Clarify a missing jurisdiction or ambiguous as-of date before identifying the governing rule. Optional filters narrow results by jurisdiction, court, court type, cited law or case, and site. Filters keep only pages the index has labeled, so a filtered search can leave out relevant pages, and no results does not mean none exist. Court labels are most complete for federal courts and case-law collections. Returns ranked results with a position, title, URL, and matched snippet. Results may include historical versions, bill text, agency guidance, and third-party reproductions. Verify the issuer, jurisdiction, enacted/effective status, and version before citing current governing law. Read a known URL or additional page context with firecrawl_scrape. Use general search for non-US questions or missing coverage; no hits does not establish that no applicable law exists.
| Name | Type | Req | Description |
|---|---|---|---|
| cites | string | – | Keep only pages that cite one law or case, as a printed citation such as "42 U.S.C. § 1983" or "5 U.S. 137", or a citation id such as "us:usc:42:1983". |
| court | string | – | Keep only pages labeled for one court, by CourtListener court id, such as "scotus", "ca9" or "nysd". |
| courtType | string | – | Keep only pages from one type of court: federal-supreme, federal-appellate, federal-district, federal-bankruptcy, federal-special, military, state-supreme, state-appellate, state-trial, state-special… |
| domain | string | – | Keep only pages from one site, such as "irs.gov". |
| jurisdiction | string | – | Keep only pages of one jurisdiction: "us" for federal, or "us-" plus a two-letter state or territory code, such as "us-ca" or "us-dc". |
| k | integer | – | Number of ranked results to return (default 10). |
| query | string | yes | Natural-language legal or regulatory question or search phrase, including the jurisdiction, agency, or citation when relevant. |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | Ranked results, in the order the text block lists them. |
No examples provided.
firecrawl_interact Firecrawl interact ~160
Open or reuse a live browser session to navigate a page, click controls, fill fields, or run browser code. Provide either `url` or `scrapeId`, and either a natural-language `prompt` or executable `code`; code can run as Bash, Python, or Node with a bounded timeout. This acts on the live site, so actions such as form submission can create persistent external side effects. Returns execution output, stdout/stderr, exit status, and session viewing URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | – |
| language | string | – | – |
| prompt | string | – | – |
| scrapeId | string | – | – |
| scrapeOptions | object | – | – |
| timeout | number | – | – |
| url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Payload returned by the interaction. |
| error | – | – | Why the interaction or the session could not run. |
| exitCode | number|null | – | Exit status of the executed code. |
| liveUrl | string|null | – | URL for viewing the live session. |
| output | – | – | Execution output. |
| result | – | – | Interaction result, when it is not an object of its own. |
| scrapeId | string|null | – | Session identifier; pass it to reuse the session or to `firecrawl_interact_stop`. |
| sessionUrl | string|null | – | URL for viewing the live session. |
| stderr | string|null | – | Standard error of the executed code. |
| stdout | string|null | – | Standard output of the executed code. |
| success | boolean|null | – | Whether the API call succeeded. |
| url | string|null | – | The URL the session was opened from, when opening failed. |
No examples provided.
firecrawl_interact_stop Stop Firecrawl interact session ~43
Stop the live interact session associated with a `scrapeId` and release its resources. Returns a success confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| scrapeId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| error | – | – | Error message or error object when the call did not succeed. |
| message | string|null | – | Confirmation that the session was stopped. |
| scrapeId | string|null | – | Session that was stopped. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_map Firecrawl website map ~175
Enumerate URLs indexed under one website through Firecrawl without fetching each page's content. Use this when the request asks for a site's URL inventory, when several relevant pages must be located, or when the desired page URL is unknown. An optional `search` term narrows the URL list, while sitemap, subdomain, query-parameter, and result-limit options control coverage. Returns matching URLs rather than page bodies. Retrieve one page with `firecrawl_scrape`; collect content across multiple pages with `firecrawl_crawl`. Authenticated responses can include an `id` for optional map feedback.
| Name | Type | Req | Description |
|---|---|---|---|
| ignoreQueryParameters | boolean | – | – |
| includeSubdomains | boolean | – | – |
| limit | number | – | – |
| search | string | – | – |
| sitemap | string | – | – |
| url | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| error | – | – | Error message or error object when the call did not succeed. |
| id | string|null | – | Identifier of the map run, for optional map feedback. |
| links | – | – | URLs discovered under the website. |
| success | boolean|null | – | Whether the API call succeeded. |
| warning | string|null | – | Non-fatal warning about the result. |
No examples provided.
firecrawl_monitor_check Get Firecrawl monitor check ~136
Retrieve one monitor check and its page-level results, optionally filtered by page status. Pages report `same`, `new`, `changed`, `removed`, or `error`; configured goal judging can add a meaningful-change decision. Markdown tracking returns a unified text diff, JSON tracking returns field paths with previous/current values and a current snapshot, and mixed tracking returns both. Returns one page of results plus a `next` URL when more pages exist.
| Name | Type | Req | Description |
|---|---|---|---|
| checkId | string | yes | – |
| id | string | yes | – |
| limit | integer | – | – |
| pageStatus | string | – | – |
| skip | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | The check and its page-level results: each page reports `same`, `new`, `changed`, `removed`, or `error`, with diffs and any goal judgment. |
| error | – | – | Error message or error object when the call did not succeed. |
| next | string|null | – | URL of the next page of results, when more exist. |
| pagination | – | – | Pagination metadata for the page results. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_checks List Firecrawl monitor checks ~67
List historical checks for a monitor, optionally filtered by status and bounded by a result limit. Returns one page of check summaries and pagination metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| limit | integer | – | – |
| offset | integer | – | – |
| status | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | One page of check summaries. |
| error | – | – | Error message or error object when the call did not succeed. |
| pagination | – | – | Pagination metadata for the listing. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_create Create Firecrawl monitor ~257
Create a recurring scrape, crawl, or search monitor that compares each check with its retained predecessor. The simple form accepts `page`/`pages` or `queries` plus a plain-language `goal`; the advanced `body` form controls targets, schedule, change-tracking formats, judging, retention, webhook, and notifications. In the simple form, a `goal` is required. If `queries` contains one or more non-empty values and is supplied with `page`/`pages`, `queries` create the search target and page targets are ignored. A monitor schedules future network checks and can send configured email or webhook notifications. Returns the created monitor.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | – | – |
| string | – | – | |
| excludeDomains | array | – | – |
| goal | string | – | – |
| includeDiffs | boolean | – | – |
| includeDomains | array | – | – |
| maxResults | integer | – | – |
| name | string | – | – |
| page | string | – | – |
| pages | array | – | – |
| queries | array | – | – |
| scheduleText | string | – | – |
| searchWindow | string | – | – |
| timezone | string | – | – |
| webhookUrl | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | The monitor record: configuration, schedule, targets, and current state. |
| error | – | – | Error message or error object when the call did not succeed. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_delete Delete Firecrawl monitor ~42
Permanently delete a monitor by ID and stop its future schedule. This operation cannot be undone and returns deletion status.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Deletion details, when the API returns any. |
| error | – | – | Error message or error object when the call did not succeed. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_get Get Firecrawl monitor ~40
Retrieve one monitor by ID, including its configuration and current state. This does not run or modify the monitor.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | The monitor record: configuration, schedule, targets, and current state. |
| error | – | – | Error message or error object when the call did not succeed. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_list List Firecrawl monitors ~46
List monitors for the authenticated account with optional pagination controls. Returns one page of monitor records and pagination metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| offset | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | One page of monitor records. |
| error | – | – | Error message or error object when the call did not succeed. |
| pagination | – | – | Pagination metadata for the listing. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_run Run Firecrawl monitor now ~46
Queue an immediate check for a monitor outside its normal schedule. This starts network work for the monitor's configured targets and returns the queued check.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | The queued check. |
| error | – | – | Error message or error object when the call did not succeed. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_monitor_update Update Firecrawl monitor ~71
Patch an existing monitor by ID. The body can change its name, active/paused status, schedule, targets, goal, judging, webhook, notifications, or retention; these changes affect future scheduled checks. Returns the updated monitor.
| Name | Type | Req | Description |
|---|---|---|---|
| body | object | yes | – |
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | The monitor record: configuration, schedule, targets, and current state. |
| error | – | – | Error message or error object when the call did not succeed. |
| success | boolean|null | – | Whether the API call succeeded. |
No examples provided.
firecrawl_parse Firecrawl file parsing ~411
Parse 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`. Local 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`. Set `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. Authenticated final responses can include a `data.metadata.scrapeId` for optional parse feedback.
| Name | Type | Req | Description |
|---|---|---|---|
| contentType | string | – | Optional MIME type override. If omitted, the server infers the file kind from the extension. |
| excludeTags | array | – | – |
| filePath | string | yes | Absolute or relative path to a local file to parse. Supported: .html, .htm, .pdf, .docx, .doc, .odt, .rtf, .xlsx, .xls |
| formats | array | – | – |
| includeTags | array | – | – |
| jsonOptions | object | – | – |
| maxAge | number | – | Ignored: parse never reuses or stores indexed content. |
| onlyMainContent | boolean | – | – |
| parsers | array | – | – |
| pdfOptions | object | – | – |
| proxy | string | – | – |
| queryOptions | object | – | – |
| redactPII | boolean | – | – |
| removeBase64Images | boolean | – | – |
| skipTlsVerification | boolean | – | – |
| storeInCache | boolean | – | – |
| zeroDataRetention | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Parsed document content; can include `data.metadata.scrapeId` for parse feedback. |
| error | – | – | Error message or error object when the call did not succeed. |
| message | string|null | – | Guidance for the next call. |
| mode | string|null | – | Which phase of the hosted flow produced this response. |
| nextToolCall | – | – | Hosted phase one: the second `firecrawl_parse` call to make once the upload succeeds, as `{name, arguments}`. |
| notes | – | – | Hosted phase one: constraints on completing the upload flow. |
| raw | string|null | – | Response body when it was not JSON. |
| success | boolean|null | – | Whether the API call succeeded. |
| upload | object | – | Hosted phase one: how to upload the local file. |
| warning | string|null | – | Non-fatal warning about the result. |
No examples provided.
firecrawl_research_inspect_paper Firecrawl inspect research paper ~118
Retrieve canonical metadata for one paper ID, such as an arXiv, PMC, PMID, or DOI identifier. Returns the title, abstract, authors, categories, source IDs, and dates as markdown.
| Name | Type | Req | Description |
|---|---|---|---|
| paperId | string | yes | Canonical paperId or primaryId such as `arxiv:1706.03762`, `pmcid:PMC12530322`, `pmid:40953549`, or `doi:10.1016/j.neunet.2025.108095`. |
| Name | Type | Req | Description |
|---|---|---|---|
| paper | object | – | Canonical metadata for the requested paper, absent when it was not found. |
No examples provided.
firecrawl_research_read_paper Firecrawl read research paper ~144
Retrieve in-body passages from one paper that are relevant to a specific question. Full text is available only for indexed papers; `k` controls the number of passages. Returns matching passages or a notice when full text is unavailable.
| Name | Type | Req | Description |
|---|---|---|---|
| k | integer | – | Number of passages to return (default 4). |
| paperId | string | yes | Canonical paperId or primaryId such as `arxiv:1706.03762`, `pmcid:PMC12530322`, `pmid:40953549`, or `doi:10.1016/j.neunet.2025.108095`. |
| question | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| passages | array | yes | In-body passages relevant to the question; empty when no full text is indexed. |
No examples provided.
firecrawl_research_related_papers Firecrawl related research papers ~137
Find citation-graph candidates from one to ten `seed_ids`; the first ID is the primary seed and later IDs are anchors. `mode` defaults to `similar` (co-citation/bibliographic coupling); `citers` returns papers citing a seed and `references` papers cited by a seed. `intent` ranks candidates. Returns ranked candidates and the evaluated pool size.
| Name | Type | Req | Description |
|---|---|---|---|
| intent | string | yes | – |
| k | integer | – | – |
| mode | string | – | – |
| rerank | boolean | – | Apply an additional rerank over the fused candidates. |
| seed_ids | array | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| note | string|null | – | Note about how the candidates were produced. |
| poolSize | number | yes | Number of candidates evaluated before ranking. |
| results | array | yes | Ranked citation-graph candidates. |
No examples provided.
firecrawl_research_search_papers Firecrawl research paper search ~296
Search paper metadata and abstracts with a natural-language query across the indexed corpus, which spans biomedical, life-science, and clinical literature (PubMed, bioRxiv, medRxiv) alongside arXiv and other scientific sources. Optional author, category, date, and sort options constrain or reorder results. Several distinct framings of the same question surface different papers than a single query does. Returns ranked papers with canonical IDs, titles, authors, and abstracts.
| Name | Type | Req | Description |
|---|---|---|---|
| authors | array | – | Author substring filter(s); ALL must match (case-insensitive). |
| categories | array | – | Paper category filter(s) (e.g. `cs.LG`); ALL provided values must match. |
| from | string | – | Inclusive lower bound on created/updated date (`YYYY-MM-DD`). |
| k | integer | – | Number of ranked papers to return (default 40). |
| query | string | yes | Natural-language research topic or question, including methods, systems, conditions, populations, interventions, or outcomes when relevant. |
| sort | string | – | `relevance` (default) or `date_desc`, which returns the newest of the most relevant matches, newest first by created date. It does not list every paper in a date range; add `from` (and `to`) for that. |
| to | string | – | Inclusive upper bound on created/updated date (`YYYY-MM-DD`). |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | Ranked papers, in the order the text block lists them. |
No examples provided.
firecrawl_scrape Firecrawl scrape ~794
Scrape one URL and return its content: markdown by default, or HTML, links, screenshots, branding data, a targeted answer, or JSON matching a supplied schema. Use it when the request identifies a page and needs its content or defined fields: the user gives a URL or names a page or PDF and wants it read or summarized, or wants prices, specs, contact details or a table from it. Use `firecrawl_search` when additional web sources are needed; on an authenticated session, `firecrawl_map` lists a site's URLs and `firecrawl_crawl` collects a set of pages. Firecrawl may serve recently indexed content; set `maxAge: 0` for a live fetch or a smaller `maxAge` to bound staleness. A successful response does not by itself confirm the page is still current. Browser actions can change the live page when interactive actions are enabled. Authenticated responses can include a `metadata.scrapeId` for optional scrape feedback. On an authenticated session, `firecrawl_search` and `firecrawl_find_tools` can discover providers for the same fields across several pages; a matching provider returns typed records in one call. With `alexandria` in place of `url`, the tool runs catalogued provider capabilities instead of fetching a page. Some providers require accepted terms; when a response reports a terms requirement, direct the user to the Firecrawl dashboard URL in that response.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | – | – |
| alexandria | – | – | Catalogued Alexandria capability invocation, mutually exclusive with url. One {provider, capability, options} object or an array of 1-10, with contracts available through firecrawl_search or firecraw… |
| domainTools | boolean | – | URL mode only: include domain-matched Alexandria tools for the page in tools on the returned document. Ignored with alexandria. |
| excludeTags | array | – | – |
| formats | array | – | – |
| includeTags | array | – | – |
| jsonOptions | object | – | – |
| location | object | – | – |
| lockdown | boolean | – | – |
| maxAge | number | – | – |
| mobile | boolean | – | – |
| onlyMainContent | boolean | – | – |
| parsers | array | – | – |
| pdfOptions | object | – | – |
| profile | object | – | – |
| proxy | string | – | – |
| queryOptions | object | – | – |
| redactPII | boolean | – | – |
| removeBase64Images | boolean | – | – |
| requestId | string | – | Idempotency key bound to one Alexandria execution payload. Generated when omitted and returned with the result. |
| screenshotOptions | object | – | – |
| skipTlsVerification | boolean | – | – |
| storeInCache | boolean | – | – |
| timeout | integer | – | Execution timeout in milliseconds. |
| toolDetail | string | – | URL mode only: domain discovery detail, summary by default; compact returns provider/capability/description, full includes contracts. Ignored with alexandria. |
| url | string | – | – |
| waitFor | number | – | – |
| zeroDataRetention | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| actions | – | – | Results of the browser actions that ran during the scrape. |
| answer | string|null | – | Targeted answer to the question that was asked of the page. |
| attributes | – | – | Values collected by the requested attribute selectors. |
| audio | – | – | Audio extracted from the page. |
| blocks | – | – | Typed PDF layout blocks, when `parsers[].blocks` is set. |
| branding | – | – | Branding data extracted from the page. |
| changeTracking | – | – | Change-tracking comparison against the previous scrape. |
| creditsCost | number|null | – | Credits this call consumed. |
| data | – | – | Alexandria mode: per-capability results in `data.alexandria`, each with `data`, `records`, or an `error`. |
| delivery | string|null | – | `retained` when the full result stayed server-side instead of being inlined. |
| error | – | – | Error message or error object when the call did not succeed. |
| estimatedTokens | number|null | – | Estimated token cost of the full result. |
| feedbackTool | – | – | Pointer to the feedback tool for reporting how this result served the task. |
| highlights | – | – | Highlighted passages from the page. |
| html | string|null | – | Processed HTML of the page. |
| idleTtlSeconds | number|null | – | Seconds a retained workspace stays available while idle. |
| images | – | – | Images found on the page. |
| inlineTokenBudget | number|null | – | Token budget above which a result is retained rather than inlined. |
| json | – | – | Structured data matching the requested JSON schema or prompt. |
| links | – | – | Links found on the page. |
| markdown | string|null | – | Page content as markdown. |
| menu | – | – | Menu data extracted from the page. |
| message | string|null | – | Guidance that accompanies the result. |
| metadata | – | – | Page metadata; authenticated responses can include `metadata.scrapeId` for scrape feedback. |
| nextTool | – | – | A follow-up tool call (`{name, arguments}`) that continues or inspects this result. |
| pages | – | – | Physical PDF pages, when `parsers[].pages` is set. |
| product | – | – | Product data extracted from the page. |
| rawHtml | string|null | – | Unprocessed HTML of the page. |
| receipt | – | – | Billing receipt for the execution. |
| requestId | string|null | – | Identifier of this Alexandria execution. |
| responseBytes | number|null | – | Size of the full result in bytes. |
| scrape_id | string|null | – | Identifier of the underlying scrape. |
| screenshot | – | – | Screenshot of the page. |
| success | boolean|null | – | Whether the API call succeeded. |
| summary | string|null | – | Summary of the page content. |
| tokenEstimateMethod | string|null | – | How `estimatedTokens` was derived. |
| tools | – | – | Domain-matched Alexandria tools for the page, when `domainTools` is set. |
| video | – | – | Video extracted from the page. |
| warning | string|null | – | Non-fatal warning about the result. |
| workspaceId | string|null | – | Workspace holding a retained result, for inspection through virtual Bash. |
No examples provided.
firecrawl_search Firecrawl web search ~1,128
Search web, news, or image sources and return ranked results with query-relevant highlights. Use it for current information, or to list businesses, people, products, jobs or events with websites, prices or contacts. Each web result is a title, URL, and description; use `firecrawl_scrape` on a result URL when the excerpt is not enough. Authenticated search also returns matching Alexandria data providers in data.tools (companies, people, jobs, finance and filings, public records and government spending, real estate, places and restaurants, retail and prices, package registries and developer data, news, research, and more). Prefer a provider over scraping pages when the task needs the same fields across several entities, exact figures or timestamps, provenance, or many records; use web results when they already answer the question. Authenticated searches always add alexandria to the sources, so sources: ["web"] also returns providers; domainTools: false turns off website-matched tools only. On an authenticated session, tool matches describe available capabilities; `firecrawl_find_tools` returns their contracts and `firecrawl_scrape` with an `alexandria` body executes a selected capability. Keyless sessions get no Alexandria matches in data.tools. For a programming question, add `categories: ["developer"]`; its hits return in `data.web` with `category: "developer"`. For a legal or regulatory question, `categories: ["gov"]` returns hits in `data.web` with `category: "gov"` and cannot be combined with other categories; authenticated sessions also have `firecrawl_gov_search` as the dedicated tool. Verify gov results' issuer, jurisdiction, status, and version before citing current law. `categories: ["research"]` restricts web results to research-affiliated websites; the `firecrawl_research_*` tools are a separate surface over paper abstracts and full text (PubMed, bioRxiv, medRxiv, arXiv). Returns source-type result groups and usage metadata. Authenticated responses ca…
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | Limit results to specific source types. `research` restricts ordinary web results to research-affiliated websites and returns page snippets, which is separate from the `firecrawl_research_*` tools th… |
| domainTools | boolean | – | Include domain-matched tools for result URLs. Defaults to true when Alexandria is combined with web, news or images; semantic-only search leaves domain matching off. |
| enterprise | array | – | – |
| excludeDomains | array | – | Hostnames to leave out of results. Mutually exclusive with includeDomains. |
| filter | string | – | – |
| highlights | boolean | – | Return query-relevant page excerpts for web and news results when available (default). Highlights appear in web `description` and news `snippet`; otherwise, original snippets are returned. Set to fal… |
| includeDomains | array | – | Hostnames to restrict results to. Mutually exclusive with excludeDomains. |
| limit | integer | – | – |
| location | string | – | – |
| query | string | yes | Query for web and semantic tool discovery. Operators include quoted phrases, `-term`, `site:host`, `inurl:term`, `intitle:term`, and `related:host`; the set is non-exhaustive. Catalogue browsing is a… |
| scrapeOptions | object | – | Fetches the full page of every web result in the same call, and each fetched result is billed as a scrape. Leave it unset unless the task needs the full text of a few results: highlights usually answ… |
| sources | array | – | Search sources; authenticated sessions default to web + alexandria, keyless sessions to web only. Authenticated searches always add alexandria to the sources, so sources: ["web"] also returns provide… |
| tbs | string | – | – |
| toolDetail | string | – | Compact by default. Compact returns only provider, capability and description; full includes contracts. Inspect selected compact tools with firecrawl_find_tools providers and capabilities. |
| Name | Type | Req | Description |
|---|---|---|---|
| creditsUsed | number|null | – | Credits this search consumed. |
| data | – | – | Ranked results grouped by source, such as `web`, `news`, `images`, and `alexandria`. Each result carries its `source` and a 1-indexed `position` within that group; pass those pairs to `firecrawl_sear… |
| error | – | – | Error message or error object when the call did not succeed. |
| feedbackTool | – | – | Pointer to the feedback tool for this search. |
| id | string|null | – | Search identifier, for optional `firecrawl_search_feedback`. |
| nextTool | – | – | A follow-up tool call that continues this search. |
| success | boolean|null | – | Whether the API call succeeded. |
| tools | – | – | Domain-matched Alexandria tools for the results. |
| warning | string|null | – | Non-fatal warning about the result. |
No examples provided.
How do I install the Firecrawl MCP Server server?
Firecrawl MCP Server runs locally as an npm package, launched with npx -y firecrawl-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · firecrawl-mcp
claude mcp add firecrawl-firecrawl-mcp-server -- npx -y firecrawl-mcp
What is the Firecrawl MCP Server server?
Firecrawl MCP Server is listed in the public MCP registry as io.github.firecrawl/firecrawl-mcp-server. Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search. This page covers its npm package (firecrawl-mcp).
Is the Firecrawl MCP Server server safe to use?
Firecrawl MCP Server scores 83 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Firecrawl MCP Server server expose?
Firecrawl MCP Server exposes 26 tools: firecrawl_scrape, firecrawl_map, firecrawl_search, firecrawl_find_tools, firecrawl_crawl, and 21 more. Their descriptions and schemas cost roughly 6,739 tokens of context every time the server is loaded.
Is the Firecrawl MCP Server server still maintained?
Firecrawl MCP Server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Firecrawl MCP Server server under?
Firecrawl MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.