Server Configuration
Describes the environment variables required to run the server.
Name | Required | Description | Default |
---|---|---|---|
No arguments |
Schema
Prompts
Interactive templates invoked by user choice
Name | Description |
---|---|
No prompts |
Resources
Contextual data attached and managed by the client
Name | Description |
---|---|
No resources |
Tools
Functions exposed to the LLM to take actions
Name | Description |
---|---|
read_file | Reads the given file or a chunk of it. Generally, symbolic operations like find_symbol or find_referencing_symbols should be preferred if you know which symbols you are looking for. Returns the full text of the file at the given relative path. |
create_text_file | Write a new file or overwrite an existing file. Returns a message indicating success or failure. |
list_dir | Lists all non-gitignored files and directories in the given directory (optionally with recursion). Returns a JSON object with the names of directories and files within the given directory. |
find_file | Finds non-gitignored files matching the given file mask within the given relative path. Returns a JSON object with the list of matching files. |
replace_regex | Replaces one or more occurrences of the given regular expression. This is the preferred way to replace content in a file whenever the symbol-level tools are not appropriate. Even large sections of code can be replaced by providing a concise regular expression of the form "beginning.*?end-of-text-to-be-replaced". Always try to use wildcards to avoid specifying the exact content of the code to be replaced, especially if it spans several lines. IMPORTANT: REMEMBER TO USE WILDCARDS WHEN APPROPRIATE! I WILL BE VERY UNHAPPY IF YOU WRITE LONG REGEXES WITHOUT USING WILDCARDS INSTEAD!. |
search_for_pattern | Offers a flexible search for arbitrary patterns in the codebase, including the possibility to search in non-code files. Generally, symbolic operations like find_symbol or find_referencing_symbols should be preferred if you know which symbols you are looking for. Pattern Matching Logic: For each match, the returned result will contain the full lines where the substring pattern is found, as well as optionally some lines before and after it. The pattern will be compiled with DOTALL, meaning that the dot will match all characters including newlines. This also means that it never makes sense to have .* at the beginning or end of the pattern, but it may make sense to have it in the middle for complex patterns. If a pattern matches multiple lines, all those lines will be part of the match. Be careful to not use greedy quantifiers unnecessarily, it is usually better to use non-greedy quantifiers like .*? to avoid matching too much content. File Selection Logic:
The files in which the search is performed can be restricted very flexibly.
Using |
get_symbols_overview | Use this tool to get a high-level understanding of the code symbols in a file. This should be the first tool to call when you want to understand a new file, unless you already know what you are looking for. Returns a JSON object containing info about top-level symbols in the file. |
find_symbol | Retrieves information on all symbols/code entities (classes, methods, etc.) based on the given The matching behavior is determined by the structure of Key aspects of the name path matching behavior:
|
find_referencing_symbols | Finds references to the symbol at the given |
replace_symbol_body | Replaces the body of the symbol with the given |
insert_after_symbol | Inserts the given body/content after the end of the definition of the given symbol (via the symbol's location). A typical use case is to insert a new class, function, method, field or variable assignment. |
insert_before_symbol | Inserts the given content before the beginning of the definition of the given symbol (via the symbol's location). A typical use case is to insert a new class, function, method, field or variable assignment; or a new import statement before the first symbol in the file. |
write_memory | Write some information about this project that can be useful for future tasks to a memory in md format. The memory name should be meaningful. |
read_memory | Read the content of a memory file. This tool should only be used if the information is relevant to the current task. You can infer whether the information is relevant from the memory file name. You should not read the same memory file multiple times in the same conversation. |
list_memories | List available memories. Any memory can be read using the |
delete_memory | Delete a memory file. Should only happen if a user asks for it explicitly, for example by saying that the information retrieved from a memory file is no longer correct or no longer relevant for the project. |
execute_shell_command | Execute a shell command and return its output. If there is a memory about suggested commands, read that first.
Never execute unsafe shell commands like |
activate_project | Activates the project with the given name. |
switch_modes | Activates the desired modes, like ["editing", "interactive"] or ["planning", "one-shot"]. |
check_onboarding_performed | Checks whether project onboarding was already performed. You should always call this tool before beginning to actually work on the project/after activating a project, but after calling the initial instructions tool. |
onboarding | Call this tool if onboarding was not performed yet. You will call this tool at most once per conversation. Returns instructions on how to create the onboarding information. |
think_about_collected_information | Think about the collected information and whether it is sufficient and relevant. This tool should ALWAYS be called after you have completed a non-trivial sequence of searching steps like find_symbol, find_referencing_symbols, search_files_for_pattern, read_file, etc. |
think_about_task_adherence | Think about the task at hand and whether you are still on track. Especially important if the conversation has been going on for a while and there has been a lot of back and forth. This tool should ALWAYS be called before you insert, replace, or delete code. |
think_about_whether_you_are_done | Whenever you feel that you are done with what the user has asked for, it is important to call this tool. |
prepare_for_new_conversation | Instructions for preparing for a new conversation. This tool should only be called on explicit user request. |