firecrawl-mcp 3.6.2 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
File without changes
package/dist/index.js CHANGED
@@ -210,7 +210,9 @@ const scrapeParamsSchema = z.object({
210
210
  })
211
211
  .optional(),
212
212
  storeInCache: z.boolean().optional(),
213
+ zeroDataRetention: z.boolean().optional(),
213
214
  maxAge: z.number().optional(),
215
+ proxy: z.enum(['basic', 'stealth', 'auto']).optional(),
214
216
  });
215
217
  server.addTool({
216
218
  name: 'firecrawl_scrape',
@@ -366,6 +368,7 @@ The query also supports search operators, that you can use if needed to refine t
366
368
  .array(z.object({ type: z.enum(['web', 'images', 'news']) }))
367
369
  .optional(),
368
370
  scrapeOptions: scrapeParamsSchema.omit({ url: true }).partial().optional(),
371
+ enterprise: z.array(z.enum(['default', 'anon', 'zdr'])).optional(),
369
372
  }),
370
373
  execute: async (args, { session, log }) => {
371
374
  const client = getClient(session);
@@ -539,6 +542,116 @@ Extract structured information from web pages using LLM capabilities. Supports b
539
542
  return asText(res);
540
543
  },
541
544
  });
545
+ server.addTool({
546
+ name: 'firecrawl_agent',
547
+ description: `
548
+ Autonomous web data gathering agent. Describe what data you want, and the agent searches, navigates, and extracts it from anywhere on the web.
549
+
550
+ **Best for:** Complex data gathering tasks where you don't know the exact URLs; research tasks requiring multiple sources; finding data in hard-to-reach places.
551
+ **Not recommended for:** Simple single-page scraping (use scrape); when you already know the exact URL (use scrape or extract).
552
+ **Key advantages over extract:**
553
+ - No URLs required - just describe what you need
554
+ - Autonomously searches and navigates the web
555
+ - Faster and more cost-effective for complex tasks
556
+ - Higher reliability for varied queries
557
+
558
+ **Arguments:**
559
+ - prompt: Natural language description of the data you want (required, max 10,000 characters)
560
+ - urls: Optional array of URLs to focus the agent on specific pages
561
+ - schema: Optional JSON schema for structured output
562
+
563
+ **Prompt Example:** "Find the founders of Firecrawl and their backgrounds"
564
+ **Usage Example (no URLs):**
565
+ \`\`\`json
566
+ {
567
+ "name": "firecrawl_agent",
568
+ "arguments": {
569
+ "prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
570
+ "schema": {
571
+ "type": "object",
572
+ "properties": {
573
+ "startups": {
574
+ "type": "array",
575
+ "items": {
576
+ "type": "object",
577
+ "properties": {
578
+ "name": { "type": "string" },
579
+ "funding": { "type": "string" },
580
+ "founded": { "type": "string" }
581
+ }
582
+ }
583
+ }
584
+ }
585
+ }
586
+ }
587
+ }
588
+ \`\`\`
589
+ **Usage Example (with URLs):**
590
+ \`\`\`json
591
+ {
592
+ "name": "firecrawl_agent",
593
+ "arguments": {
594
+ "urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
595
+ "prompt": "Compare the features and pricing information from these pages"
596
+ }
597
+ }
598
+ \`\`\`
599
+ **Returns:** Extracted data matching your prompt/schema, plus credits used.
600
+ `,
601
+ parameters: z.object({
602
+ prompt: z.string().min(1).max(10000),
603
+ urls: z.array(z.string().url()).optional(),
604
+ schema: z.record(z.string(), z.any()).optional(),
605
+ }),
606
+ execute: async (args, { session, log }) => {
607
+ const client = getClient(session);
608
+ const a = args;
609
+ log.info('Starting agent', {
610
+ prompt: a.prompt.substring(0, 100),
611
+ urlCount: Array.isArray(a.urls) ? a.urls.length : 0,
612
+ });
613
+ const agentBody = removeEmptyTopLevel({
614
+ prompt: a.prompt,
615
+ urls: a.urls,
616
+ schema: a.schema || undefined,
617
+ });
618
+ const res = await client.agent({
619
+ ...agentBody,
620
+ origin: ORIGIN,
621
+ });
622
+ return asText(res);
623
+ },
624
+ });
625
+ server.addTool({
626
+ name: 'firecrawl_agent_status',
627
+ description: `
628
+ Check the status of an agent job.
629
+
630
+ **Usage Example:**
631
+ \`\`\`json
632
+ {
633
+ "name": "firecrawl_agent_status",
634
+ "arguments": {
635
+ "id": "550e8400-e29b-41d4-a716-446655440000"
636
+ }
637
+ }
638
+ \`\`\`
639
+ **Possible statuses:**
640
+ - processing: Agent is still working
641
+ - completed: Extraction finished successfully
642
+ - failed: An error occurred
643
+
644
+ **Returns:** Status, progress, and results (if completed) of the agent job.
645
+ `,
646
+ parameters: z.object({ id: z.string() }),
647
+ execute: async (args, { session, log }) => {
648
+ const client = getClient(session);
649
+ const { id } = args;
650
+ log.info('Checking agent status', { id });
651
+ const res = await client.getAgentStatus(id);
652
+ return asText(res);
653
+ },
654
+ });
542
655
  const PORT = Number(process.env.PORT || 3000);
543
656
  const HOST = process.env.CLOUD_SERVICE === 'true'
544
657
  ? '0.0.0.0'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firecrawl-mcp",
3
- "version": "3.6.2",
3
+ "version": "3.7.0",
4
4
  "description": "MCP server for Firecrawl web scraping integration. Supports both cloud and self-hosted instances. Features include web scraping, search, batch processing, structured data extraction, and LLM-powered content analysis.",
5
5
  "type": "module",
6
6
  "mcpName": "io.github.firecrawl/firecrawl-mcp-server",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@mendable/firecrawl-js": "^4.3.6",
31
+ "@mendable/firecrawl-js": "^4.9.3",
32
32
  "dotenv": "^17.2.2",
33
33
  "firecrawl-fastmcp": "^1.0.4",
34
34
  "typescript": "^5.9.2",