tool:
  schema_version: 1.0
  id: browser
  type: mcp
  name: Browser Automation
  version: 1.0.0
  description: Puppeteer-based browser automation for web scraping, testing, and interaction with web applications
  knowledge_strategy: declarative

  capabilities:
    - Navigate to URLs and take screenshots
    - Execute JavaScript in browser context
    - Click elements and fill forms
    - Extract content from web pages
    - Handle dynamic content and SPAs
    - Capture network requests
    - Manage cookies and local storage
    - Perform automated testing

  use_cases:
    - web_scraping: "Extract data from dynamic websites"
    - automated_testing: "Test web applications end-to-end"
    - screenshot_capture: "Capture visual representations of pages"
    - form_automation: "Automate form filling and submissions"
    - spa_interaction: "Interact with single-page applications"
    - performance_monitoring: "Capture network timing and metrics"

  mcp_specific:
    server_command: "npx -y @modelcontextprotocol/server-puppeteer"
    transport: stdio
    environment_variables:
      - name: PUPPETEER_EXECUTABLE_PATH
        required: false
        description: "Optional path to Chrome/Chromium executable"
    health_check:
      method: tool_call
      command: puppeteer_navigate
      expected_response: "Navigation success"
      timeout_ms: 30000

  tools:
    - id: puppeteer_navigate
      description: "Navigate browser to a URL"
      parameters:
        - url: "URL to navigate to"
        - waitUntil: "Navigation event to wait for (load, domcontentloaded, networkidle0, networkidle2)"

    - id: puppeteer_screenshot
      description: "Capture screenshot of current page"
      parameters:
        - name: "Filename for screenshot"
        - fullPage: "Capture full scrollable page (default: false)"
        - type: "Image format (png, jpeg, webp)"

    - id: puppeteer_click
      description: "Click an element on the page"
      parameters:
        - selector: "CSS selector for element to click"
        - waitForNavigation: "Wait for navigation after click"

    - id: puppeteer_fill
      description: "Fill an input field"
      parameters:
        - selector: "CSS selector for input element"
        - value: "Value to type into input"

    - id: puppeteer_evaluate
      description: "Execute JavaScript in browser context"
      parameters:
        - script: "JavaScript code to execute"
        - args: "Optional arguments to pass to script"

    - id: puppeteer_content
      description: "Get HTML content of current page"
      parameters: []

    - id: puppeteer_pdf
      description: "Generate PDF of current page"
      parameters:
        - path: "Filename for PDF"
        - format: "Paper format (A4, Letter, etc.)"
        - landscape: "Landscape orientation (default: false)"

  best_practices:
    - "Always navigate to page before interacting with elements"
    - "Use appropriate waitUntil strategies for different page types"
    - "Handle navigation timeouts gracefully"
    - "Close browser instances when done to free resources"
    - "Use headless mode for better performance unless debugging"
    - "Respect robots.txt and rate limits when scraping"

  security_considerations:
    - "Be cautious when executing user-provided JavaScript"
    - "Validate URLs before navigation"
    - "Be aware of XSS risks in evaluated scripts"
    - "Don't expose sensitive data in screenshots"

  limitations:
    - "Requires Chrome/Chromium installation"
    - "Resource intensive for multiple concurrent browsers"
    - "Some sites may block or detect automation"
    - "Navigation can be slow for heavy pages"
    - "May not work with all authentication flows"
