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 (Infiltrator.jl)

Kaimon integrates with Infiltrator.jl for interactive breakpoint debugging. When a session hits @infiltrate, execution pauses and you can inspect locals and eval expressions in the breakpoint scope.

ToolDescriptionKey Parameters
debug_ctrlCheck breakpoint status or resume execution.action ("status" or "continue"), session
debug_evalEvaluate an expression in the context of a paused breakpoint.expression, session
debug_exfiltrateEvaluate code containing @exfiltrate to capture local variables.code, session
debug_inspect_safehouseInspect variables captured by @exfiltrate.expression (optional), session
debug_clear_safehouseClear all captured variables from the safehouse.session

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, project_path, 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

run_tests(project_path="/path/to/MyPackage.jl")
# Run tests for a project without a gate session

Provide project_path (absolute path to the project) or session to identify the project. If neither is given and only one session is connected, that session's project is used. The test runner handles both test/Project.toml environments and legacy [extras]/[targets] layouts automatically.

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)
#    ...

Session Management

ToolDescriptionKey Parameters
start_sessionSpawn a managed Julia session for an allowed project. Call with no arguments to list available projects.project_path, name
check_evalCheck status of a previous ex() evaluation by its eval ID. Returns status, elapsed time, and result preview.eval_id
extension_infoList loaded extensions and their tools. With name, show detailed tool docs and parameter schemas.name (optional)

start_session – Spawn a project session

start_session()
# => Lists all allowed projects and their status

start_session(project_path="/path/to/MyProject")
# => "Session started. Session key: a3f8b2c1"

The project must be in the allowed-projects list (~/.config/kaimon/projects.json). See Sessions for details.

check_eval – Poll a long-running evaluation

Every ex() call returns an eval ID as a structured JSON field {"eval_id": "XXXXXXXX"} in its first progress notification. Use check_eval to poll for completion:

check_eval(eval_id="abc12345")
# => status: completed, elapsed: 12.3s, result: "42"

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)