brave-real-browser-mcp-server 2.14.8 → 2.14.10

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.
@@ -331,19 +331,6 @@ export const TOOLS = [
331
331
  },
332
332
  },
333
333
  // Smart Data Extractors
334
- {
335
- name: 'scrape_table',
336
- description: 'HTML tables से structured data extract करता है',
337
- inputSchema: {
338
- type: 'object',
339
- properties: {
340
- selector: { type: 'string', description: 'Table selector', default: 'table' },
341
- includeHeaders: { type: 'boolean', default: true },
342
- cleanData: { type: 'boolean', default: true },
343
- maxRows: { type: 'number', default: 1000 },
344
- },
345
- },
346
- },
347
334
  {
348
335
  name: 'extract_list',
349
336
  description: 'Bullet lists और numbered lists से data extract करता है',
@@ -433,18 +420,6 @@ export const TOOLS = [
433
420
  },
434
421
  },
435
422
  // Content Type Specific Extractors
436
- {
437
- name: 'image_scraper',
438
- description: 'सभी images URLs, alt text, dimensions के साथ extract करता है',
439
- inputSchema: {
440
- type: 'object',
441
- properties: {
442
- selector: { type: 'string', default: 'img' },
443
- includeDataUrls: { type: 'boolean', default: false },
444
- includeDimensions: { type: 'boolean', default: true },
445
- },
446
- },
447
- },
448
423
  {
449
424
  name: 'link_harvester',
450
425
  description: 'Internal/external links classification के साथ collect करता है',
@@ -469,31 +444,6 @@ export const TOOLS = [
469
444
  },
470
445
  },
471
446
  // Pagination Tools
472
- {
473
- name: 'auto_pagination',
474
- description: 'Next button automatically detect करके pages scrape करता है',
475
- inputSchema: {
476
- type: 'object',
477
- properties: {
478
- nextButtonSelector: { type: 'string' },
479
- maxPages: { type: 'number', default: 10 },
480
- dataSelector: { type: 'string' },
481
- waitBetweenPages: { type: 'number', default: 1000 },
482
- },
483
- },
484
- },
485
- {
486
- name: 'infinite_scroll',
487
- description: 'Lazy-loading pages के लिए auto-scroll करता है',
488
- inputSchema: {
489
- type: 'object',
490
- properties: {
491
- maxScrolls: { type: 'number', default: 10 },
492
- scrollDelay: { type: 'number', default: 1000 },
493
- dataSelector: { type: 'string' },
494
- },
495
- },
496
- },
497
447
  {
498
448
  name: 'multi_page_scraper',
499
449
  description: 'Multiple pages से data collect और merge करता है',
@@ -507,18 +457,6 @@ export const TOOLS = [
507
457
  required: ['urls', 'dataSelector'],
508
458
  },
509
459
  },
510
- {
511
- name: 'sitemap_parser',
512
- description: 'sitemap.xml से URLs automatically extract करता है',
513
- inputSchema: {
514
- type: 'object',
515
- properties: {
516
- sitemapUrl: { type: 'string' },
517
- maxUrls: { type: 'number', default: 100 },
518
- filterPattern: { type: 'string' },
519
- },
520
- },
521
- },
522
460
  {
523
461
  name: 'breadcrumb_navigator',
524
462
  description: 'Site structure follow करके navigation path extract करता है',
@@ -531,21 +469,6 @@ export const TOOLS = [
531
469
  },
532
470
  },
533
471
  // Data Processing Tools
534
- {
535
- name: 'smart_text_cleaner',
536
- description: 'Text cleaning - whitespace, special characters remove करता है',
537
- inputSchema: {
538
- type: 'object',
539
- properties: {
540
- text: { type: 'string' },
541
- removeExtraWhitespace: { type: 'boolean', default: true },
542
- removeSpecialChars: { type: 'boolean', default: false },
543
- toLowerCase: { type: 'boolean', default: false },
544
- trim: { type: 'boolean', default: true },
545
- },
546
- required: ['text'],
547
- },
548
- },
549
472
  {
550
473
  name: 'html_to_text',
551
474
  description: 'HTML को clean text में convert करता है',
@@ -559,44 +482,7 @@ export const TOOLS = [
559
482
  required: ['html'],
560
483
  },
561
484
  },
562
- {
563
- name: 'contact_extractor',
564
- description: 'Phone numbers और email addresses automatically detect करता है',
565
- inputSchema: {
566
- type: 'object',
567
- properties: {
568
- text: { type: 'string' },
569
- types: { type: 'array', items: { type: 'string', enum: ['phone', 'email'] } },
570
- defaultCountry: { type: 'string', default: 'US' },
571
- },
572
- required: ['text'],
573
- },
574
- },
575
485
  // Data Validation Tools
576
- {
577
- name: 'schema_validator',
578
- description: 'JSON schema के against data validate करता है',
579
- inputSchema: {
580
- type: 'object',
581
- properties: {
582
- data: { type: 'object' },
583
- schema: { type: 'object' },
584
- },
585
- required: ['data', 'schema'],
586
- },
587
- },
588
- {
589
- name: 'required_fields_checker',
590
- description: 'Missing required fields check करता है',
591
- inputSchema: {
592
- type: 'object',
593
- properties: {
594
- data: { type: 'object' },
595
- requiredFields: { type: 'array', items: { type: 'string' } },
596
- },
597
- required: ['data', 'requiredFields'],
598
- },
599
- },
600
486
  {
601
487
  name: 'duplicate_remover',
602
488
  description: 'Array से duplicate items remove करता है',
@@ -634,43 +520,6 @@ export const TOOLS = [
634
520
  },
635
521
  },
636
522
  },
637
- {
638
- name: 'sentiment_analysis',
639
- description: 'Analyze sentiment of page content or text',
640
- inputSchema: {
641
- type: 'object',
642
- properties: {
643
- url: { type: 'string' },
644
- selector: { type: 'string' },
645
- text: { type: 'string' },
646
- },
647
- },
648
- },
649
- {
650
- name: 'summary_generator',
651
- description: 'Generate summary of page content using TF-IDF',
652
- inputSchema: {
653
- type: 'object',
654
- properties: {
655
- url: { type: 'string' },
656
- maxSentences: { type: 'number', default: 5 },
657
- selector: { type: 'string' },
658
- },
659
- },
660
- },
661
- {
662
- name: 'translation_support',
663
- description: 'Detect language and provide translation info',
664
- inputSchema: {
665
- type: 'object',
666
- properties: {
667
- url: { type: 'string' },
668
- selector: { type: 'string' },
669
- text: { type: 'string' },
670
- targetLanguage: { type: 'string', default: 'en' },
671
- },
672
- },
673
- },
674
523
  // Search & Filter Tools (5 tools)
675
524
  {
676
525
  name: 'keyword_search',
@@ -758,19 +607,6 @@ export const TOOLS = [
758
607
  required: ['data'],
759
608
  },
760
609
  },
761
- {
762
- name: 'missing_data_handler',
763
- description: 'Detect and handle missing data',
764
- inputSchema: {
765
- type: 'object',
766
- properties: {
767
- data: { type: 'array' },
768
- requiredFields: { type: 'array', items: { type: 'string' } },
769
- strategy: { type: 'string', enum: ['report', 'remove', 'fill', 'flag'], default: 'report' },
770
- },
771
- required: ['data'],
772
- },
773
- },
774
610
  {
775
611
  name: 'data_type_validator',
776
612
  description: 'Validate data types against JSON schema',
@@ -1106,17 +942,6 @@ export const TOOLS = [
1106
942
  },
1107
943
  },
1108
944
  },
1109
- {
1110
- name: 'session_persistence',
1111
- description: 'Save and restore browser session',
1112
- inputSchema: {
1113
- type: 'object',
1114
- properties: {
1115
- action: { type: 'string', enum: ['save', 'restore'], default: 'save' },
1116
- sessionData: { type: 'object' },
1117
- },
1118
- },
1119
- },
1120
945
  {
1121
946
  name: 'form_auto_fill',
1122
947
  description: 'Automatically fill form fields',
@@ -1141,32 +966,6 @@ export const TOOLS = [
1141
966
  },
1142
967
  },
1143
968
  },
1144
- {
1145
- name: 'modal_popup_handler',
1146
- description: 'Handle modal popups (detect, close)',
1147
- inputSchema: {
1148
- type: 'object',
1149
- properties: {
1150
- action: { type: 'string', enum: ['detect', 'close'], default: 'detect' },
1151
- closeSelector: { type: 'string' },
1152
- },
1153
- },
1154
- },
1155
- {
1156
- name: 'login_session_manager',
1157
- description: 'Manage login sessions',
1158
- inputSchema: {
1159
- type: 'object',
1160
- properties: {
1161
- action: { type: 'string', enum: ['check', 'login', 'logout'], default: 'check' },
1162
- username: { type: 'string' },
1163
- password: { type: 'string' },
1164
- usernameSelector: { type: 'string' },
1165
- passwordSelector: { type: 'string' },
1166
- submitSelector: { type: 'string' },
1167
- },
1168
- },
1169
- },
1170
969
  // Monitoring & Reporting
1171
970
  {
1172
971
  name: 'progress_tracker',
@@ -1362,9 +1161,102 @@ export const TOOLS = [
1362
1161
  description: 'Detect ad-protection mechanisms including ad-block detection, anti-debugger code, popup layers, and hidden elements.',
1363
1162
  inputSchema: {
1364
1163
  type: 'object',
1365
- properties: {},
1164
+ properties: {
1165
+ url: { type: 'string', description: 'URL of the page to analyze (optional)' },
1166
+ selector: { type: 'string', description: 'CSS selector for content to analyze (optional)' },
1167
+ text: { type: 'string', description: 'Direct text to analyze (optional)' },
1168
+ criteria: { type: 'object', description: 'Visual criteria (visible, color, size, etc.)' },
1169
+ },
1366
1170
  },
1367
1171
  },
1172
+ {
1173
+ name: 'sentiment_analysis',
1174
+ description: 'Analyze the sentiment of text or page content',
1175
+ inputSchema: {
1176
+ type: 'object',
1177
+ properties: {
1178
+ text: { type: 'string', description: 'Text to analyze' },
1179
+ url: { type: 'string', description: 'URL to analyze' },
1180
+ selector: { type: 'string', description: 'Selector to extract text from' }
1181
+ }
1182
+ }
1183
+ },
1184
+ {
1185
+ name: 'summary_generator',
1186
+ description: 'Generate a summary of text or page content',
1187
+ inputSchema: {
1188
+ type: 'object',
1189
+ properties: {
1190
+ text: { type: 'string', description: 'Text to summarize' },
1191
+ url: { type: 'string', description: 'URL to summarize' },
1192
+ selector: { type: 'string', description: 'Selector to extract text from' },
1193
+ maxLength: { type: 'number', description: 'Maximum length of summary' }
1194
+ }
1195
+ }
1196
+ },
1197
+ {
1198
+ name: 'translation_support',
1199
+ description: 'Detect language and translate text',
1200
+ inputSchema: {
1201
+ type: 'object',
1202
+ properties: {
1203
+ text: { type: 'string', description: 'Text to translate' },
1204
+ url: { type: 'string', description: 'URL to translate content from' },
1205
+ targetLanguage: { type: 'string', description: 'Target language code (e.g. "es", "fr")' }
1206
+ }
1207
+ }
1208
+ },
1209
+ // Phase 3: Media & Video Tools
1210
+ {
1211
+ name: 'video_source_extractor',
1212
+ description: 'Extract raw video sources from video tags and sources',
1213
+ inputSchema: {
1214
+ type: 'object',
1215
+ properties: {
1216
+ url: { type: 'string' }
1217
+ }
1218
+ }
1219
+ },
1220
+ {
1221
+ name: 'video_player_finder',
1222
+ description: 'Identify video players (JWPlayer, VideoJS, etc) and extract config',
1223
+ inputSchema: {
1224
+ type: 'object',
1225
+ properties: {
1226
+ url: { type: 'string' }
1227
+ }
1228
+ }
1229
+ },
1230
+ {
1231
+ name: 'stream_detector',
1232
+ description: 'Detects HLS (m3u8) and DASH (mpd) streams from network traffic',
1233
+ inputSchema: {
1234
+ type: 'object',
1235
+ properties: {
1236
+ duration: { type: 'number', description: 'Monitoring duration in ms' }
1237
+ }
1238
+ }
1239
+ },
1240
+ {
1241
+ name: 'redirect_tracer',
1242
+ description: 'Trace URL redirects to find final destination',
1243
+ inputSchema: {
1244
+ type: 'object',
1245
+ properties: {
1246
+ url: { type: 'string' }
1247
+ }
1248
+ }
1249
+ },
1250
+ {
1251
+ name: 'video_download_link_finder',
1252
+ description: 'Find direct download links for video files',
1253
+ inputSchema: {
1254
+ type: 'object',
1255
+ properties: {
1256
+ extensions: { type: 'array', items: { type: 'string' } }
1257
+ }
1258
+ }
1259
+ }
1368
1260
  ];
1369
1261
  // Tool name constants for type safety
1370
1262
  export const TOOL_NAMES = {
@@ -1381,7 +1273,6 @@ export const TOOL_NAMES = {
1381
1273
  FIND_SELECTOR: 'find_selector',
1382
1274
  SAVE_CONTENT_AS_MARKDOWN: 'save_content_as_markdown',
1383
1275
  // Smart Data Extractors
1384
- SCRAPE_TABLE: 'scrape_table',
1385
1276
  EXTRACT_LIST: 'extract_list',
1386
1277
  EXTRACT_JSON: 'extract_json',
1387
1278
  SCRAPE_META_TAGS: 'scrape_meta_tags',
@@ -1391,22 +1282,26 @@ export const TOOL_NAMES = {
1391
1282
  NESTED_DATA_EXTRACTION: 'nested_data_extraction',
1392
1283
  ATTRIBUTE_HARVESTER: 'attribute_harvester',
1393
1284
  // Content Type Specific
1394
- IMAGE_SCRAPER: 'image_scraper',
1395
1285
  LINK_HARVESTER: 'link_harvester',
1396
1286
  MEDIA_EXTRACTOR: 'media_extractor',
1287
+ // DOM & HTML Extraction (Phase 1)
1288
+ HTML_ELEMENTS_EXTRACTOR: 'html_elements_extractor',
1289
+ TAGS_FINDER: 'tags_finder',
1290
+ LINKS_FINDER: 'links_finder',
1291
+ XPATH_LINKS: 'xpath_links',
1292
+ SHADOW_DOM_EXTRACTOR: 'shadow_dom_extractor',
1293
+ IFRAME_EXTRACTOR: 'iframe_extractor',
1294
+ EMBED_PAGE_EXTRACTOR: 'embed_page_extractor',
1295
+ // Network Tools (Phase 1)
1296
+ AJAX_EXTRACTOR: 'ajax_extractor',
1297
+ FETCH_XHR: 'fetch_xhr',
1298
+ NETWORK_RECORDER: 'network_recorder',
1299
+ API_FINDER: 'api_finder',
1397
1300
  // Pagination Tools
1398
- AUTO_PAGINATION: 'auto_pagination',
1399
- INFINITE_SCROLL: 'infinite_scroll',
1400
1301
  MULTI_PAGE_SCRAPER: 'multi_page_scraper',
1401
- SITEMAP_PARSER: 'sitemap_parser',
1402
1302
  BREADCRUMB_NAVIGATOR: 'breadcrumb_navigator',
1403
1303
  // Data Processing
1404
- SMART_TEXT_CLEANER: 'smart_text_cleaner',
1405
1304
  HTML_TO_TEXT: 'html_to_text',
1406
- CONTACT_EXTRACTOR: 'contact_extractor',
1407
- // Data Validation
1408
- SCHEMA_VALIDATOR: 'schema_validator',
1409
- REQUIRED_FIELDS_CHECKER: 'required_fields_checker',
1410
1305
  DUPLICATE_REMOVER: 'duplicate_remover',
1411
1306
  // AI-Powered Features
1412
1307
  SMART_SELECTOR_GENERATOR: 'smart_selector_generator',
@@ -1414,6 +1309,12 @@ export const TOOL_NAMES = {
1414
1309
  SENTIMENT_ANALYSIS: 'sentiment_analysis',
1415
1310
  SUMMARY_GENERATOR: 'summary_generator',
1416
1311
  TRANSLATION_SUPPORT: 'translation_support',
1312
+ // Phase 3: Media & Video
1313
+ VIDEO_SOURCE_EXTRACTOR: 'video_source_extractor',
1314
+ VIDEO_PLAYER_FINDER: 'video_player_finder',
1315
+ STREAM_DETECTOR: 'stream_detector',
1316
+ REDIRECT_TRACER: 'redirect_tracer',
1317
+ VIDEO_DOWNLOAD_LINK_FINDER: 'video_download_link_finder',
1417
1318
  // Search & Filter Tools
1418
1319
  KEYWORD_SEARCH: 'keyword_search',
1419
1320
  REGEX_PATTERN_MATCHER: 'regex_pattern_matcher',
@@ -1422,10 +1323,8 @@ export const TOOL_NAMES = {
1422
1323
  VISUAL_ELEMENT_FINDER: 'visual_element_finder',
1423
1324
  // Data Quality & Validation
1424
1325
  DATA_DEDUPLICATION: 'data_deduplication',
1425
- MISSING_DATA_HANDLER: 'missing_data_handler',
1426
1326
  DATA_TYPE_VALIDATOR: 'data_type_validator',
1427
1327
  OUTLIER_DETECTION: 'outlier_detection',
1428
- CONSISTENCY_CHECKER: 'consistency_checker',
1429
1328
  // Advanced Captcha Handling
1430
1329
  OCR_ENGINE: 'ocr_engine',
1431
1330
  AUDIO_CAPTCHA_SOLVER: 'audio_captcha_solver',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-browser-mcp-server",
3
- "version": "2.14.8",
3
+ "version": "2.14.10",
4
4
  "description": "Universal AI IDE MCP Server - Auto-detects and supports all AI IDEs (Claude Desktop, Cursor, Windsurf, Cline, Zed, VSCode, Qoder AI, etc.) with Brave browser automation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -41,25 +41,16 @@
41
41
  "brave-real-browser": "^1.5.105",
42
42
  "brave-real-launcher": "^1.2.29",
43
43
  "brave-real-puppeteer-core": "^24.33.0-patch.1",
44
- "cheerio": "^1.0.0-rc.12",
45
- "chrono-node": "^2.7.0",
46
44
  "compromise": "^14.13.0",
47
45
  "dotenv": "^17.2.3",
48
- "franc": "^6.2.0",
49
- "libphonenumber-js": "^1.10.51",
50
- "natural": "^6.12.0",
51
46
  "pixelmatch": "^5.3.0",
52
47
  "pngjs": "^7.0.0",
53
48
  "puppeteer-screen-recorder": "^3.0.6",
54
- "sentiment": "^5.0.2",
55
49
  "tesseract.js": "^5.0.5",
56
- "turndown": "^7.2.2",
57
- "xml2js": "^0.6.2"
50
+ "turndown": "^7.2.2"
58
51
  },
59
52
  "devDependencies": {
60
- "@types/cheerio": "^0.22.35",
61
53
  "@types/node": "latest",
62
- "@types/xml2js": "^0.4.14",
63
54
  "@vitest/coverage-v8": "^3.2.4",
64
55
  "@vitest/ui": "^3.2.4",
65
56
  "rimraf": "^6.1.2",