tools:
  - name: how-to-use
    description: Description of how to use the server
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - section
      properties:
        section:
          enum:
            - checkpoint
            - hmr
          type: string
          description: Section to describe
      additionalProperties: false
  - name: get-hmr-events
    description: Retrieves recent HMR events
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      properties:
        limit:
          type: number
          description: Maximum number of events to return
      additionalProperties: false
  - name: start-browser
    description: Launches a browser instance and navigates to the Vite dev server
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      properties:
        headless:
          type: boolean
          description: Run browser in headless mode
        viteServerUrl:
          type: string
          description: "URL of the Vite dev server (default: http://localhost:5173)"
      additionalProperties: false
  - name: capture-screenshot
    description: >-
      Captures a screenshot of the current page or a specific element.

      This feature is for MCP Clients that do not support MCP Resource and image
      content type.

      If the image is successfully saved, you should request the user to provide
      the image.
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - projectRoot
      properties:
        url:
          type: string
          description: URL to navigate to before capturing screenshot
        selector:
          type: string
          description: CSS selector to capture (captures full page if not provided)
        projectRoot:
          type: string
          description: Root directory path of the development project
      additionalProperties: false
  - name: get-element-properties
    description: Retrieves properties and state information of a specific element
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - selector
        - properties
      properties:
        selector:
          type: string
          description: CSS selector of the element to inspect
        properties:
          type: array
          items:
            type: string
          description: Array of property names to retrieve (e.g., ['value', 'checked',
            'textContent'])
      additionalProperties: false
  - name: get-element-styles
    description: Retrieves style information of a specific element
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - selector
        - styleProperties
      properties:
        selector:
          type: string
          description: CSS selector of the element to inspect
        styleProperties:
          type: array
          items:
            type: string
          description: Array of style property names to retrieve (e.g., ['color',
            'fontSize', 'backgroundColor'])
      additionalProperties: false
  - name: get-element-dimensions
    description: Retrieves dimension and position information of a specific element
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - selector
      properties:
        selector:
          type: string
          description: CSS selector of the element to inspect
      additionalProperties: false
  - name: monitor-network
    description: Monitors network requests in the browser for a specified duration
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      properties:
        duration:
          type: number
          description: "Duration in milliseconds to monitor (default: 5000)"
        urlPattern:
          type: string
          description: URL pattern to filter (regex string)
      additionalProperties: false
  - name: get-element-html
    description: Retrieves the HTML content of a specific element and its children
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - selector
      properties:
        selector:
          type: string
          description: CSS selector of the element to inspect
        includeOuter:
          type: boolean
          description: "If true, includes the selected element's outer HTML; otherwise
            returns only inner HTML (default: false)"
      additionalProperties: false
  - name: get-console-logs
    description: Retrieves console logs from the development server
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      properties:
        limit:
          type: number
          description: Number of logs to return, starting from the most recent log
        checkpoint:
          type: string
          description: If specified, returns only logs recorded at this checkpoint
      additionalProperties: false
  - name: execute-browser-commands
    description: >-
      Executes a sequence of predefined browser commands safely. Available
      commands:


      - click: Clicks on an element matching the selector or at specified
      coordinates

      - type: Types text into an input element

      - wait: Waits for an element, a specified time period, or a condition

      - navigate: Navigates to a specified URL

      - select: Selects an option in a dropdown

      - check: Checks or unchecks a checkbox

      - hover: Hovers over an element

      - focus: Focuses an element

      - blur: Removes focus from an element

      - keypress: Simulates pressing a keyboard key

      - scroll: Scrolls the page or an element

      - getAttribute: Gets an attribute value from an element

      - getProperty: Gets a property value from an element

      - drag: Performs a drag operation from one position to another

      - refresh: Refreshes the current page


      Note on coordinates: For all mouse-related commands (click, drag, etc.),
      coordinates are relative to the browser viewport

      where (0,0) is the top-left corner. X increases to the right, Y increases
      downward.


      Examples are available in the schema definition.
    inputSchema:
      type: object
      $schema: http://json-schema.org/draft-07/schema#
      required:
        - commands
      properties:
        timeout:
          type: number
          description: "Overall timeout in milliseconds (default: 30000)"
        commands:
          type: array
          items:
            anyOf:
              - type: object
                required:
                  - command
                properties:
                  args:
                    type: object
                    required:
                      - y
                    properties:
                      x:
                        type: number
                        description: X coordinate to click (used instead of selector)
                      y:
                        type: number
                        description: Y coordinate to click (used instead of selector)
                      delay:
                        type: number
                        description: "Delay between mousedown and mouseup in ms (default: 0)"
                      button:
                        enum:
                          - left
                          - right
                          - middle
                        type: string
                        description: "Mouse button to use (default: left)"
                      clickCount:
                        type: number
                        description: "Number of clicks (default: 1)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: click
                  selector:
                    type: string
                    description: CSS selector of element to click (required unless x,y coordinates
                      are provided)
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                properties:
                  args:
                    type: object
                    required:
                      - text
                    properties:
                      text:
                        type: string
                        description: Text to type into the element
                      delay:
                        type: number
                        description: "Delay between keystrokes in ms (default: 0)"
                      clearFirst:
                        type: boolean
                        description: "Whether to clear the input field before typing (default: false)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: type
                  selector:
                    type: string
                    description: CSS selector of input element to type into
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                properties:
                  args:
                    type: object
                    properties:
                      time:
                        type: number
                        description: Time to wait in milliseconds (use this or selector)
                      timeout:
                        type: number
                        description: "Maximum time to wait in ms (default: 5000)"
                      visible:
                        type: boolean
                        description: "Wait for element to be visible (default: true)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: wait
                  selector:
                    type: string
                    description: CSS selector to wait for
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - url
                    properties:
                      url:
                        type: string
                        description: URL to navigate to
                      waitUntil:
                        enum:
                          - load
                          - domcontentloaded
                          - networkidle0
                          - networkidle2
                        type: string
                        description: "Navigation wait condition (default: networkidle0)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: navigate
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - sourceX
                      - sourceY
                      - offsetX
                      - offsetY
                    properties:
                      steps:
                        type: number
                        description: "Number of intermediate steps for smooth drag (default: 10)"
                      offsetX:
                        type: number
                        description: Horizontal distance to drag (positive for right, negative for left)
                      offsetY:
                        type: number
                        description: Vertical distance to drag (positive for down, negative for up)
                      sourceX:
                        type: number
                        description: X coordinate to start the drag from (distance from left edge of
                          viewport)
                      sourceY:
                        type: number
                        description: Y coordinate to start the drag from (distance from top edge of
                          viewport)
                      smoothDrag:
                        type: boolean
                        description: "Whether to perform a smooth, gradual drag movement (default:
                          false)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: drag
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - value
                    properties:
                      value:
                        type: string
                        description: Value of the option to select
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: select
                  selector:
                    type: string
                    description: CSS selector of select element
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                properties:
                  args:
                    type: object
                    properties:
                      checked:
                        type: boolean
                        description: "Whether to check or uncheck the box (default: true)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: check
                  selector:
                    type: string
                    description: CSS selector of checkbox element
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                properties:
                  args:
                    type: object
                    properties:
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: hover
                  selector:
                    type: string
                    description: CSS selector of element to hover over
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                properties:
                  args:
                    type: object
                    properties:
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: focus
                  selector:
                    type: string
                    description: CSS selector of element to focus
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                properties:
                  args:
                    type: object
                    properties:
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: blur
                  selector:
                    type: string
                    description: CSS selector of element to blur
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - key
                    properties:
                      key:
                        type: string
                        description: Key to press (e.g., 'Enter', 'Tab', 'ArrowDown')
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: keypress
                  selector:
                    type: string
                    description: CSS selector of element to target (optional)
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                properties:
                  args:
                    type: object
                    properties:
                      x:
                        type: number
                        description: "Horizontal scroll amount in pixels (default: 0)"
                      y:
                        type: number
                        description: "Vertical scroll amount in pixels (default: 0)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: scroll
                  selector:
                    type: string
                    description: CSS selector of element to scroll (scrolls page if not provided)
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - name
                    properties:
                      name:
                        type: string
                        description: Name of the attribute to retrieve
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: getAttribute
                  selector:
                    type: string
                    description: CSS selector of element
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                  - selector
                  - args
                properties:
                  args:
                    type: object
                    required:
                      - name
                    properties:
                      name:
                        type: string
                        description: Name of the property to retrieve
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: getProperty
                  selector:
                    type: string
                    description: CSS selector of element
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
              - type: object
                required:
                  - command
                properties:
                  args:
                    type: object
                    properties:
                      waitUntil:
                        enum:
                          - load
                          - domcontentloaded
                          - networkidle0
                          - networkidle2
                        type: string
                        description: "Navigation wait condition (default: networkidle0)"
                      continueOnError:
                        type: boolean
                        description: Whether to continue executing commands if this command fails
                    additionalProperties: false
                  command:
                    type: string
                    const: refresh
                  description:
                    type: string
                    description: Description of this command step
                additionalProperties: false
          description: Array of commands to execute in sequence
      additionalProperties: false
