firecrawl-mcp 3.19.0 → 3.20.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/README.md CHANGED
@@ -18,7 +18,6 @@ A Model Context Protocol (MCP) server that brings [Firecrawl](https://github.com
18
18
  - Scrape any URL into clean, structured data
19
19
  - Interact with pages — click, navigate, and operate
20
20
  - Deep research with autonomous agent
21
- - Cloud browser sessions with agent-browser automation
22
21
  - Automatic retries and rate limiting
23
22
  - Cloud and self-hosted support
24
23
  - SSE support
@@ -328,7 +327,6 @@ Use this guide to select the right tool for your task:
328
327
  - **If you need complex research across multiple unknown sources:** use **agent**
329
328
  - **If you want to analyze a whole site or section:** use **crawl** (with limits!)
330
329
  - **If you need interactive browser automation** (click, type, navigate): use **scrape** + **interact**
331
- - **If you need a raw CDP browser session** (advanced): use **browser** (deprecated)
332
330
 
333
331
  ### Quick Reference Table
334
332
 
@@ -341,7 +339,6 @@ Use this guide to select the right tool for your task:
341
339
  | crawl | Multi-page extraction (with limits) | markdown/html[] |
342
340
  | search | Web search for info | results[] |
343
341
  | agent | Complex multi-source research | JSON (structured data) |
344
- | browser | Interactive multi-step automation (deprecated) | Session with live browser |
345
342
 
346
343
  ### Format Selection Guide
347
344
 
@@ -886,6 +883,8 @@ Create and manage recurring page monitors. Monitors run scheduled scrapes or cra
886
883
 
887
884
  Use `page` or `pages` plus `goal`. The MCP server builds the monitor request with a 30-minute schedule and the API enables meaningful-change judging automatically.
888
885
 
886
+ Meaningful-change judging runs automatically when `goal` is set. Page webhooks expose `isMeaningful` and `judgment` on `monitor.page` events.
887
+
889
888
  Write goals as concise 2-3 sentence monitor instructions. Say what should trigger an alert, preserve any scope the user gave, and include intent-specific exclusions only when obvious from the request. Generic noise such as whitespace, formatting-only changes, request IDs, tracking params, generic metadata, and unrelated page chrome is already handled by the judge, so do not repeat it in every goal. If the user is vague, keep the goal broad; if they ask for broad monitoring or "any change", preserve that. If the user says they do not care about something, include that explicitly.
890
889
 
891
890
  ```json
@@ -938,111 +937,6 @@ Pass `body` when you need crawl targets, JSON change tracking, custom retention,
938
937
  - `firecrawl_monitor_checks`: list checks, optionally filtered by status.
939
938
  - `firecrawl_monitor_check`: get page-level results, including `diff`, `snapshot`, `judgment.meaningful`, and `judgment.meaningfulChanges`.
940
939
 
941
- ### 12. Browser Create (`firecrawl_browser_create`) — Deprecated
942
-
943
- > **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead. Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
944
-
945
- Create a cloud browser session for interactive automation.
946
-
947
- **Arguments:**
948
-
949
- - `ttl`: Total session lifetime in seconds (30-3600, optional)
950
- - `activityTtl`: Idle timeout in seconds (10-3600, optional)
951
- - `streamWebView`: Whether to enable live view streaming (optional)
952
- - `profile`: Save and reuse browser state across sessions (optional)
953
- - `name`: Profile name (sessions with the same name share state)
954
- - `saveChanges`: Whether to save changes back to the profile (default: true)
955
-
956
- **Usage Example:**
957
-
958
- ```json
959
- {
960
- "name": "firecrawl_browser_create",
961
- "arguments": {
962
- "ttl": 600,
963
- "profile": { "name": "my-profile", "saveChanges": true }
964
- }
965
- }
966
- ```
967
-
968
- **Returns:**
969
-
970
- - Session ID, CDP URL, and live view URL
971
-
972
- ### 13. Browser Execute (`firecrawl_browser_execute`) — Deprecated
973
-
974
- > **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
975
-
976
- Execute code in a browser session. Supports agent-browser commands (bash), Python, or JavaScript.
977
-
978
- **Recommended: Use bash with agent-browser commands** (pre-installed in every sandbox):
979
-
980
- ```json
981
- {
982
- "name": "firecrawl_browser_execute",
983
- "arguments": {
984
- "sessionId": "session-id-here",
985
- "code": "agent-browser open https://example.com",
986
- "language": "bash"
987
- }
988
- }
989
- ```
990
-
991
- **Common agent-browser commands:**
992
-
993
- | Command | Description |
994
- | ------------------------------- | -------------------------------------- |
995
- | `agent-browser open <url>` | Navigate to URL |
996
- | `agent-browser snapshot` | Accessibility tree with clickable refs |
997
- | `agent-browser click @e5` | Click element by ref from snapshot |
998
- | `agent-browser type @e3 "text"` | Type into element |
999
- | `agent-browser get title` | Get page title |
1000
- | `agent-browser screenshot` | Take screenshot |
1001
- | `agent-browser --help` | Full command reference |
1002
-
1003
- **For Playwright scripting, use Python:**
1004
-
1005
- ```json
1006
- {
1007
- "name": "firecrawl_browser_execute",
1008
- "arguments": {
1009
- "sessionId": "session-id-here",
1010
- "code": "await page.goto('https://example.com')\ntitle = await page.title()\nprint(title)",
1011
- "language": "python"
1012
- }
1013
- }
1014
- ```
1015
-
1016
- ### 14. Browser List (`firecrawl_browser_list`) — Deprecated
1017
-
1018
- > **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
1019
-
1020
- List browser sessions, optionally filtered by status.
1021
-
1022
- ```json
1023
- {
1024
- "name": "firecrawl_browser_list",
1025
- "arguments": {
1026
- "status": "active"
1027
- }
1028
- }
1029
- ```
1030
-
1031
- ### 15. Browser Delete (`firecrawl_browser_delete`) — Deprecated
1032
-
1033
- > **Deprecated:** Prefer `firecrawl_scrape` + `firecrawl_interact` instead.
1034
-
1035
- Destroy a browser session.
1036
-
1037
- ```json
1038
- {
1039
- "name": "firecrawl_browser_delete",
1040
- "arguments": {
1041
- "sessionId": "session-id-here"
1042
- }
1043
- }
1044
- ```
1045
-
1046
940
  ## Logging System
1047
941
 
1048
942
  The server includes comprehensive logging:
package/dist/index.js CHANGED
@@ -1203,204 +1203,6 @@ Check the status of an agent job and retrieve results when complete. Use this to
1203
1203
  return asText(res);
1204
1204
  },
1205
1205
  });
1206
- // Browser session tools (deprecated — prefer firecrawl_scrape + firecrawl_interact)
1207
- server.addTool({
1208
- name: 'firecrawl_browser_create',
1209
- annotations: {
1210
- title: 'Create browser session',
1211
- readOnlyHint: false,
1212
- openWorldHint: false,
1213
- destructiveHint: false,
1214
- },
1215
- description: `
1216
- **DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.** Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
1217
-
1218
- Create a browser session for code execution via CDP (Chrome DevTools Protocol).
1219
-
1220
- **Arguments:**
1221
- - ttl: Total session lifetime in seconds (30-3600, optional)
1222
- - activityTtl: Idle timeout in seconds (10-3600, optional)
1223
- - streamWebView: Whether to enable live view streaming (optional)
1224
- - profile: Save and reuse browser state (cookies, localStorage) across sessions (optional)
1225
- - name: Profile name (sessions with the same name share state)
1226
- - saveChanges: Whether to save changes back to the profile (default: true)
1227
-
1228
- **Usage Example:**
1229
- \`\`\`json
1230
- {
1231
- "name": "firecrawl_browser_create",
1232
- "arguments": {
1233
- "profile": { "name": "my-profile", "saveChanges": true }
1234
- }
1235
- }
1236
- \`\`\`
1237
- **Returns:** Session ID, CDP URL, and live view URL.
1238
- `,
1239
- parameters: z.object({
1240
- ttl: z.number().min(30).max(3600).optional(),
1241
- activityTtl: z.number().min(10).max(3600).optional(),
1242
- streamWebView: z.boolean().optional(),
1243
- profile: z
1244
- .object({
1245
- name: z.string().min(1).max(128),
1246
- saveChanges: z.boolean().default(true),
1247
- })
1248
- .optional(),
1249
- }),
1250
- execute: async (args, { session, log }) => {
1251
- const client = getClient(session);
1252
- const a = args;
1253
- const cleaned = removeEmptyTopLevel(a);
1254
- log.info('Creating browser session');
1255
- const res = await client.browser(cleaned);
1256
- return asText(res);
1257
- },
1258
- });
1259
- if (!SAFE_MODE) {
1260
- server.addTool({
1261
- name: 'firecrawl_browser_execute',
1262
- annotations: {
1263
- title: 'Run code in browser session',
1264
- readOnlyHint: false,
1265
- openWorldHint: false,
1266
- destructiveHint: true,
1267
- },
1268
- description: `
1269
- **DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.** Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.
1270
-
1271
- Execute code in a browser session. Supports agent-browser commands (bash), Python, or JavaScript.
1272
- **Requires:** An active browser session (create one with firecrawl_browser_create first).
1273
-
1274
- **Arguments:**
1275
- - sessionId: The browser session ID (required)
1276
- - code: The code to execute (required)
1277
- - language: "bash", "python", or "node" (optional, defaults to "bash")
1278
-
1279
- **Recommended: Use bash with agent-browser commands** (pre-installed in every sandbox):
1280
- \`\`\`json
1281
- {
1282
- "name": "firecrawl_browser_execute",
1283
- "arguments": {
1284
- "sessionId": "session-id-here",
1285
- "code": "agent-browser open https://example.com",
1286
- "language": "bash"
1287
- }
1288
- }
1289
- \`\`\`
1290
-
1291
- **Common agent-browser commands:**
1292
- - \`agent-browser open <url>\` — Navigate to URL
1293
- - \`agent-browser snapshot\` — Get accessibility tree with clickable refs (for AI)
1294
- - \`agent-browser snapshot -i -c\` — Interactive elements only, compact
1295
- - \`agent-browser click @e5\` — Click element by ref from snapshot
1296
- - \`agent-browser type @e3 "text"\` — Type into element
1297
- - \`agent-browser fill @e3 "text"\` — Clear and fill element
1298
- - \`agent-browser get text @e1\` — Get text content
1299
- - \`agent-browser get title\` — Get page title
1300
- - \`agent-browser get url\` — Get current URL
1301
- - \`agent-browser screenshot [path]\` — Take screenshot
1302
- - \`agent-browser scroll down\` — Scroll page
1303
- - \`agent-browser wait 2000\` — Wait 2 seconds
1304
- - \`agent-browser --help\` — Full command reference
1305
-
1306
- **For Playwright scripting, use Python** (has proper async/await support):
1307
- \`\`\`json
1308
- {
1309
- "name": "firecrawl_browser_execute",
1310
- "arguments": {
1311
- "sessionId": "session-id-here",
1312
- "code": "await page.goto('https://example.com')\\ntitle = await page.title()\\nprint(title)",
1313
- "language": "python"
1314
- }
1315
- }
1316
- \`\`\`
1317
-
1318
- **Note:** Prefer bash (agent-browser) or Python.
1319
- **Returns:** Execution result including stdout, stderr, and exit code.
1320
- `,
1321
- parameters: z.object({
1322
- sessionId: z.string(),
1323
- code: z.string(),
1324
- language: z.enum(['bash', 'python', 'node']).optional(),
1325
- }),
1326
- execute: async (args, { session, log }) => {
1327
- const client = getClient(session);
1328
- const { sessionId, code, language } = args;
1329
- log.info('Executing code in browser session', { sessionId });
1330
- const res = await client.browserExecute(sessionId, { code, language });
1331
- return asText(res);
1332
- },
1333
- });
1334
- }
1335
- server.addTool({
1336
- name: 'firecrawl_browser_delete',
1337
- annotations: {
1338
- title: 'Delete browser session',
1339
- readOnlyHint: false,
1340
- openWorldHint: false,
1341
- destructiveHint: true,
1342
- },
1343
- description: `
1344
- **DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.**
1345
-
1346
- Destroy a browser session.
1347
-
1348
- **Usage Example:**
1349
- \`\`\`json
1350
- {
1351
- "name": "firecrawl_browser_delete",
1352
- "arguments": {
1353
- "sessionId": "session-id-here"
1354
- }
1355
- }
1356
- \`\`\`
1357
- **Returns:** Success confirmation.
1358
- `,
1359
- parameters: z.object({
1360
- sessionId: z.string(),
1361
- }),
1362
- execute: async (args, { session, log }) => {
1363
- const client = getClient(session);
1364
- const { sessionId } = args;
1365
- log.info('Deleting browser session', { sessionId });
1366
- const res = await client.deleteBrowser(sessionId);
1367
- return asText(res);
1368
- },
1369
- });
1370
- server.addTool({
1371
- name: 'firecrawl_browser_list',
1372
- annotations: {
1373
- title: 'List browser sessions',
1374
- readOnlyHint: true,
1375
- openWorldHint: false,
1376
- },
1377
- description: `
1378
- **DEPRECATED — prefer firecrawl_scrape + firecrawl_interact instead.**
1379
-
1380
- List browser sessions, optionally filtered by status.
1381
-
1382
- **Usage Example:**
1383
- \`\`\`json
1384
- {
1385
- "name": "firecrawl_browser_list",
1386
- "arguments": {
1387
- "status": "active"
1388
- }
1389
- }
1390
- \`\`\`
1391
- **Returns:** Array of browser sessions.
1392
- `,
1393
- parameters: z.object({
1394
- status: z.enum(['active', 'destroyed']).optional(),
1395
- }),
1396
- execute: async (args, { session, log }) => {
1397
- const client = getClient(session);
1398
- const { status } = args;
1399
- log.info('Listing browser sessions', { status });
1400
- const res = await client.listBrowsers({ status });
1401
- return asText(res);
1402
- },
1403
- });
1404
1206
  // Interact tools (scrape-bound browser sessions)
1405
1207
  server.addTool({
1406
1208
  name: 'firecrawl_interact',
package/dist/monitor.js CHANGED
@@ -127,6 +127,8 @@ Create a Firecrawl monitor — a recurring scrape or crawl that diffs each resul
127
127
 
128
128
  Prefer the simple path: pass \`page\` or \`pages\` plus \`goal\`. The tool will create a scrape monitor with a 30-minute schedule and meaningful-change judging enabled by the API. Use \`body\` only for advanced requests such as crawl targets, JSON change tracking, custom retention, or manual \`judgeEnabled\` control.
129
129
 
130
+ Meaningful-change judge: set \`goal\` to a plain-language description of what the user actually cares about. \`judgeEnabled\` defaults to true when \`goal\` is set, so providing \`goal\` is enough. Page webhooks expose \`isMeaningful\` and \`judgment\` on \`monitor.page\` events.
131
+
130
132
  Simple fields:
131
133
  - \`page\`: one page URL to monitor.
132
134
  - \`pages\`: multiple page URLs to monitor.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firecrawl-mcp",
3
- "version": "3.19.0",
3
+ "version": "3.20.0",
4
4
  "description": "MCP server for Firecrawl — search, scrape, and interact with the web. Supports both cloud and self-hosted instances. Features include web search, scraping, page interaction, batch processing, and LLM-powered content analysis.",
5
5
  "type": "module",
6
6
  "mcpName": "io.github.firecrawl/firecrawl-mcp-server",