Raw URL GitHub
{
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "view",
                "description": "View a file or directory. For files, optionally search within the file using a regex pattern or limit to a line range. Exclude the 'electron' folder by default unless explicitly requested.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string",
                            "enum": [
                                "file",
                                "directory"
                            ],
                            "description": "Whether to view a single file or a directory listing (up to 2 levels)."
                        },
                        "path": {
                            "type": "string",
                            "description": "Path relative to the repository root."
                        },
                        "view_range": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            },
                            "minItems": 2,
                            "maxItems": 2,
                            "description": "Optional [start_line, end_line] 1-based inclusive range for files."
                        },
                        "search_query_regex": {
                            "type": "string",
                            "description": "Optional regex to search within file content (single-line regex)."
                        },
                        "case_sensitive": {
                            "type": "boolean",
                            "default": false,
                            "description": "Whether the regex search is case-sensitive."
                        },
                        "context_lines_before": {
                            "type": "integer",
                            "default": 5,
                            "description": "Lines of context to include before each regex match."
                        },
                        "context_lines_after": {
                            "type": "integer",
                            "default": 5,
                            "description": "Lines of context to include after each regex match."
                        }
                    },
                    "required": [
                        "type",
                        "path"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "grep-search",
                "description": "Search across multiple files/directories or the whole codebase. Use for finding text/symbols across many files. Excludes 'electron/**' by default unless explicitly overridden.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "query": {
                            "type": "string",
                            "description": "Text or regex to search for."
                        },
                        "paths": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "Optional list of directories or files to limit the search scope."
                        },
                        "include_globs": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "Optional glob patterns to include (e.g., 'src/**/*.ts')."
                        },
                        "exclude_globs": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "default": [
                                "electron/**"
                            ],
                            "description": "Optional glob patterns to exclude. Defaults to excluding the 'electron' folder."
                        },
                        "case_sensitive": {
                            "type": "boolean",
                            "default": false,
                            "description": "Case sensitivity for the search."
                        },
                        "context_lines_before": {
                            "type": "integer",
                            "default": 5,
                            "description": "Lines of context before each match."
                        },
                        "context_lines_after": {
                            "type": "integer",
                            "default": 5,
                            "description": "Lines of context after each match."
                        },
                        "max_results": {
                            "type": "integer",
                            "default": 5000,
                            "description": "Limit the number of matches returned."
                        }
                    },
                    "required": [
                        "query"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "codebase-retrieval",
                "description": "High-level retrieval across the current codebase to locate relevant files, classes, functions, or patterns when you don't know where to look.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "information_request": {
                            "type": "string",
                            "description": "Natural-language description of what you need to find."
                        }
                    },
                    "required": [
                        "information_request"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "git-commit-retrieval",
                "description": "Use the repository’s commit history to find how similar changes were made in the past or why changes happened.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "information_request": {
                            "type": "string",
                            "description": "Question about past changes (e.g., how/why a feature was implemented)."
                        }
                    },
                    "required": [
                        "information_request"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "str-replace-editor",
                "description": "Edit existing files safely. Use 'str_replace' for in-place replacements with explicit line ranges, or 'insert' to insert new content at a specific line.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "command": {
                            "type": "string",
                            "enum": [
                                "str_replace",
                                "insert"
                            ],
                            "description": "Edit mode: 'str_replace' or 'insert'."
                        },
                        "path": {
                            "type": "string",
                            "description": "Path of the file to edit, relative to repo root."
                        },
                        "instruction_reminder": {
                            "type": "string",
                            "description": "Must be exactly: 'ALWAYS BREAK DOWN EDITS INTO SMALLER CHUNKS OF AT MOST 150 LINES EACH.'"
                        },
                        "insert_line_1": {
                            "type": "integer",
                            "description": "For 'insert': 1-based line number after which to insert. Use 0 to insert at the very beginning."
                        },
                        "new_str_1": {
                            "type": "string",
                            "description": "For 'str_replace' and 'insert': the new content."
                        },
                        "old_str_1": {
                            "type": "string",
                            "description": "For 'str_replace': the exact original text to replace (must match exactly, including whitespace)."
                        },
                        "old_str_start_line_number_1": {
                            "type": "integer",
                            "description": "For 'str_replace': 1-based start line of old_str_1."
                        },
                        "old_str_end_line_number_1": {
                            "type": "integer",
                            "description": "For 'str_replace': 1-based end line of old_str_1 (inclusive)."
                        }
                    },
                    "required": [
                        "command",
                        "path",
                        "instruction_reminder"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "save-file",
                "description": "Create a new file. Does not modify existing files.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "instructions_reminder": {
                            "type": "string",
                            "description": "Must be exactly: 'LIMIT THE FILE CONTENT TO AT MOST 300 LINES. IF MORE CONTENT NEEDS TO BE ADDED USE THE str-replace-editor TOOL TO EDIT THE FILE AFTER IT HAS BEEN CREATED.'"
                        },
                        "path": {
                            "type": "string",
                            "description": "Path for the new file, relative to repo root."
                        },
                        "file_content": {
                            "type": "string",
                            "description": "Content to write into the new file."
                        },
                        "add_last_line_newline": {
                            "type": "boolean",
                            "default": true,
                            "description": "Whether to ensure a trailing newline."
                        }
                    },
                    "required": [
                        "instructions_reminder",
                        "path",
                        "file_content"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "remove-files",
                "description": "Delete files from the workspace in a reversible way.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "file_paths": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "List of file paths to remove, relative to repo root."
                        }
                    },
                    "required": [
                        "file_paths"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "launch-process",
                "description": "Run a shell command. Use wait=true for short commands. OS is win32; shell is 'bash'.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "command": {
                            "type": "string",
                            "description": "The shell command to execute."
                        },
                        "wait": {
                            "type": "boolean",
                            "description": "Whether to wait for the process to complete."
                        },
                        "max_wait_seconds": {
                            "type": "integer",
                            "description": "Timeout in seconds when wait=true."
                        },
                        "cwd": {
                            "type": "string",
                            "description": "Absolute working directory for the command."
                        }
                    },
                    "required": [
                        "command",
                        "wait",
                        "max_wait_seconds",
                        "cwd"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "read-process",
                "description": "Read output from a previously launched process.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "terminal_id": {
                            "type": "integer",
                            "description": "Target terminal ID."
                        },
                        "wait": {
                            "type": "boolean",
                            "description": "Whether to wait for completion."
                        },
                        "max_wait_seconds": {
                            "type": "integer",
                            "description": "Timeout when wait=true."
                        }
                    },
                    "required": [
                        "terminal_id",
                        "wait",
                        "max_wait_seconds"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "write-process",
                "description": "Write input to a running process’s stdin.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "terminal_id": {
                            "type": "integer",
                            "description": "Target terminal ID."
                        },
                        "input_text": {
                            "type": "string",
                            "description": "Text to write to stdin."
                        }
                    },
                    "required": [
                        "terminal_id",
                        "input_text"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "kill-process",
                "description": "Kill a running process by terminal ID.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "terminal_id": {
                            "type": "integer",
                            "description": "Target terminal ID."
                        }
                    },
                    "required": [
                        "terminal_id"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "list-processes",
                "description": "List all known terminals created with the launch-process tool.",
                "parameters": {
                    "type": "object",
                    "properties": [],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "diagnostics",
                "description": "Return IDE issues (errors, warnings, etc.) for specified files.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "paths": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "List of file paths to get issues for."
                        }
                    },
                    "required": [
                        "paths"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "read-terminal",
                "description": "Read the visible output from the active or most-recently used VSCode terminal.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "only_selected": {
                            "type": "boolean",
                            "description": "Whether to read only the selected text."
                        }
                    },
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "open-browser",
                "description": "Open a URL in the default browser.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "url": {
                            "type": "string",
                            "description": "URL to open."
                        }
                    },
                    "required": [
                        "url"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "web-search",
                "description": "Search the web using Google Custom Search API.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "query": {
                            "type": "string",
                            "description": "Search query."
                        },
                        "num_results": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 10,
                            "default": 5,
                            "description": "Number of results to return (1–10)."
                        }
                    },
                    "required": [
                        "query"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "web-fetch",
                "description": "Fetch a webpage and return its content in Markdown format.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "url": {
                            "type": "string",
                            "description": "URL to fetch."
                        }
                    },
                    "required": [
                        "url"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "view-range-untruncated",
                "description": "View a specific line range from previously truncated content by reference ID.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "reference_id": {
                            "type": "string",
                            "description": "Reference ID from truncation footer."
                        },
                        "start_line": {
                            "type": "integer",
                            "description": "1-based inclusive start line."
                        },
                        "end_line": {
                            "type": "integer",
                            "description": "1-based inclusive end line."
                        }
                    },
                    "required": [
                        "reference_id",
                        "start_line",
                        "end_line"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "search-untruncated",
                "description": "Search within previously untruncated content by reference ID.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "reference_id": {
                            "type": "string",
                            "description": "Reference ID from truncation footer."
                        },
                        "search_term": {
                            "type": "string",
                            "description": "Text to search for."
                        },
                        "context_lines": {
                            "type": "integer",
                            "default": 2,
                            "description": "Context lines around matches."
                        }
                    },
                    "required": [
                        "reference_id",
                        "search_term"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "view_tasklist",
                "description": "View the current task list for the conversation.",
                "parameters": {
                    "type": "object",
                    "properties": [],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "add_tasks",
                "description": "Add one or more new tasks (and optional subtasks) to the task list.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "tasks": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "parent_task_id": {
                                        "type": "string"
                                    },
                                    "after_task_id": {
                                        "type": "string"
                                    },
                                    "state": {
                                        "type": "string",
                                        "enum": [
                                            "NOT_STARTED",
                                            "IN_PROGRESS",
                                            "CANCELLED",
                                            "COMPLETE"
                                        ]
                                    }
                                },
                                "required": [
                                    "name",
                                    "description"
                                ],
                                "additionalProperties": false
                            }
                        }
                    },
                    "required": [
                        "tasks"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "update_tasks",
                "description": "Update one or more tasks' properties (state, name, description). Prefer batch updates.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "tasks": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "task_id": {
                                        "type": "string"
                                    },
                                    "state": {
                                        "type": "string",
                                        "enum": [
                                            "NOT_STARTED",
                                            "IN_PROGRESS",
                                            "CANCELLED",
                                            "COMPLETE"
                                        ]
                                    },
                                    "name": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "task_id"
                                ],
                                "additionalProperties": false
                            }
                        }
                    },
                    "required": [
                        "tasks"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "reorganize_tasklist",
                "description": "Major restructuring of the task list using a full markdown representation.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "markdown": {
                            "type": "string",
                            "description": "Full task list in markdown with exactly one root task."
                        }
                    },
                    "required": [
                        "markdown"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "remember",
                "description": "Store long-term memory that can be useful in future interactions.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "memory": {
                            "type": "string",
                            "description": "One concise sentence to remember."
                        }
                    },
                    "required": [
                        "memory"
                    ],
                    "additionalProperties": false
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "render-mermaid",
                "description": "Render a Mermaid diagram from the provided definition.",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "diagram_definition": {
                            "type": "string",
                            "description": "Mermaid definition code."
                        },
                        "title": {
                            "type": "string",
                            "description": "Optional title for the diagram."
                        }
                    },
                    "required": [
                        "diagram_definition"
                    ],
                    "additionalProperties": false
                }
            }
        }
    ]
}