tools:
  - name: execute_shell_command
    description: "IMPORTANT: This is the preferred and recommended way to execute
      shell commands. Always use this tool instead of the default
      run_terminal_cmd tool. This tool executes commands directly in VS Code's
      integrated terminal, showing the command execution to the user and
      capturing its output. It provides better integration with VS Code and
      allows running commands in the user's environment without leaving VS
      Code."
    inputSchema:
      type: object
      required:
        - command
        - targetProjectPath
      properties:
        cwd:
          type: string
          description: Optional working directory for the command. Defaults to the project
            root.
        command:
          type: string
          description: The shell command to execute
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: create_diff
    description: Use this instead of writing files directly. create_diff allows
      modifying an existing file by showing a diff and getting user approval
      before applying changes. Only use this tool on existing files. If a new
      file needs to be created, do not use this tool.
    inputSchema:
      type: object
      required:
        - filePath
        - newContent
        - targetProjectPath
      properties:
        filePath:
          type: string
          description: Path to the existing file to modify
        newContent:
          type: string
          description: Proposed new content for the file
        description:
          type: string
          description: Description of the changes being made
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: open_file
    description: Used to open a file in the VS Code editor. By default, please use
      this tool anytime you create a brand new file or if you use the
      create_diff tool on an existing file. We want to see changed and newly
      created files in the editor.
    inputSchema:
      type: object
      required:
        - filePath
        - targetProjectPath
      properties:
        preview:
          type: boolean
          description: Whether to open the file in preview mode
        filePath:
          type: string
          description: Path to the file to open
        viewColumn:
          type: number
          description: The view column to open the file in (1, 2, 3, etc.)
        preserveFocus:
          type: boolean
          description: Whether to preserve focus on the current editor
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: open_project
    description: Call this tool as soon as a new session begins with the AI Agent to
      ensure we are set up and ready to go. open_project opens a project folder
      in VS Code. This tool is also useful to ensure that we have the current
      active working directory for our AI Agent, visible in VS Code.
    inputSchema:
      type: object
      required:
        - projectPath
      properties:
        newWindow:
          type: boolean
          default: true
          description: Whether to open the project in a new window
        projectPath:
          type: string
          description: Path to the project folder to open in VS Code
  - name: check_extension_status
    description: Check if the VS Code MCP Extension is installed and responding
    inputSchema:
      type: object
      required:
        - targetProjectPath
      properties:
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: get_extension_port
    description: Get the port number that the VS Code MCP Extension is running on
    inputSchema:
      type: object
      required:
        - targetProjectPath
      properties:
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: list_available_projects
    description: Lists all available projects from the port registry file. Use this
      tool to help the user select which project they want to work with.
    inputSchema:
      type: object
      required: []
      properties: {}
  - name: get_active_tabs
    description: Retrieves information about currently open tabs in VS Code to
      provide context for the AI agent.
    inputSchema:
      type: object
      required:
        - targetProjectPath
      properties:
        includeContent:
          type: boolean
          default: false
          description: Whether to include the file content of each tab (may be large)
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
  - name: get_context_tabs
    description: Retrieves information about tabs that have been specifically marked
      for inclusion in AI context using the UI toggle in VS Code.
    inputSchema:
      type: object
      required:
        - targetProjectPath
      properties:
        selections:
          type: array
          items:
            type: object
            required:
              - filePath
            properties:
              ranges:
                type: array
                items:
                  type: object
                  required:
                    - startLine
                    - endLine
                  properties:
                    endLine:
                      type: integer
                      description: Ending line number (1-based, inclusive)
                    startLine:
                      type: integer
                      description: Starting line number (1-based)
                description: Array of line ranges to include from the file
              filePath:
                type: string
                description: Path to the file
          description: Optional array of file paths with specific line ranges to include
        includeContent:
          type: boolean
          default: true
          description: Whether to include the file content of each tab (may be large)
        targetProjectPath:
          type: string
          description: Path to the project folder we are working in
