Skip to content

Tool Catalog

Kaimon exposes 35+ MCP tools organized into categories. Each tool is available to any MCP client (Claude Code, Claude Desktop, etc.) connected to a running Kaimon server.

Most tools accept an optional session parameter (8-character session key) for routing when multiple Julia processes are connected.

Code Execution

ToolDescriptionKey Parameters
exEvaluate Julia code in a persistent REPL. The user sees code in real-time.e (code), q (quiet, default true), s (silent), max_output, ses (session)
manage_replRestart or shut down a Julia session. Restart preserves the session key.command ("restart" or "shutdown"), session

ex – Evaluate Julia code

The primary tool for interacting with Julia. By default, q=true suppresses return values to save tokens. Use q=false when you need the computed result.

ex(e="using LinearAlgebra; eigvals([1 2; 3 4])", q=false)
# => 2-element Vector{Float64}: -0.3722..., 5.3722...

ex(e="x = rand(100, 100); size(x)")
# (quiet mode -- return value suppressed, but code runs)

Introspection

ToolDescriptionKey Parameters
investigate_environmentShow pwd, active project, packages, dev packages, and Revise status.session
search_methodsFind all methods of a function, or methods accepting a given type.query (function or type name), session
type_infoGet type hierarchy, fields, parameters, mutability, and subtypes.type_expr, session
list_namesList exported (or all) names in a module.module_name, all (bool), session
workspace_symbolsSearch for symbols across all loaded modules by name.query, session
document_symbolsList functions, structs, macros, and constants in a file via AST parsing. No session required.file_path
macro_expandExpand a macro expression to see the generated code.expression, session

investigate_environment – Orient yourself

investigate_environment()
# => Project: MyApp v0.2.1
#    Path: /home/user/MyApp
#    pwd: /home/user/MyApp
#    Dev packages:
#      Kaimon v0.8.0 => ~/.julia/dev/Kaimon
#    Revise: active

search_methods – Discover available methods

search_methods(query="sort")
# => Methods for sort:
#    sort(v::AbstractVector; ...) @ Base sort.jl:1489
#    ...

search_methods(query="AbstractString")
# => Methods with argument type AbstractString:
#    ...(all methods that accept AbstractString)...

Code Analysis

ToolDescriptionKey Parameters
code_loweredShow lowered (desugared) IR for a function.function_expr, types (e.g. "(Float64,)"), session
code_typedShow type-inferred IR for debugging type stability.function_expr, types, session
format_codeFormat Julia source files using JuliaFormatter.jl.path (file or directory), overwrite, verbose, session
lint_packageRun Aqua.jl quality assurance tests on a package.package_name (defaults to current project), session
ToolDescriptionKey Parameters
goto_definitionFind where a symbol is defined. Uses Julia reflection (methods/functionloc/pathof) with a file-grep fallback.file_path, line, column, session
navigate_to_fileOpen a file at a specific line and column in VS Code.file_path, line, column

VS Code Integration

ToolDescriptionKey Parameters
execute_vscode_commandRun any allowed VS Code command via the Remote Control extension.command, args, wait_for_response, timeout
list_vscode_commandsList all commands configured in .vscode/settings.json as allowed.(none)

Debugging

All debugging tools require VS Code with the Julia extension and an active debug session.

ToolDescriptionKey Parameters
start_debug_sessionOpen the debug view and begin debugging.(none)
debug_step_overStep over the current line.wait_for_response
debug_step_intoStep into a function call.(none)
debug_step_outStep out of the current function.(none)
debug_continueContinue execution until next breakpoint or completion.(none)
debug_stopStop the current debug session.(none)
add_watch_expressionAdd a watch expression to monitor during debugging.expression
copy_debug_valueCopy a debug variable value to the clipboard.view ("variables" or "watch")
open_file_and_set_breakpointOpen a file in VS Code and set a breakpoint at a specific line.file_path, line

Package Management

ToolDescriptionKey Parameters
pkg_addAdd packages to the current environment. Modifies Project.toml.packages (array of names), session
pkg_rmRemove packages from the current environment.packages (array of names), session

Testing and Profiling

ToolDescriptionKey Parameters
run_testsRun project tests in a subprocess. Supports pattern filtering and coverage.pattern (ReTest regex), coverage, verbose, session
profile_codeProfile Julia code to identify performance bottlenecks. Uses @profile with flat output.code, session
stress_testSpawn concurrent simulated MCP agents to stress-test a session.code, num_agents, stagger, timeout, session

run_tests – Run filtered tests

run_tests(pattern="security")
# Runs only tests matching "security"
# => Test Summary: ...
#    2 passed, 0 failed

run_tests(coverage=true)
# Runs all tests with coverage collection

Semantic Search (Qdrant)

Semantic search requires Qdrant running locally and Ollama for embeddings. The default embedding model is qwen3-embedding:0.6b.

ToolDescriptionKey Parameters
qdrant_search_codeNatural language search over an indexed codebase.query, collection, limit, chunk_type ("all", "definitions", "windows"), embedding_model
qdrant_index_projectIndex a project's source files into a Qdrant collection.project_path, collection, recreate, extra_dirs, extensions
qdrant_sync_indexIncrementally sync an index – reindex changed files, remove deleted ones.project_path, collection, verbose
qdrant_reindex_fileRe-index a single file (delete old chunks, index fresh).file_path, collection, project_path, verbose
qdrant_list_collectionsList all available Qdrant collections.(none)
qdrant_collection_infoGet detailed info about a collection (vector count, dimension, distance metric).collection
qdrant_browse_collectionBrowse points in a collection with pagination.collection, limit

qdrant_search_code – Find code by meaning

qdrant_search_code(query="function that handles HTTP routing")
# => [1 0.89] handle_request(req::Request) @ src/server.jl:L42-68 (function)
#    [2 0.81] route(path::String, handler) @ src/router.jl:L15-30 (function)
#    ...

Information

ToolDescriptionKey Parameters
pingHealth check. Returns server status, Revise status, and connected sessions.(none)
usage_instructionsGet Julia REPL usage instructions and best practices for AI agents.(none)
usage_quizSelf-graded quiz on Kaimon usage patterns. Tests understanding of the shared REPL model.show_sols (bool)
tool_helpGet detailed help and examples for any specific tool.tool_name, extended (bool)