{
"name": "run_command",
"description": "PROPOSE a command to run on behalf of the user. Operating System: linux. Shell: bash.\n**NEVER PROPOSE A cd COMMAND**.\nIf you have this tool, note that you DO have the ability to run commands directly on the USER's system.\nMake sure to specify CommandLine exactly as it should be run in the shell.\nIf the step doesn't return the command output, it means that the command was sent to the background as a task. You will receive messages with the command's output as it runs. To interact with a running command, use the manage_task tool. Use `send_input` to send stdin, `kill` to terminate the command, and `status` to check current status. IMPORTANT: Do NOT poll or loop on `status` to wait for completion. The system will automatically notify you with a message when the command finishes. Simply proceed with other work or stop calling tools after launching a command.\nCommands will be run with PAGER=cat. You may want to limit the length of output for commands that usually rely on paging and may contain very long output (e.g. git log, use git log -n ).",
"parameters": {
"type": "OBJECT",
"properties": {
"CommandLine": { "type": "STRING", "description": "The exact command line string to execute." },
"Cwd": { "type": "STRING", "description": "The current working directory for the command" },
"RequestedTerminalID": { "type": "STRING", "description": "Optional ID of a persistent terminal to reuse." },
"RunPersistent": { "type": "BOOLEAN", "description": "Set to true to run this command in a persistent terminal." },
"WaitMsBeforeAsync": { "type": "INTEGER", "description": "Milliseconds to wait after starting before sending to background." },
"toolAction": { "type": "STRING", "description": "Brief 2-5 word summary of what this tool is doing." },
"toolSummary": { "type": "STRING", "description": "Brief 2-5 word noun phrase describing what this tool call is about." }
},
"required": ["Cwd", "WaitMsBeforeAsync", "CommandLine", "toolSummary", "toolAction"]
}
}
{
"name": "view_file",
"description": "View the contents of a file from the local filesystem. This tool supports text files and following binary files: image, pdf, video, audio.\nText file usage:\n- The lines of the file are 1-indexed\n- You can view at most 800 lines at a time\n- Specify StartLine and EndLine to view the lines of the file using slice notation:\n - Omit both to view the entire file, or the first 800 lines of the file, whichever is smaller.\n - Specify StartLine only to view the remaining lines of the file, or the next 800 lines, whichever is smaller\n - Specify EndLine only to view the remaining preceding lines of the file, or the previous 800 lines, whichever is smaller\n - Specify both to view a precise line range. This range must be smaller than 800 lines or only the first 800 lines of the range will be shown.\n- Content is limited to 46080 bytes per view. If content is truncated, use the ContentOffset parameter to view the remaining content\nBinary file usage:\n- Do not provide StartLine or EndLine arguments, this tool always returns the entire file\n- Files larger than 100 MB cannot be viewed.",
"parameters": {
"type": "OBJECT",
"properties": {
"AbsolutePath": { "type": "STRING", "description": "Path to file to view. Must be an absolute path." },
"ContentOffset": { "type": "INTEGER", "description": "Optional byte offset into content." },
"StartLine": { "type": "INTEGER", "description": "Optional start line, 1-indexed, inclusive." },
"EndLine": { "type": "INTEGER", "description": "Optional end line, 1-indexed, inclusive." },
"toolAction": { "type": "STRING", "description": "Brief 2-5 word summary of what this tool is doing." },
"toolSummary": { "type": "STRING", "description": "Brief 2-5 word noun phrase describing what this tool call is about." }
},
"required": ["AbsolutePath", "toolSummary", "toolAction"]
}
}
{
"name": "replace_file_content",
"description": "Use this tool to edit an existing file. Follow these rules:\n1. Use this tool ONLY when you are making a SINGLE CONTIGUOUS block of edits to the same file (i.e. replacing a single contiguous block of text).\n2. Do NOT make multiple parallel calls to this tool for the same file.\n3. To edit multiple, non-adjacent lines of code in the same file, make multiple calls to this tool.\n4. For the ReplacementChunk, specify StartLine, EndLine, TargetContent and ReplacementContent. StartLine and EndLine should specify a range of lines containing precisely the instances of TargetContent that you wish to edit. To edit a single instance of the TargetContent, the range should be such that it contains that specific instance of the TargetContent and no other instances. In TargetContent, specify the precise lines of code to edit. These lines MUST EXACTLY MATCH text in the existing file content. In ReplacementContent, specify the replacement content for the specified target content. This must be a complete drop-in replacement of the TargetContent, with necessary modifications made.\n5. If you are making multiple edits across a single file, make multiple calls to this tool. DO NOT try to replace the entire existing content with the new content, this is very expensive.\n6. You may not edit file extensions: [.ipynb]",
"parameters": {
"type": "OBJECT",
"properties": {
"TargetFile": { "type": "STRING", "description": "The target file to modify. Must be an absolute path. Always specify the target file as the very first argument." },
"Instruction": { "type": "STRING", "description": "A description of the changes that you are making to the file." },
"Description": { "type": "STRING", "description": "Brief, user-facing explanation of what this change did. Focus on non-obvious rationale, design decisions, or important context. Don't just restate what the code does." },
"StartLine": { "type": "INTEGER", "description": "The starting line number of the chunk (1-indexed)." },
"EndLine": { "type": "INTEGER", "description": "The ending line number of the chunk (1-indexed)." },
"TargetContent": { "type": "STRING", "description": "The exact string to be replaced. This must be the exact character-sequence to be replaced, including whitespace." },
"ReplacementContent": { "type": "STRING", "description": "The content to replace the target content with. This must be a complete drop-in replacement of the TargetContent." },
"AllowMultiple": { "type": "BOOLEAN", "description": "If true, multiple occurrences will be replaced. Otherwise error." },
"TargetLintErrorIds": { "type": "ARRAY", "items": { "type": "STRING" } },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["TargetFile", "Instruction", "Description", "AllowMultiple", "TargetContent", "ReplacementContent", "StartLine", "EndLine", "toolSummary", "toolAction"]
}
}
{
"name": "write_to_file",
"description": "Use this tool to create new files. The file and any parent directories will be created for you if they do not already exist.\nFollow these instructions:\n1. By default this tool will error if TargetFile already exists. To overwrite an existing file, set Overwrite to true.\n2. When creating an artifact, always provide ArtifactMetadata. When creating non-artifact files, do not provide it.",
"parameters": {
"type": "OBJECT",
"properties": {
"TargetFile": { "type": "STRING", "description": "The target file to create and write code to. Must be an absolute path." },
"CodeContent": { "type": "STRING", "description": "The code contents to write to the file." },
"Description": { "type": "STRING", "description": "Brief, user-facing explanation of what this change did." },
"Overwrite": { "type": "BOOLEAN", "description": "Set this to true to overwrite an existing file." },
"ArtifactMetadata": {
"type": "OBJECT",
"properties": {
"Summary": { "type": "STRING" },
"UserFacing": { "type": "BOOLEAN" },
"RequestFeedback": { "type": "BOOLEAN" }
},
"required": ["Summary", "UserFacing", "RequestFeedback"]
},
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["TargetFile", "Overwrite", "CodeContent", "Description", "toolSummary", "toolAction"]
}
}
{
"name": "search_web",
"description": "Performs a web search for a given query. Returns a summary of relevant information along with URL citations.",
"parameters": {
"type": "OBJECT",
"properties": {
"query": { "type": "STRING" },
"domain": { "type": "STRING", "description": "Optional domain to recommend the search prioritize" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["query", "toolSummary", "toolAction"]
}
}
{
"name": "read_url_content",
"description": "Fetch content from a URL via HTTP request (invisible to USER). Use when: (1) extracting text from public pages, (2) reading static content/documentation, (3) batch processing multiple URLs, (4) speed is important, or (5) no visual interaction needed. Converts HTML to markdown. No JavaScript execution, no authentication. For pages requiring login, JavaScript, or USER visibility, use read_browser_page instead.",
"parameters": {
"type": "OBJECT",
"properties": {
"Url": { "type": "STRING", "description": "URL to read content from" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Url", "toolSummary", "toolAction"]
}
}
{
"name": "invoke_subagent",
"description": "Invokes one or more subagents by name with a single tool call. Each subagent runs in the background with its own prompt and reports back when done.\nSpecify the Subagents array with one or more entries. Each entry defines a subagent to launch.",
"parameters": {
"type": "OBJECT",
"properties": {
"Subagents": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"TypeName": { "type": "STRING" },
"Role": { "type": "STRING" },
"Prompt": { "type": "STRING" },
"Model": { "type": "STRING", "enum": ["inherit", "flash_lite", "flash", "pro"] },
"Workspace": { "type": "STRING", "enum": ["inherit", "branch", "share"] }
},
"required": ["TypeName", "Role", "Prompt"]
}
},
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Subagents", "toolSummary", "toolAction"]
}
}
{
"name": "define_subagent",
"description": "Defines a new type of subagent that can be invoked via invoke_subagent.",
"parameters": {
"type": "OBJECT",
"properties": {
"name": { "type": "STRING" },
"description": { "type": "STRING" },
"system_prompt": { "type": "STRING" },
"enable_write_tools": { "type": "BOOLEAN" },
"enable_subagent_tools": { "type": "BOOLEAN" },
"enable_mcp_tools": { "type": "BOOLEAN" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["name", "description", "system_prompt", "toolSummary", "toolAction"]
}
}
{
"name": "send_message",
"description": "Send a message to another agent. This tool can be used to communicate with subagents, peer agents, etc. Do not use this tool to communicate with the user.",
"parameters": {
"type": "OBJECT",
"properties": {
"Recipient": { "type": "STRING", "description": "The recipient ID to send the message to, e.g. a subagent conversation ID." },
"Message": { "type": "STRING", "description": "The message content." },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Recipient", "Message", "toolSummary", "toolAction"]
}
}
{
"name": "manage_subagents",
"description": "Manage existing subagents. Actions: 'list' (list active direct subagents), 'kill' (terminate specific subagents and descendants), 'kill_all' (terminate all subagents).",
"parameters": {
"type": "OBJECT",
"properties": {
"Action": { "type": "STRING", "enum": ["list", "kill", "kill_all"] },
"ConversationIds": { "type": "ARRAY", "items": { "type": "STRING" } },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Action", "toolSummary", "toolAction"]
}
}
{
"name": "manage_task",
"description": "Manage background tasks. Use this tool to list running tasks or interact with tasks that were sent to the background.\nActions:\n- 'list': List all currently running background tasks\n- 'kill': Cancel the task's execution\n- 'status': Check the task's current status and log file location\n- 'send_input': Send input to a running task",
"parameters": {
"type": "OBJECT",
"properties": {
"Action": { "type": "STRING", "enum": ["list", "kill", "status", "send_input"] },
"TaskId": { "type": "STRING" },
"Input": { "type": "STRING" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Action", "toolSummary", "toolAction"]
}
}
{
"name": "list_dir",
"description": "List the contents of a directory, i.e. all files and subdirectories that are children of the directory. Directory path must be an absolute path to a directory that exists.",
"parameters": {
"type": "OBJECT",
"properties": {
"DirectoryPath": { "type": "STRING", "description": "Path to list contents of, should be absolute path to a directory" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["DirectoryPath", "toolSummary", "toolAction"]
}
}
{
"name": "grep_search",
"description": "Use ripgrep to find exact pattern matches within files or directories.",
"parameters": {
"type": "OBJECT",
"properties": {
"SearchPath": { "type": "STRING", "description": "The path to search. Must be an absolute path." },
"Query": { "type": "STRING", "description": "The search term or pattern to look for within files." },
"CaseInsensitive": { "type": "BOOLEAN" },
"IsRegex": { "type": "BOOLEAN" },
"MatchPerLine": { "type": "BOOLEAN" },
"Includes": { "type": "ARRAY", "items": { "type": "STRING" } },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["SearchPath", "Query", "toolSummary", "toolAction"]
}
}
{
"name": "find_by_name",
"description": "Search for files and subdirectories within a specified directory using fd.\nSearch uses smart case and will ignore gitignored files by default.",
"parameters": {
"type": "OBJECT",
"properties": {
"SearchDirectory": { "type": "STRING", "description": "The directory to search within." },
"Pattern": { "type": "STRING", "description": "Optional, Pattern to search for, supports glob format" },
"Type": { "type": "STRING", "enum": ["file", "directory", "any"] },
"MaxDepth": { "type": "INTEGER" },
"Extensions": { "type": "ARRAY", "items": { "type": "STRING" } },
"Excludes": { "type": "ARRAY", "items": { "type": "STRING" } },
"FullPath": { "type": "BOOLEAN" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["SearchDirectory", "Pattern", "toolSummary", "toolAction"]
}
}
{
"name": "ask_question",
"description": "Use this tool to ask the user one or more multiple-choice questions, with the goal of: Clarifying underspecified requirements, Soliciting design feedback or user preferences, Addressing ambiguous user intent, Picking a solution from a list of options.",
"parameters": {
"type": "OBJECT",
"properties": {
"questions": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"question": { "type": "STRING" },
"options": { "type": "ARRAY", "items": { "type": "STRING" } },
"is_multi_select": { "type": "BOOLEAN" }
},
"required": ["question", "options"]
}
},
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["questions", "toolSummary", "toolAction"]
}
}
{
"name": "generate_image",
"description": "Generate an image or edit existing images based on a text prompt. The resulting image will be saved as an artifact for use.",
"parameters": {
"type": "OBJECT",
"properties": {
"Prompt": { "type": "STRING" },
"ImageName": { "type": "STRING" },
"AspectRatio": { "type": "STRING" },
"ImagePaths": { "type": "ARRAY", "items": { "type": "STRING" } },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Prompt", "ImageName", "toolSummary", "toolAction"]
}
}
{
"name": "schedule",
"description": "Schedule a one-shot timer or a recurring cron job that sends notifications in the background.",
"parameters": {
"type": "OBJECT",
"properties": {
"Prompt": { "type": "STRING" },
"DurationSeconds": { "type": "INTEGER" },
"CronExpression": { "type": "STRING" },
"MaxIterations": { "type": "INTEGER" },
"TimerCondition": { "type": "STRING" },
"toolAction": { "type": "STRING" },
"toolSummary": { "type": "STRING" }
},
"required": ["Prompt", "toolSummary", "toolAction"]
}
}