codescout exposes 29 tools organized into seven categories. This page is a quick map. Each category has a dedicated reference page linked from the headings below.
LSP-backed tools for locating and editing code by name rather than by line number. These tools require an LSP server to be running for the target language.
The navigation tools (find_symbol, list_symbols, find_references) accept an optional scope parameter to search library code as well as project code — see Library Navigation below.
| Tool | Description |
|---|---|
find_symbol |
Find symbols by name pattern across the project or within a file |
list_symbols |
Symbol tree for a file, directory, or glob — classes, functions, structs |
goto_definition |
Jump to where a symbol is defined via LSP; auto-discovers libraries |
hover |
Get type info and documentation for a symbol at a given position |
find_references |
All callers and usages of a given symbol |
replace_symbol |
Replace the entire body of a named symbol with new source |
remove_symbol |
Delete a named symbol entirely from the file |
insert_code |
Insert code immediately before or after a named symbol |
rename_symbol |
Rename a symbol across the entire codebase using LSP |
Read, list, and search files. These tools work on any file regardless of language support.
| Tool | Description |
|---|---|
read_file |
Read lines from a file, with optional range and pagination |
list_dir |
List files and directories, optionally recursive |
search_pattern |
Search file contents with a regex pattern |
find_file |
Find files by glob pattern, respecting .gitignore |
create_file |
Create or overwrite a file with given content |
edit_file |
Find-and-replace editing within a file |
Find code by meaning rather than by name or pattern. Requires an embedding
index built with index_project — see the Setup Guide. Use the optional scope parameter to search
within a specific library (see Library Navigation).
| Tool | Description |
|---|---|
semantic_search |
Search code by natural language description or code snippet |
index_project |
Build or incrementally update the embedding index |
index_status |
Show index stats: file count, chunk count, model, last update, and optional drift scores |
Navigate third-party dependency source code (read-only). Libraries are
auto-registered when LSP goto_definition returns a path outside the project
root; you can also register them manually.
| Tool | Description |
|---|---|
list_libraries |
Show all registered libraries, their root paths, and index status |
Scope parameter — once a library is registered, pass scope to any
navigation or search tool to target it:
| Value | What it searches |
|---|---|
"project" (default) |
Only project source code |
"lib:<name>" |
A specific registered library |
"libraries" |
All registered libraries |
"all" |
Project + all libraries |
All results include a "source" field ("project" or "lib:<name>") so you
can tell where each result came from.
Persistent key-value store backed by markdown files in
.codescout/memories/. Survives across sessions.
| Tool | Description |
|---|---|
memory |
Read, write, list, or delete memory entries via the action param |
Project setup, shell execution, and server configuration.
| Tool | Description |
|---|---|
onboarding |
Initial project discovery: detect languages, read key files, write startup memory |
run_command |
Run a shell command in the project root and return stdout/stderr |
activate_project |
Switch the active project to a different directory |
project_status |
Display the active project root, configuration, and index status |
Authenticated access to GitHub repositories, issues, pull requests, and files.
Requires a GitHub token configured in your environment (GITHUB_TOKEN).
| Tool | Description |
|---|---|
github_identity |
Get authenticated user profile, search users, list teams and members |
github_issue |
List, search, get, create, and update issues and comments |
github_pr |
List, search, get diffs, review, and merge pull requests |
github_file |
Get, create, update, delete files and push multi-file commits |
github_repo |
Search repos, manage branches, commits, releases, tags, and code search |
Use this table when you know what you want but are not sure which tool to reach for.
| You want to... | Use this |
|---|---|
| See what functions/classes a file contains | list_symbols |
| Find where a function is defined | find_symbol |
| Jump to a symbol's definition | goto_definition |
| Get type info or docs for a symbol | hover |
| Find all callers of a function | find_references |
| Rewrite a function body | replace_symbol |
| Add a new function next to an existing one | insert_code |
| Rename a function everywhere | rename_symbol |
| Find code that does something (concept, not name) | semantic_search |
| Find code by concept inside a library | semantic_search with scope: "lib:<name>" (after index_project on the library) |
| See what third-party libraries are registered | list_libraries |
| Check index health, file count, drift scores | index_status |
| Check project config and usage stats | project_status |
| Search for a string or regex across files | search_pattern |
| Find files matching a name pattern | find_file |
| Read a specific part of a file | read_file (with start_line/end_line) |
| Remember a decision for the next session | memory with action: "write" |
| Run a build or test command | run_command |
| Orient yourself in a new project | onboarding |
| View a GitHub issue | github_issue with method: "get" |
| Create a GitHub issue | github_issue with method: "create" |
| Review a pull request | github_pr with method: "get_diff" or "get_files" |
| Push a file to GitHub | github_file with method: "create_or_update" |
| Search GitHub code | github_repo with method: "search_code" |
Use symbol navigation (find_symbol, list_symbols) when you know
the name of what you are looking for. LSP tools are precise and fast.
Use semantic search when you know the concept but not the name: "retry logic", "token validation", "connection pool initialization". Semantic search finds code that means what you describe, regardless of what it is called.
list_symbols answers "what is in this file or directory?" — it gives
you the map. find_symbol answers "where is this specific thing?" — it finds
a target by name, optionally across the whole project. Start with
list_symbols to orient, then use find_symbol to drill in.
replace_symbol, insert_code, and rename_symbol operate on named symbols.
They do not care about line numbers and are robust to changes above the target.
Use them when you know the symbol name.
edit_file operates on text via exact string matching. Use it for changes that are not naturally
symbol-scoped: adding an import, changing a constant value, patching a
configuration block.