@ai-jshook/mcp 0.1.1
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/.env.example +38 -0
- package/CLAUDE.md +170 -0
- package/README.md +564 -0
- package/bun.lock +1484 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/analyzer/AISummarizer.d.ts +41 -0
- package/dist/modules/analyzer/AISummarizer.d.ts.map +1 -0
- package/dist/modules/analyzer/AISummarizer.js +186 -0
- package/dist/modules/analyzer/AISummarizer.js.map +1 -0
- package/dist/modules/analyzer/CodeAnalyzer.d.ts +28 -0
- package/dist/modules/analyzer/CodeAnalyzer.d.ts.map +1 -0
- package/dist/modules/analyzer/CodeAnalyzer.js +1287 -0
- package/dist/modules/analyzer/CodeAnalyzer.js.map +1 -0
- package/dist/modules/analyzer/IntelligentAnalyzer.d.ts +114 -0
- package/dist/modules/analyzer/IntelligentAnalyzer.d.ts.map +1 -0
- package/dist/modules/analyzer/IntelligentAnalyzer.js +1176 -0
- package/dist/modules/analyzer/IntelligentAnalyzer.js.map +1 -0
- package/dist/modules/browser/BrowserModeManager.d.ts +31 -0
- package/dist/modules/browser/BrowserModeManager.d.ts.map +1 -0
- package/dist/modules/browser/BrowserModeManager.js +241 -0
- package/dist/modules/browser/BrowserModeManager.js.map +1 -0
- package/dist/modules/captcha/AICaptchaDetector.d.ts +32 -0
- package/dist/modules/captcha/AICaptchaDetector.d.ts.map +1 -0
- package/dist/modules/captcha/AICaptchaDetector.js +387 -0
- package/dist/modules/captcha/AICaptchaDetector.js.map +1 -0
- package/dist/modules/captcha/CaptchaDetector.d.ts +28 -0
- package/dist/modules/captcha/CaptchaDetector.d.ts.map +1 -0
- package/dist/modules/captcha/CaptchaDetector.js +513 -0
- package/dist/modules/captcha/CaptchaDetector.js.map +1 -0
- package/dist/modules/collector/CodeCache.d.ts +37 -0
- package/dist/modules/collector/CodeCache.d.ts.map +1 -0
- package/dist/modules/collector/CodeCache.js +188 -0
- package/dist/modules/collector/CodeCache.js.map +1 -0
- package/dist/modules/collector/CodeCollector.d.ts +107 -0
- package/dist/modules/collector/CodeCollector.d.ts.map +1 -0
- package/dist/modules/collector/CodeCollector.js +796 -0
- package/dist/modules/collector/CodeCollector.js.map +1 -0
- package/dist/modules/collector/CodeCompressor.d.ts +65 -0
- package/dist/modules/collector/CodeCompressor.d.ts.map +1 -0
- package/dist/modules/collector/CodeCompressor.js +245 -0
- package/dist/modules/collector/CodeCompressor.js.map +1 -0
- package/dist/modules/collector/DOMInspector.d.ts +51 -0
- package/dist/modules/collector/DOMInspector.d.ts.map +1 -0
- package/dist/modules/collector/DOMInspector.js +437 -0
- package/dist/modules/collector/DOMInspector.js.map +1 -0
- package/dist/modules/collector/PageController.d.ts +79 -0
- package/dist/modules/collector/PageController.d.ts.map +1 -0
- package/dist/modules/collector/PageController.js +287 -0
- package/dist/modules/collector/PageController.js.map +1 -0
- package/dist/modules/collector/SmartCodeCollector.d.ts +38 -0
- package/dist/modules/collector/SmartCodeCollector.d.ts.map +1 -0
- package/dist/modules/collector/SmartCodeCollector.js +208 -0
- package/dist/modules/collector/SmartCodeCollector.js.map +1 -0
- package/dist/modules/collector/StreamingCollector.d.ts +46 -0
- package/dist/modules/collector/StreamingCollector.d.ts.map +1 -0
- package/dist/modules/collector/StreamingCollector.js +127 -0
- package/dist/modules/collector/StreamingCollector.js.map +1 -0
- package/dist/modules/crypto/CryptoDetector.d.ts +22 -0
- package/dist/modules/crypto/CryptoDetector.d.ts.map +1 -0
- package/dist/modules/crypto/CryptoDetector.js +168 -0
- package/dist/modules/crypto/CryptoDetector.js.map +1 -0
- package/dist/modules/crypto/CryptoDetectorEnhanced.d.ts +31 -0
- package/dist/modules/crypto/CryptoDetectorEnhanced.d.ts.map +1 -0
- package/dist/modules/crypto/CryptoDetectorEnhanced.js +269 -0
- package/dist/modules/crypto/CryptoDetectorEnhanced.js.map +1 -0
- package/dist/modules/crypto/CryptoRules.d.ts +59 -0
- package/dist/modules/crypto/CryptoRules.d.ts.map +1 -0
- package/dist/modules/crypto/CryptoRules.js +234 -0
- package/dist/modules/crypto/CryptoRules.js.map +1 -0
- package/dist/modules/debugger/BlackboxManager.d.ts +14 -0
- package/dist/modules/debugger/BlackboxManager.d.ts.map +1 -0
- package/dist/modules/debugger/BlackboxManager.js +98 -0
- package/dist/modules/debugger/BlackboxManager.js.map +1 -0
- package/dist/modules/debugger/DebuggerManager.d.ts +138 -0
- package/dist/modules/debugger/DebuggerManager.d.ts.map +1 -0
- package/dist/modules/debugger/DebuggerManager.js +777 -0
- package/dist/modules/debugger/DebuggerManager.js.map +1 -0
- package/dist/modules/debugger/EventBreakpointManager.d.ts +30 -0
- package/dist/modules/debugger/EventBreakpointManager.d.ts.map +1 -0
- package/dist/modules/debugger/EventBreakpointManager.js +125 -0
- package/dist/modules/debugger/EventBreakpointManager.js.map +1 -0
- package/dist/modules/debugger/RuntimeInspector.d.ts +54 -0
- package/dist/modules/debugger/RuntimeInspector.d.ts.map +1 -0
- package/dist/modules/debugger/RuntimeInspector.js +277 -0
- package/dist/modules/debugger/RuntimeInspector.js.map +1 -0
- package/dist/modules/debugger/ScriptManager.d.ts +94 -0
- package/dist/modules/debugger/ScriptManager.d.ts.map +1 -0
- package/dist/modules/debugger/ScriptManager.js +433 -0
- package/dist/modules/debugger/ScriptManager.js.map +1 -0
- package/dist/modules/debugger/WatchExpressionManager.d.ts +52 -0
- package/dist/modules/debugger/WatchExpressionManager.d.ts.map +1 -0
- package/dist/modules/debugger/WatchExpressionManager.js +136 -0
- package/dist/modules/debugger/WatchExpressionManager.js.map +1 -0
- package/dist/modules/debugger/XHRBreakpointManager.d.ts +21 -0
- package/dist/modules/debugger/XHRBreakpointManager.d.ts.map +1 -0
- package/dist/modules/debugger/XHRBreakpointManager.js +81 -0
- package/dist/modules/debugger/XHRBreakpointManager.js.map +1 -0
- package/dist/modules/deobfuscator/ASTOptimizer.d.ts +12 -0
- package/dist/modules/deobfuscator/ASTOptimizer.d.ts.map +1 -0
- package/dist/modules/deobfuscator/ASTOptimizer.js +234 -0
- package/dist/modules/deobfuscator/ASTOptimizer.js.map +1 -0
- package/dist/modules/deobfuscator/AdvancedDeobfuscator.d.ts +52 -0
- package/dist/modules/deobfuscator/AdvancedDeobfuscator.d.ts.map +1 -0
- package/dist/modules/deobfuscator/AdvancedDeobfuscator.js +985 -0
- package/dist/modules/deobfuscator/AdvancedDeobfuscator.js.map +1 -0
- package/dist/modules/deobfuscator/Deobfuscator.d.ts +23 -0
- package/dist/modules/deobfuscator/Deobfuscator.d.ts.map +1 -0
- package/dist/modules/deobfuscator/Deobfuscator.js +487 -0
- package/dist/modules/deobfuscator/Deobfuscator.js.map +1 -0
- package/dist/modules/deobfuscator/JSVMPDeobfuscator.d.ts +19 -0
- package/dist/modules/deobfuscator/JSVMPDeobfuscator.d.ts.map +1 -0
- package/dist/modules/deobfuscator/JSVMPDeobfuscator.js +594 -0
- package/dist/modules/deobfuscator/JSVMPDeobfuscator.js.map +1 -0
- package/dist/modules/deobfuscator/JScramberDeobfuscator.d.ts +28 -0
- package/dist/modules/deobfuscator/JScramberDeobfuscator.d.ts.map +1 -0
- package/dist/modules/deobfuscator/JScramberDeobfuscator.js +239 -0
- package/dist/modules/deobfuscator/JScramberDeobfuscator.js.map +1 -0
- package/dist/modules/deobfuscator/PackerDeobfuscator.d.ts +38 -0
- package/dist/modules/deobfuscator/PackerDeobfuscator.d.ts.map +1 -0
- package/dist/modules/deobfuscator/PackerDeobfuscator.js +191 -0
- package/dist/modules/deobfuscator/PackerDeobfuscator.js.map +1 -0
- package/dist/modules/detector/ObfuscationDetector.d.ts +35 -0
- package/dist/modules/detector/ObfuscationDetector.d.ts.map +1 -0
- package/dist/modules/detector/ObfuscationDetector.js +278 -0
- package/dist/modules/detector/ObfuscationDetector.js.map +1 -0
- package/dist/modules/emulator/AIEnvironmentAnalyzer.d.ts +32 -0
- package/dist/modules/emulator/AIEnvironmentAnalyzer.d.ts.map +1 -0
- package/dist/modules/emulator/AIEnvironmentAnalyzer.js +548 -0
- package/dist/modules/emulator/AIEnvironmentAnalyzer.js.map +1 -0
- package/dist/modules/emulator/BrowserAPIDatabase.d.ts +34 -0
- package/dist/modules/emulator/BrowserAPIDatabase.d.ts.map +1 -0
- package/dist/modules/emulator/BrowserAPIDatabase.js +326 -0
- package/dist/modules/emulator/BrowserAPIDatabase.js.map +1 -0
- package/dist/modules/emulator/BrowserEnvironmentRules.d.ts +47 -0
- package/dist/modules/emulator/BrowserEnvironmentRules.d.ts.map +1 -0
- package/dist/modules/emulator/BrowserEnvironmentRules.js +493 -0
- package/dist/modules/emulator/BrowserEnvironmentRules.js.map +1 -0
- package/dist/modules/emulator/EnvironmentEmulator.d.ts +27 -0
- package/dist/modules/emulator/EnvironmentEmulator.d.ts.map +1 -0
- package/dist/modules/emulator/EnvironmentEmulator.js +1113 -0
- package/dist/modules/emulator/EnvironmentEmulator.js.map +1 -0
- package/dist/modules/emulator/EnvironmentEmulatorEnhanced.d.ts +26 -0
- package/dist/modules/emulator/EnvironmentEmulatorEnhanced.d.ts.map +1 -0
- package/dist/modules/emulator/EnvironmentEmulatorEnhanced.js +493 -0
- package/dist/modules/emulator/EnvironmentEmulatorEnhanced.js.map +1 -0
- package/dist/modules/emulator/templates/chrome-env.d.ts +260 -0
- package/dist/modules/emulator/templates/chrome-env.d.ts.map +1 -0
- package/dist/modules/emulator/templates/chrome-env.js +253 -0
- package/dist/modules/emulator/templates/chrome-env.js.map +1 -0
- package/dist/modules/hook/AIHookGenerator.d.ts +53 -0
- package/dist/modules/hook/AIHookGenerator.d.ts.map +1 -0
- package/dist/modules/hook/AIHookGenerator.js +353 -0
- package/dist/modules/hook/AIHookGenerator.js.map +1 -0
- package/dist/modules/hook/HookManager.d.ts +67 -0
- package/dist/modules/hook/HookManager.d.ts.map +1 -0
- package/dist/modules/hook/HookManager.js +1225 -0
- package/dist/modules/hook/HookManager.js.map +1 -0
- package/dist/modules/monitor/ConsoleMonitor.d.ts +140 -0
- package/dist/modules/monitor/ConsoleMonitor.d.ts.map +1 -0
- package/dist/modules/monitor/ConsoleMonitor.js +834 -0
- package/dist/modules/monitor/ConsoleMonitor.js.map +1 -0
- package/dist/modules/monitor/PerformanceMonitor.d.ts +65 -0
- package/dist/modules/monitor/PerformanceMonitor.d.ts.map +1 -0
- package/dist/modules/monitor/PerformanceMonitor.js +175 -0
- package/dist/modules/monitor/PerformanceMonitor.js.map +1 -0
- package/dist/modules/stealth/StealthScripts2025.d.ts +17 -0
- package/dist/modules/stealth/StealthScripts2025.d.ts.map +1 -0
- package/dist/modules/stealth/StealthScripts2025.js +274 -0
- package/dist/modules/stealth/StealthScripts2025.js.map +1 -0
- package/dist/modules/symbolic/JSVMPSymbolicExecutor.d.ts +69 -0
- package/dist/modules/symbolic/JSVMPSymbolicExecutor.d.ts.map +1 -0
- package/dist/modules/symbolic/JSVMPSymbolicExecutor.js +232 -0
- package/dist/modules/symbolic/JSVMPSymbolicExecutor.js.map +1 -0
- package/dist/modules/symbolic/SymbolicExecutor.d.ts +69 -0
- package/dist/modules/symbolic/SymbolicExecutor.d.ts.map +1 -0
- package/dist/modules/symbolic/SymbolicExecutor.js +346 -0
- package/dist/modules/symbolic/SymbolicExecutor.js.map +1 -0
- package/dist/server/AIHookToolDefinitions.d.ts +3 -0
- package/dist/server/AIHookToolDefinitions.d.ts.map +1 -0
- package/dist/server/AIHookToolDefinitions.js +284 -0
- package/dist/server/AIHookToolDefinitions.js.map +1 -0
- package/dist/server/AIHookToolHandlers.d.ts +50 -0
- package/dist/server/AIHookToolHandlers.d.ts.map +1 -0
- package/dist/server/AIHookToolHandlers.js +311 -0
- package/dist/server/AIHookToolHandlers.js.map +1 -0
- package/dist/server/AdvancedToolDefinitions.d.ts +3 -0
- package/dist/server/AdvancedToolDefinitions.d.ts.map +1 -0
- package/dist/server/AdvancedToolDefinitions.js +218 -0
- package/dist/server/AdvancedToolDefinitions.js.map +1 -0
- package/dist/server/AdvancedToolHandlers.d.ts +85 -0
- package/dist/server/AdvancedToolHandlers.d.ts.map +1 -0
- package/dist/server/AdvancedToolHandlers.js +431 -0
- package/dist/server/AdvancedToolHandlers.js.map +1 -0
- package/dist/server/BrowserToolDefinitions.d.ts +3 -0
- package/dist/server/BrowserToolDefinitions.d.ts.map +1 -0
- package/dist/server/BrowserToolDefinitions.js +841 -0
- package/dist/server/BrowserToolDefinitions.js.map +1 -0
- package/dist/server/BrowserToolHandlers.d.ts +290 -0
- package/dist/server/BrowserToolHandlers.d.ts.map +1 -0
- package/dist/server/BrowserToolHandlers.js +784 -0
- package/dist/server/BrowserToolHandlers.js.map +1 -0
- package/dist/server/CacheToolDefinitions.d.ts +3 -0
- package/dist/server/CacheToolDefinitions.d.ts.map +1 -0
- package/dist/server/CacheToolDefinitions.js +166 -0
- package/dist/server/CacheToolDefinitions.js.map +1 -0
- package/dist/server/DebuggerToolDefinitions.d.ts +3 -0
- package/dist/server/DebuggerToolDefinitions.d.ts.map +1 -0
- package/dist/server/DebuggerToolDefinitions.js +600 -0
- package/dist/server/DebuggerToolDefinitions.js.map +1 -0
- package/dist/server/DebuggerToolHandlers.d.ts +230 -0
- package/dist/server/DebuggerToolHandlers.d.ts.map +1 -0
- package/dist/server/DebuggerToolHandlers.js +935 -0
- package/dist/server/DebuggerToolHandlers.js.map +1 -0
- package/dist/server/MCPServer.d.ts +55 -0
- package/dist/server/MCPServer.d.ts.map +1 -0
- package/dist/server/MCPServer.js +1344 -0
- package/dist/server/MCPServer.js.map +1 -0
- package/dist/server/TokenBudgetToolDefinitions.d.ts +3 -0
- package/dist/server/TokenBudgetToolDefinitions.d.ts.map +1 -0
- package/dist/server/TokenBudgetToolDefinitions.js +114 -0
- package/dist/server/TokenBudgetToolDefinitions.js.map +1 -0
- package/dist/services/LLMService.d.ts +41 -0
- package/dist/services/LLMService.d.ts.map +1 -0
- package/dist/services/LLMService.js +792 -0
- package/dist/services/LLMService.js.map +1 -0
- package/dist/types/index.d.ts +527 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/AdaptiveDataSerializer.d.ts +27 -0
- package/dist/utils/AdaptiveDataSerializer.d.ts.map +1 -0
- package/dist/utils/AdaptiveDataSerializer.js +215 -0
- package/dist/utils/AdaptiveDataSerializer.js.map +1 -0
- package/dist/utils/CacheAdapters.d.ts +30 -0
- package/dist/utils/CacheAdapters.d.ts.map +1 -0
- package/dist/utils/CacheAdapters.js +83 -0
- package/dist/utils/CacheAdapters.js.map +1 -0
- package/dist/utils/TokenBudgetManager.d.ts +52 -0
- package/dist/utils/TokenBudgetManager.d.ts.map +1 -0
- package/dist/utils/TokenBudgetManager.js +190 -0
- package/dist/utils/TokenBudgetManager.js.map +1 -0
- package/dist/utils/UnifiedCacheManager.d.ts +55 -0
- package/dist/utils/UnifiedCacheManager.d.ts.map +1 -0
- package/dist/utils/UnifiedCacheManager.js +207 -0
- package/dist/utils/UnifiedCacheManager.js.map +1 -0
- package/dist/utils/cache.d.ts +13 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +92 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/config.d.ts +7 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +93 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/detailedDataManager.d.ts +60 -0
- package/dist/utils/detailedDataManager.d.ts.map +1 -0
- package/dist/utils/detailedDataManager.js +204 -0
- package/dist/utils/detailedDataManager.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +47 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/parallel.d.ts +40 -0
- package/dist/utils/parallel.d.ts.map +1 -0
- package/dist/utils/parallel.js +148 -0
- package/dist/utils/parallel.js.map +1 -0
- package/package.json +94 -0
- package/server.json +39 -0
- package/tsconfig.dev.json +14 -0
|
@@ -0,0 +1,841 @@
|
|
|
1
|
+
export const browserTools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'get_detailed_data',
|
|
4
|
+
description: `🔑 Retrieve detailed data using detailId token.
|
|
5
|
+
|
|
6
|
+
When tools return large data, they provide a detailId instead of full data to prevent context overflow.
|
|
7
|
+
Use this tool to retrieve the full data or specific parts.
|
|
8
|
+
|
|
9
|
+
Examples:
|
|
10
|
+
- get_detailed_data("detail_abc123") → Get full data
|
|
11
|
+
- get_detailed_data("detail_abc123", path="frontierSign") → Get specific property
|
|
12
|
+
- get_detailed_data("detail_abc123", path="methods.0") → Get first method`,
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
detailId: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Detail ID token from previous tool response',
|
|
19
|
+
},
|
|
20
|
+
path: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Optional: Path to specific data (e.g., "frontierSign" or "methods.0")',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['detailId'],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'browser_launch',
|
|
30
|
+
description: 'Launch browser instance',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'browser_close',
|
|
38
|
+
description: 'Close browser instance',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'browser_status',
|
|
46
|
+
description: 'Get browser status (running, pages count, version)',
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'page_navigate',
|
|
54
|
+
description: `Navigate to a URL
|
|
55
|
+
|
|
56
|
+
Features:
|
|
57
|
+
- Automatic CAPTCHA detection
|
|
58
|
+
- Optional network monitoring (set enableNetworkMonitoring=true to auto-enable)
|
|
59
|
+
- Waits for page load based on waitUntil strategy
|
|
60
|
+
|
|
61
|
+
Network Monitoring:
|
|
62
|
+
If you want to capture network requests, you have two options:
|
|
63
|
+
1. Call network_enable before page_navigate (recommended for full control)
|
|
64
|
+
2. Set enableNetworkMonitoring=true in page_navigate (convenient for quick capture)
|
|
65
|
+
|
|
66
|
+
Example with network monitoring:
|
|
67
|
+
page_navigate(url="https://api.example.com", enableNetworkMonitoring=true)
|
|
68
|
+
→ Network monitoring auto-enabled
|
|
69
|
+
→ Page loads
|
|
70
|
+
→ Use network_get_requests to see captured requests`,
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: 'object',
|
|
73
|
+
properties: {
|
|
74
|
+
url: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
description: 'Target URL to navigate to',
|
|
77
|
+
},
|
|
78
|
+
waitUntil: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'When to consider navigation succeeded',
|
|
81
|
+
enum: ['load', 'domcontentloaded', 'networkidle0', 'networkidle2'],
|
|
82
|
+
default: 'networkidle2',
|
|
83
|
+
},
|
|
84
|
+
timeout: {
|
|
85
|
+
type: 'number',
|
|
86
|
+
description: 'Navigation timeout in milliseconds',
|
|
87
|
+
default: 30000,
|
|
88
|
+
},
|
|
89
|
+
enableNetworkMonitoring: {
|
|
90
|
+
type: 'boolean',
|
|
91
|
+
description: '✨ Auto-enable network monitoring before navigation to capture all requests. If already enabled, this has no effect.',
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
required: ['url'],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'page_reload',
|
|
100
|
+
description: 'Reload current page',
|
|
101
|
+
inputSchema: {
|
|
102
|
+
type: 'object',
|
|
103
|
+
properties: {},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'page_back',
|
|
108
|
+
description: 'Navigate back in history',
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'page_forward',
|
|
116
|
+
description: 'Navigate forward in history',
|
|
117
|
+
inputSchema: {
|
|
118
|
+
type: 'object',
|
|
119
|
+
properties: {},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'dom_query_selector',
|
|
124
|
+
description: 'Query single element (like document.querySelector). AI should use this BEFORE clicking to verify element exists.',
|
|
125
|
+
inputSchema: {
|
|
126
|
+
type: 'object',
|
|
127
|
+
properties: {
|
|
128
|
+
selector: {
|
|
129
|
+
type: 'string',
|
|
130
|
+
description: 'CSS selector',
|
|
131
|
+
},
|
|
132
|
+
getAttributes: {
|
|
133
|
+
type: 'boolean',
|
|
134
|
+
description: 'Whether to get element attributes',
|
|
135
|
+
default: true,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
required: ['selector'],
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'dom_query_all',
|
|
143
|
+
description: 'Query all matching elements (like document.querySelectorAll)',
|
|
144
|
+
inputSchema: {
|
|
145
|
+
type: 'object',
|
|
146
|
+
properties: {
|
|
147
|
+
selector: {
|
|
148
|
+
type: 'string',
|
|
149
|
+
description: 'CSS selector',
|
|
150
|
+
},
|
|
151
|
+
limit: {
|
|
152
|
+
type: 'number',
|
|
153
|
+
description: 'Maximum number of elements to return',
|
|
154
|
+
default: 100,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
required: ['selector'],
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'dom_get_structure',
|
|
162
|
+
description: `Get page DOM structure (for AI to understand page layout).
|
|
163
|
+
|
|
164
|
+
⚠️ IMPORTANT: Large DOM structures (>50KB) automatically return summary + detailId.
|
|
165
|
+
|
|
166
|
+
Best Practices:
|
|
167
|
+
1. Use maxDepth=2 for initial exploration (faster, smaller)
|
|
168
|
+
2. Use maxDepth=3 only when needed (may be large)
|
|
169
|
+
3. Set includeText=false to reduce size if text not needed
|
|
170
|
+
|
|
171
|
+
Example:
|
|
172
|
+
dom_get_structure(maxDepth=2, includeText=false)
|
|
173
|
+
→ Returns compact structure without text content`,
|
|
174
|
+
inputSchema: {
|
|
175
|
+
type: 'object',
|
|
176
|
+
properties: {
|
|
177
|
+
maxDepth: {
|
|
178
|
+
type: 'number',
|
|
179
|
+
description: 'Maximum depth of DOM tree (default: 3, recommend: 2 for large pages)',
|
|
180
|
+
default: 3,
|
|
181
|
+
},
|
|
182
|
+
includeText: {
|
|
183
|
+
type: 'boolean',
|
|
184
|
+
description: 'Whether to include text content (set false to reduce size)',
|
|
185
|
+
default: true,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: 'dom_find_clickable',
|
|
192
|
+
description: 'Find all clickable elements (buttons, links). Use this to discover what can be clicked.',
|
|
193
|
+
inputSchema: {
|
|
194
|
+
type: 'object',
|
|
195
|
+
properties: {
|
|
196
|
+
filterText: {
|
|
197
|
+
type: 'string',
|
|
198
|
+
description: 'Filter by text content (optional)',
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: 'page_click',
|
|
205
|
+
description: 'Click an element. Use dom_query_selector FIRST to verify element exists.',
|
|
206
|
+
inputSchema: {
|
|
207
|
+
type: 'object',
|
|
208
|
+
properties: {
|
|
209
|
+
selector: {
|
|
210
|
+
type: 'string',
|
|
211
|
+
description: 'CSS selector of element to click',
|
|
212
|
+
},
|
|
213
|
+
button: {
|
|
214
|
+
type: 'string',
|
|
215
|
+
description: 'Mouse button to click',
|
|
216
|
+
enum: ['left', 'right', 'middle'],
|
|
217
|
+
default: 'left',
|
|
218
|
+
},
|
|
219
|
+
clickCount: {
|
|
220
|
+
type: 'number',
|
|
221
|
+
description: 'Number of clicks',
|
|
222
|
+
default: 1,
|
|
223
|
+
},
|
|
224
|
+
delay: {
|
|
225
|
+
type: 'number',
|
|
226
|
+
description: 'Delay between mousedown and mouseup in milliseconds',
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
required: ['selector'],
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'page_type',
|
|
234
|
+
description: 'Type text into an input element',
|
|
235
|
+
inputSchema: {
|
|
236
|
+
type: 'object',
|
|
237
|
+
properties: {
|
|
238
|
+
selector: {
|
|
239
|
+
type: 'string',
|
|
240
|
+
description: 'CSS selector of input element',
|
|
241
|
+
},
|
|
242
|
+
text: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
description: 'Text to type',
|
|
245
|
+
},
|
|
246
|
+
delay: {
|
|
247
|
+
type: 'number',
|
|
248
|
+
description: 'Delay between key presses in milliseconds',
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
required: ['selector', 'text'],
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
name: 'page_select',
|
|
256
|
+
description: 'Select option(s) in a <select> element',
|
|
257
|
+
inputSchema: {
|
|
258
|
+
type: 'object',
|
|
259
|
+
properties: {
|
|
260
|
+
selector: {
|
|
261
|
+
type: 'string',
|
|
262
|
+
description: 'CSS selector of select element',
|
|
263
|
+
},
|
|
264
|
+
values: {
|
|
265
|
+
type: 'array',
|
|
266
|
+
description: 'Values to select',
|
|
267
|
+
items: {
|
|
268
|
+
type: 'string',
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
required: ['selector', 'values'],
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'page_hover',
|
|
277
|
+
description: 'Hover over an element',
|
|
278
|
+
inputSchema: {
|
|
279
|
+
type: 'object',
|
|
280
|
+
properties: {
|
|
281
|
+
selector: {
|
|
282
|
+
type: 'string',
|
|
283
|
+
description: 'CSS selector of element to hover',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
required: ['selector'],
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'page_scroll',
|
|
291
|
+
description: 'Scroll the page',
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: 'object',
|
|
294
|
+
properties: {
|
|
295
|
+
x: {
|
|
296
|
+
type: 'number',
|
|
297
|
+
description: 'Horizontal scroll position',
|
|
298
|
+
default: 0,
|
|
299
|
+
},
|
|
300
|
+
y: {
|
|
301
|
+
type: 'number',
|
|
302
|
+
description: 'Vertical scroll position',
|
|
303
|
+
default: 0,
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'page_wait_for_selector',
|
|
310
|
+
description: 'Wait for an element to appear',
|
|
311
|
+
inputSchema: {
|
|
312
|
+
type: 'object',
|
|
313
|
+
properties: {
|
|
314
|
+
selector: {
|
|
315
|
+
type: 'string',
|
|
316
|
+
description: 'CSS selector to wait for',
|
|
317
|
+
},
|
|
318
|
+
timeout: {
|
|
319
|
+
type: 'number',
|
|
320
|
+
description: 'Timeout in milliseconds',
|
|
321
|
+
default: 30000,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
required: ['selector'],
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
name: 'page_evaluate',
|
|
329
|
+
description: `Execute JavaScript code in page context and get result.
|
|
330
|
+
|
|
331
|
+
⚠️ IMPORTANT: Large results (>50KB) automatically return summary + detailId to prevent context overflow.
|
|
332
|
+
Use get_detailed_data(detailId) to retrieve full data if needed.
|
|
333
|
+
|
|
334
|
+
Best Practices:
|
|
335
|
+
- ✅ Query specific properties: { hasAcrawler: !!window.byted_acrawler }
|
|
336
|
+
- ✅ Return only needed data: Object.keys(window.byted_acrawler)
|
|
337
|
+
- ❌ Avoid returning entire objects: window (too large!)
|
|
338
|
+
|
|
339
|
+
Example:
|
|
340
|
+
page_evaluate("({ keys: Object.keys(window.byted_acrawler), type: typeof window.byted_acrawler })")
|
|
341
|
+
→ Returns small summary
|
|
342
|
+
→ If you need full object, use the returned detailId`,
|
|
343
|
+
inputSchema: {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {
|
|
346
|
+
code: {
|
|
347
|
+
type: 'string',
|
|
348
|
+
description: 'JavaScript code to execute',
|
|
349
|
+
},
|
|
350
|
+
autoSummarize: {
|
|
351
|
+
type: 'boolean',
|
|
352
|
+
description: 'Auto-summarize large results (default: true)',
|
|
353
|
+
default: true,
|
|
354
|
+
},
|
|
355
|
+
maxSize: {
|
|
356
|
+
type: 'number',
|
|
357
|
+
description: 'Max result size in bytes before auto-summarizing (default: 50KB)',
|
|
358
|
+
default: 51200,
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
required: ['code'],
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: 'page_screenshot',
|
|
366
|
+
description: 'Take a screenshot of the page',
|
|
367
|
+
inputSchema: {
|
|
368
|
+
type: 'object',
|
|
369
|
+
properties: {
|
|
370
|
+
path: {
|
|
371
|
+
type: 'string',
|
|
372
|
+
description: 'File path to save screenshot (optional)',
|
|
373
|
+
},
|
|
374
|
+
type: {
|
|
375
|
+
type: 'string',
|
|
376
|
+
description: 'Image format',
|
|
377
|
+
enum: ['png', 'jpeg'],
|
|
378
|
+
default: 'png',
|
|
379
|
+
},
|
|
380
|
+
quality: {
|
|
381
|
+
type: 'number',
|
|
382
|
+
description: 'Image quality (0-100, only for jpeg)',
|
|
383
|
+
},
|
|
384
|
+
fullPage: {
|
|
385
|
+
type: 'boolean',
|
|
386
|
+
description: 'Capture full scrollable page',
|
|
387
|
+
default: false,
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
name: 'get_all_scripts',
|
|
394
|
+
description: 'Get list of all loaded scripts on the page',
|
|
395
|
+
inputSchema: {
|
|
396
|
+
type: 'object',
|
|
397
|
+
properties: {
|
|
398
|
+
includeSource: {
|
|
399
|
+
type: 'boolean',
|
|
400
|
+
description: 'Whether to include script source code',
|
|
401
|
+
default: false,
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: 'get_script_source',
|
|
408
|
+
description: `Get source code of a specific script.
|
|
409
|
+
|
|
410
|
+
⚠️ IMPORTANT: Large scripts (>50KB) automatically return summary + detailId.
|
|
411
|
+
Use preview mode first to check script size before fetching full source.
|
|
412
|
+
|
|
413
|
+
Best Practices:
|
|
414
|
+
1. Use preview=true first to see script overview
|
|
415
|
+
2. If script is large, use detailId to get full source
|
|
416
|
+
3. Or use startLine/endLine to get specific sections
|
|
417
|
+
|
|
418
|
+
Example:
|
|
419
|
+
get_script_source(scriptId="abc", preview=true)
|
|
420
|
+
→ Returns: { lines: 5000, size: "500KB", preview: "...", detailId: "..." }
|
|
421
|
+
→ Then: get_detailed_data(detailId) to get full source`,
|
|
422
|
+
inputSchema: {
|
|
423
|
+
type: 'object',
|
|
424
|
+
properties: {
|
|
425
|
+
scriptId: {
|
|
426
|
+
type: 'string',
|
|
427
|
+
description: 'Script ID from get_all_scripts',
|
|
428
|
+
},
|
|
429
|
+
url: {
|
|
430
|
+
type: 'string',
|
|
431
|
+
description: 'Script URL (supports wildcards like *.js)',
|
|
432
|
+
},
|
|
433
|
+
preview: {
|
|
434
|
+
type: 'boolean',
|
|
435
|
+
description: 'Return preview only (first 100 lines + metadata)',
|
|
436
|
+
default: false,
|
|
437
|
+
},
|
|
438
|
+
maxLines: {
|
|
439
|
+
type: 'number',
|
|
440
|
+
description: 'Max lines to return in preview mode (default: 100)',
|
|
441
|
+
default: 100,
|
|
442
|
+
},
|
|
443
|
+
startLine: {
|
|
444
|
+
type: 'number',
|
|
445
|
+
description: 'Start line number (1-based, for partial fetch)',
|
|
446
|
+
},
|
|
447
|
+
endLine: {
|
|
448
|
+
type: 'number',
|
|
449
|
+
description: 'End line number (1-based, for partial fetch)',
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
name: 'console_enable',
|
|
456
|
+
description: 'Enable console monitoring to capture console.log, console.error, etc.',
|
|
457
|
+
inputSchema: {
|
|
458
|
+
type: 'object',
|
|
459
|
+
properties: {},
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
name: 'console_get_logs',
|
|
464
|
+
description: 'Get captured console logs',
|
|
465
|
+
inputSchema: {
|
|
466
|
+
type: 'object',
|
|
467
|
+
properties: {
|
|
468
|
+
type: {
|
|
469
|
+
type: 'string',
|
|
470
|
+
description: 'Filter by log type',
|
|
471
|
+
enum: ['log', 'warn', 'error', 'info', 'debug'],
|
|
472
|
+
},
|
|
473
|
+
limit: {
|
|
474
|
+
type: 'number',
|
|
475
|
+
description: 'Maximum number of logs to return',
|
|
476
|
+
},
|
|
477
|
+
since: {
|
|
478
|
+
type: 'number',
|
|
479
|
+
description: 'Only return logs after this timestamp',
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
name: 'console_execute',
|
|
486
|
+
description: 'Execute JavaScript expression in console context',
|
|
487
|
+
inputSchema: {
|
|
488
|
+
type: 'object',
|
|
489
|
+
properties: {
|
|
490
|
+
expression: {
|
|
491
|
+
type: 'string',
|
|
492
|
+
description: 'JavaScript expression to execute',
|
|
493
|
+
},
|
|
494
|
+
},
|
|
495
|
+
required: ['expression'],
|
|
496
|
+
},
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
name: 'dom_get_computed_style',
|
|
500
|
+
description: 'Get computed CSS styles of an element',
|
|
501
|
+
inputSchema: {
|
|
502
|
+
type: 'object',
|
|
503
|
+
properties: {
|
|
504
|
+
selector: {
|
|
505
|
+
type: 'string',
|
|
506
|
+
description: 'CSS selector',
|
|
507
|
+
},
|
|
508
|
+
},
|
|
509
|
+
required: ['selector'],
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: 'dom_find_by_text',
|
|
514
|
+
description: 'Find elements by text content (useful for dynamic content)',
|
|
515
|
+
inputSchema: {
|
|
516
|
+
type: 'object',
|
|
517
|
+
properties: {
|
|
518
|
+
text: {
|
|
519
|
+
type: 'string',
|
|
520
|
+
description: 'Text to search for',
|
|
521
|
+
},
|
|
522
|
+
tag: {
|
|
523
|
+
type: 'string',
|
|
524
|
+
description: 'Optional tag name to filter (e.g., "button", "a")',
|
|
525
|
+
},
|
|
526
|
+
},
|
|
527
|
+
required: ['text'],
|
|
528
|
+
},
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
name: 'dom_get_xpath',
|
|
532
|
+
description: 'Get XPath of an element',
|
|
533
|
+
inputSchema: {
|
|
534
|
+
type: 'object',
|
|
535
|
+
properties: {
|
|
536
|
+
selector: {
|
|
537
|
+
type: 'string',
|
|
538
|
+
description: 'CSS selector',
|
|
539
|
+
},
|
|
540
|
+
},
|
|
541
|
+
required: ['selector'],
|
|
542
|
+
},
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
name: 'dom_is_in_viewport',
|
|
546
|
+
description: 'Check if element is visible in viewport',
|
|
547
|
+
inputSchema: {
|
|
548
|
+
type: 'object',
|
|
549
|
+
properties: {
|
|
550
|
+
selector: {
|
|
551
|
+
type: 'string',
|
|
552
|
+
description: 'CSS selector',
|
|
553
|
+
},
|
|
554
|
+
},
|
|
555
|
+
required: ['selector'],
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
name: 'page_get_performance',
|
|
560
|
+
description: 'Get page performance metrics (load time, network time, etc.)',
|
|
561
|
+
inputSchema: {
|
|
562
|
+
type: 'object',
|
|
563
|
+
properties: {},
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
name: 'page_inject_script',
|
|
568
|
+
description: 'Inject JavaScript code into page',
|
|
569
|
+
inputSchema: {
|
|
570
|
+
type: 'object',
|
|
571
|
+
properties: {
|
|
572
|
+
script: {
|
|
573
|
+
type: 'string',
|
|
574
|
+
description: 'JavaScript code to inject',
|
|
575
|
+
},
|
|
576
|
+
},
|
|
577
|
+
required: ['script'],
|
|
578
|
+
},
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
name: 'page_set_cookies',
|
|
582
|
+
description: 'Set cookies for the page',
|
|
583
|
+
inputSchema: {
|
|
584
|
+
type: 'object',
|
|
585
|
+
properties: {
|
|
586
|
+
cookies: {
|
|
587
|
+
type: 'array',
|
|
588
|
+
description: 'Array of cookie objects',
|
|
589
|
+
items: {
|
|
590
|
+
type: 'object',
|
|
591
|
+
properties: {
|
|
592
|
+
name: { type: 'string' },
|
|
593
|
+
value: { type: 'string' },
|
|
594
|
+
domain: { type: 'string' },
|
|
595
|
+
path: { type: 'string' },
|
|
596
|
+
expires: { type: 'number' },
|
|
597
|
+
httpOnly: { type: 'boolean' },
|
|
598
|
+
secure: { type: 'boolean' },
|
|
599
|
+
sameSite: { type: 'string', enum: ['Strict', 'Lax', 'None'] },
|
|
600
|
+
},
|
|
601
|
+
required: ['name', 'value'],
|
|
602
|
+
},
|
|
603
|
+
},
|
|
604
|
+
},
|
|
605
|
+
required: ['cookies'],
|
|
606
|
+
},
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
name: 'page_get_cookies',
|
|
610
|
+
description: 'Get all cookies for the page',
|
|
611
|
+
inputSchema: {
|
|
612
|
+
type: 'object',
|
|
613
|
+
properties: {},
|
|
614
|
+
},
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
name: 'page_clear_cookies',
|
|
618
|
+
description: 'Clear all cookies',
|
|
619
|
+
inputSchema: {
|
|
620
|
+
type: 'object',
|
|
621
|
+
properties: {},
|
|
622
|
+
},
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
name: 'page_set_viewport',
|
|
626
|
+
description: 'Set viewport size',
|
|
627
|
+
inputSchema: {
|
|
628
|
+
type: 'object',
|
|
629
|
+
properties: {
|
|
630
|
+
width: {
|
|
631
|
+
type: 'number',
|
|
632
|
+
description: 'Viewport width',
|
|
633
|
+
},
|
|
634
|
+
height: {
|
|
635
|
+
type: 'number',
|
|
636
|
+
description: 'Viewport height',
|
|
637
|
+
},
|
|
638
|
+
},
|
|
639
|
+
required: ['width', 'height'],
|
|
640
|
+
},
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
name: 'page_emulate_device',
|
|
644
|
+
description: 'Emulate mobile device (iPhone, iPad, Android)',
|
|
645
|
+
inputSchema: {
|
|
646
|
+
type: 'object',
|
|
647
|
+
properties: {
|
|
648
|
+
device: {
|
|
649
|
+
type: 'string',
|
|
650
|
+
description: 'Device to emulate',
|
|
651
|
+
enum: ['iPhone', 'iPad', 'Android'],
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
required: ['device'],
|
|
655
|
+
},
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
name: 'page_get_local_storage',
|
|
659
|
+
description: 'Get all localStorage items',
|
|
660
|
+
inputSchema: {
|
|
661
|
+
type: 'object',
|
|
662
|
+
properties: {},
|
|
663
|
+
},
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: 'page_set_local_storage',
|
|
667
|
+
description: 'Set localStorage item',
|
|
668
|
+
inputSchema: {
|
|
669
|
+
type: 'object',
|
|
670
|
+
properties: {
|
|
671
|
+
key: {
|
|
672
|
+
type: 'string',
|
|
673
|
+
description: 'Storage key',
|
|
674
|
+
},
|
|
675
|
+
value: {
|
|
676
|
+
type: 'string',
|
|
677
|
+
description: 'Storage value',
|
|
678
|
+
},
|
|
679
|
+
},
|
|
680
|
+
required: ['key', 'value'],
|
|
681
|
+
},
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
name: 'page_press_key',
|
|
685
|
+
description: 'Press a keyboard key (e.g., "Enter", "Escape", "ArrowDown")',
|
|
686
|
+
inputSchema: {
|
|
687
|
+
type: 'object',
|
|
688
|
+
properties: {
|
|
689
|
+
key: {
|
|
690
|
+
type: 'string',
|
|
691
|
+
description: 'Key to press',
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
required: ['key'],
|
|
695
|
+
},
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
name: 'page_get_all_links',
|
|
699
|
+
description: 'Get all links on the page',
|
|
700
|
+
inputSchema: {
|
|
701
|
+
type: 'object',
|
|
702
|
+
properties: {},
|
|
703
|
+
},
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
name: 'captcha_detect',
|
|
707
|
+
description: `🤖 AI驱动的验证码检测器
|
|
708
|
+
|
|
709
|
+
**检测方式**:
|
|
710
|
+
1. 优先使用AI视觉识别(需要支持Vision的LLM模型)
|
|
711
|
+
2. AI不可用时,返回截图让外部AI智能体分析
|
|
712
|
+
3. 最后降级到基于规则的检测
|
|
713
|
+
|
|
714
|
+
**支持检测的验证码类型**:
|
|
715
|
+
- 滑块验证码 (Slider CAPTCHA): 极验、阿里云、腾讯等
|
|
716
|
+
- 图形验证码 (Image CAPTCHA)
|
|
717
|
+
- reCAPTCHA / hCaptcha
|
|
718
|
+
- Cloudflare Challenge
|
|
719
|
+
- 页面重定向到验证页
|
|
720
|
+
|
|
721
|
+
**返回结果包含**:
|
|
722
|
+
- detected: 是否检测到验证码
|
|
723
|
+
- type: 验证码类型
|
|
724
|
+
- vendor: 验证码厂商
|
|
725
|
+
- confidence: 检测置信度 (0-100)
|
|
726
|
+
- reasoning: AI的推理过程
|
|
727
|
+
- screenshot: 页面截图(base64编码)- 当MCP内部AI不可用时返回
|
|
728
|
+
- suggestions: 处理建议
|
|
729
|
+
|
|
730
|
+
**特殊情况**:
|
|
731
|
+
如果MCP内部LLM不支持Vision API(如使用DeepSeek),会返回:
|
|
732
|
+
- screenshot: base64编码的页面截图
|
|
733
|
+
- reasoning: 包含详细的分析提示词
|
|
734
|
+
- vendor: "external-ai-required"
|
|
735
|
+
此时请使用外部AI智能体(GPT-4o、Claude 3等)分析screenshot字段中的图片。`,
|
|
736
|
+
inputSchema: {
|
|
737
|
+
type: 'object',
|
|
738
|
+
properties: {},
|
|
739
|
+
},
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
name: 'captcha_wait',
|
|
743
|
+
description: `等待用户手动完成验证码
|
|
744
|
+
|
|
745
|
+
使用场景:
|
|
746
|
+
1. 检测到验证码后调用此工具
|
|
747
|
+
2. 工具会持续检测验证码是否完成
|
|
748
|
+
3. 验证完成后自动返回,继续执行后续任务
|
|
749
|
+
4. 超时后返回失败
|
|
750
|
+
|
|
751
|
+
注意:此工具会阻塞执行,直到验证完成或超时`,
|
|
752
|
+
inputSchema: {
|
|
753
|
+
type: 'object',
|
|
754
|
+
properties: {
|
|
755
|
+
timeout: {
|
|
756
|
+
type: 'number',
|
|
757
|
+
description: 'Timeout in milliseconds (default: 300000 = 5 minutes)',
|
|
758
|
+
default: 300000,
|
|
759
|
+
},
|
|
760
|
+
},
|
|
761
|
+
},
|
|
762
|
+
},
|
|
763
|
+
{
|
|
764
|
+
name: 'captcha_config',
|
|
765
|
+
description: `配置验证码检测选项
|
|
766
|
+
|
|
767
|
+
可配置项:
|
|
768
|
+
- autoDetectCaptcha: 是否在page_navigate后自动检测验证码 (默认true)
|
|
769
|
+
- autoSwitchHeadless: 是否检测到验证码时自动切换到有头模式 (默认true)
|
|
770
|
+
- captchaTimeout: 等待用户完成验证的超时时间,单位毫秒 (默认300000)`,
|
|
771
|
+
inputSchema: {
|
|
772
|
+
type: 'object',
|
|
773
|
+
properties: {
|
|
774
|
+
autoDetectCaptcha: {
|
|
775
|
+
type: 'boolean',
|
|
776
|
+
description: 'Whether to automatically detect CAPTCHA after navigation',
|
|
777
|
+
},
|
|
778
|
+
autoSwitchHeadless: {
|
|
779
|
+
type: 'boolean',
|
|
780
|
+
description: 'Whether to automatically switch to headed mode when CAPTCHA detected',
|
|
781
|
+
},
|
|
782
|
+
captchaTimeout: {
|
|
783
|
+
type: 'number',
|
|
784
|
+
description: 'Timeout for waiting user to complete CAPTCHA (milliseconds)',
|
|
785
|
+
},
|
|
786
|
+
},
|
|
787
|
+
},
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
name: 'stealth_inject',
|
|
791
|
+
description: `注入2024-2025最新反检测脚本
|
|
792
|
+
|
|
793
|
+
包含以下反检测技术:
|
|
794
|
+
1. 隐藏 navigator.webdriver 属性
|
|
795
|
+
2. 模拟真实的 window.chrome 对象
|
|
796
|
+
3. 添加真实的 navigator.plugins
|
|
797
|
+
4. 修复 Permissions API
|
|
798
|
+
5. Canvas 指纹一致性处理
|
|
799
|
+
6. WebGL 指纹模拟
|
|
800
|
+
7. 语言和时区设置
|
|
801
|
+
8. Battery API 模拟
|
|
802
|
+
9. MediaDevices 修复
|
|
803
|
+
10. Notification 权限模拟
|
|
804
|
+
|
|
805
|
+
基于以下项目的最佳实践:
|
|
806
|
+
- undetected-chromedriver
|
|
807
|
+
- puppeteer-extra-plugin-stealth
|
|
808
|
+
- playwright-stealth
|
|
809
|
+
|
|
810
|
+
建议在 browser_launch 后立即调用此工具`,
|
|
811
|
+
inputSchema: {
|
|
812
|
+
type: 'object',
|
|
813
|
+
properties: {},
|
|
814
|
+
},
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
name: 'stealth_set_user_agent',
|
|
818
|
+
description: `设置真实的User-Agent并确保一致性
|
|
819
|
+
|
|
820
|
+
会同时设置:
|
|
821
|
+
- User-Agent 字符串
|
|
822
|
+
- navigator.platform
|
|
823
|
+
- navigator.vendor
|
|
824
|
+
- navigator.hardwareConcurrency
|
|
825
|
+
- navigator.deviceMemory
|
|
826
|
+
|
|
827
|
+
确保所有属性与选择的平台一致,避免被检测`,
|
|
828
|
+
inputSchema: {
|
|
829
|
+
type: 'object',
|
|
830
|
+
properties: {
|
|
831
|
+
platform: {
|
|
832
|
+
type: 'string',
|
|
833
|
+
description: 'Target platform',
|
|
834
|
+
enum: ['windows', 'mac', 'linux'],
|
|
835
|
+
default: 'windows',
|
|
836
|
+
},
|
|
837
|
+
},
|
|
838
|
+
},
|
|
839
|
+
},
|
|
840
|
+
];
|
|
841
|
+
//# sourceMappingURL=BrowserToolDefinitions.js.map
|