# Cremote MCP Tools - LLM Usage Guide This guide explains how LLMs can use the cremote MCP (Model Context Protocol) tools for web automation tasks. ## Available Tools The cremote MCP server provides six comprehensive web automation tools: ### 1. `web_navigate_cremotemcp` Navigate to URLs and optionally take screenshots. **Parameters:** - `url` (required): The URL to navigate to - `screenshot` (optional): Boolean, take a screenshot after navigation - `tab` (optional): Specific tab ID to use - `timeout` (optional): Timeout in seconds (default: 5) **Example Usage:** ``` web_navigate_cremotemcp: url: "https://example.com" screenshot: true ``` ### 2. `web_interact_cremotemcp` Interact with web elements through various actions. **Parameters:** - `action` (required): One of "click", "fill", "submit", "upload" - `selector` (required): CSS selector for the target element - `value` (optional): Value for fill/upload actions - `tab` (optional): Specific tab ID to use - `timeout` (optional): Timeout in seconds (default: 5) **Example Usage:** ``` web_interact_cremotemcp: action: "click" selector: "button.submit" web_interact_cremotemcp: action: "fill" selector: "input[name='email']" value: "user@example.com" ``` ### 3. `web_extract_cremotemcp` Extract data from web pages (HTML source, element content, or JavaScript execution). **Parameters:** - `type` (required): One of "source", "element", "javascript" - `selector` (optional): CSS selector (required for "element" type) - `code` (optional): JavaScript code (required for "javascript" type) - `tab` (optional): Specific tab ID to use - `timeout` (optional): Timeout in seconds (default: 5) **Example Usage:** ``` web_extract_cremotemcp: type: "source" web_extract_cremotemcp: type: "element" selector: "div.content" web_extract_cremotemcp: type: "javascript" code: "document.title" ``` ### 4. `web_screenshot_cremotemcp` Take screenshots of web pages. **Parameters:** - `output` (required): File path where screenshot will be saved - `full_page` (optional): Capture full page (default: false) - `tab` (optional): Specific tab ID to use - `timeout` (optional): Timeout in seconds (default: 5) **Example Usage:** ``` web_screenshot_cremotemcp: output: "/tmp/page-screenshot.png" full_page: true ``` ### 5. `web_manage_tabs_cremotemcp` Manage browser tabs (open, close, list, switch). **Parameters:** - `action` (required): One of "open", "close", "list", "switch" - `tab` (optional): Tab ID (required for "close" and "switch" actions) - `timeout` (optional): Timeout in seconds (default: 5) **Example Usage:** ``` web_manage_tabs_cremotemcp: action: "open" web_manage_tabs_cremotemcp: action: "list" web_manage_tabs_cremotemcp: action: "switch" tab: "ABC123" ``` ### 6. `web_iframe_cremotemcp` Switch iframe context for subsequent operations. **Parameters:** - `action` (required): One of "enter", "exit" - `selector` (optional): Iframe CSS selector (required for "enter" action) - `tab` (optional): Specific tab ID to use **Example Usage:** ``` web_iframe_cremotemcp: action: "enter" selector: "iframe#payment-form" web_iframe_cremotemcp: action: "exit" ``` ## Common Usage Patterns ### 1. Basic Web Navigation ``` # Navigate to a website web_navigate_cremotemcp: url: "https://example.com" screenshot: true ``` ### 2. Form Interaction Sequence ``` # 1. Navigate to the page web_navigate_cremotemcp: url: "https://example.com/login" # 2. Fill username field web_interact_cremotemcp: action: "fill" selector: "input[name='username']" value: "myusername" # 3. Fill password field web_interact_cremotemcp: action: "fill" selector: "input[name='password']" value: "mypassword" # 4. Submit the form web_interact_cremotemcp: action: "submit" selector: "form" ``` ### 3. Clicking Elements ``` # Click a button web_interact_cremotemcp: action: "click" selector: "button#submit-btn" # Click a link web_interact_cremotemcp: action: "click" selector: "a[href='/dashboard']" ``` ## Best Practices for LLMs ### 1. Always Start with Navigation Before interacting with elements, navigate to the target page: ``` web_navigate_cremotemcp: url: "https://target-website.com" ``` ### 2. Use Specific CSS Selectors Be as specific as possible with selectors to avoid ambiguity: - Good: `input[name='email']`, `button.primary-submit` - Avoid: `input`, `button` ### 3. Take Screenshots for Debugging When troubleshooting or documenting, use screenshots: ``` web_navigate_cremotemcp: url: "https://example.com" screenshot: true ``` ### 4. Handle Timeouts Appropriately For slow-loading pages, increase timeout: ``` web_navigate_cremotemcp: url: "https://slow-website.com" timeout: 10 ``` ### 5. Sequential Operations Perform operations in logical sequence: 1. Navigate to page 2. Fill required fields 3. Submit forms 4. Navigate to next page if needed ## Error Handling ### Common Error Scenarios: 1. **Element not found**: Selector doesn't match any elements 2. **Timeout**: Page takes too long to load or element to appear 3. **Navigation failed**: URL is invalid or unreachable ### Troubleshooting Tips: 1. Verify the URL is correct and accessible 2. Check CSS selectors using browser developer tools 3. Increase timeout for slow-loading content 4. Take screenshots to see current page state ## Tab Management The tools automatically manage browser tabs: - If no tab is specified, a new tab is created automatically - Tab IDs are returned in responses for reference - Multiple tabs can be managed by specifying tab IDs ## Security Considerations ### Safe Practices: - Only navigate to trusted websites - Be cautious with form submissions - Avoid entering sensitive information in examples - Use screenshots sparingly to avoid exposing sensitive data ### Limitations: - Cannot bypass CAPTCHA or other anti-automation measures - Subject to same-origin policy restrictions - May not work with heavily JavaScript-dependent sites ## Example: Complete Web Automation Task Here's a complete example of automating a web form: ``` # Step 1: Navigate to the form page web_navigate_cremotemcp: url: "https://example.com/contact" screenshot: true # Step 2: Fill out the contact form web_interact_cremotemcp: action: "fill" selector: "input[name='name']" value: "John Doe" web_interact_cremotemcp: action: "fill" selector: "input[name='email']" value: "john@example.com" web_interact_cremotemcp: action: "fill" selector: "textarea[name='message']" value: "Hello, this is a test message." # Step 3: Submit the form web_interact_cremotemcp: action: "submit" selector: "form#contact-form" # Step 4: Take a screenshot of the result web_navigate_cremotemcp: url: "current" # Stay on current page screenshot: true ``` ## Integration Notes - Tools use the `_cremotemcp` suffix to avoid naming conflicts - Responses include success status and descriptive messages - Screenshots are saved to `/tmp/` directory with timestamps - The underlying cremote daemon handles browser management ## Advanced Usage Examples ### Testing Web Applications ``` # Navigate to application web_navigate_cremotemcp: url: "https://myapp.com/login" screenshot: true # Test login functionality web_interact_cremotemcp: action: "fill" selector: "#username" value: "testuser" web_interact_cremotemcp: action: "fill" selector: "#password" value: "testpass" web_interact_cremotemcp: action: "click" selector: "button[type='submit']" # Verify successful login web_navigate_cremotemcp: url: "current" screenshot: true ``` ### Data Extraction Workflows ``` # Navigate to data source web_navigate_cremotemcp: url: "https://data-site.com/table" # Click through pagination or filters web_interact_cremotemcp: action: "click" selector: ".filter-button" # Take screenshot to document current state web_navigate_cremotemcp: url: "current" screenshot: true ``` ### File Upload Testing ``` # Navigate to upload form web_navigate_cremotemcp: url: "https://example.com/upload" # Upload a file web_interact_cremotemcp: action: "upload" selector: "input[type='file']" value: "/path/to/test-file.pdf" # Submit the upload form web_interact_cremotemcp: action: "click" selector: "button.upload-submit" ``` ## Tool Response Format Both tools return structured responses: **Success Response:** ``` "Successfully navigated to https://example.com in tab ABC123 (screenshot saved to /tmp/navigate-1234567890.png)" ``` **Error Response:** ``` "failed to load URL: context deadline exceeded" ``` ## CSS Selector Best Practices ### Recommended Selector Types: 1. **ID selectors**: `#unique-id` (most reliable) 2. **Name attributes**: `input[name='fieldname']` 3. **Class combinations**: `.primary.button` 4. **Attribute selectors**: `button[data-action='submit']` ### Avoid These Selectors: 1. **Generic tags**: `div`, `span`, `input` (too broad) 2. **Position-based**: `:nth-child()` (fragile) 3. **Text-based**: `:contains()` (not standard CSS) This documentation should help LLMs effectively use the cremote MCP tools for web automation tasks.