Skip to content

Tool Catalog

All 21 Canopy MCP tools organized by category. For complete input/output schemas and example responses, see Reference: MCP Tools.

Three composite tools that bundle multiple detail-tool calls into a single actionable result. Use these by default.

ToolOne-line descriptionReturns
canopy_preparePre-modification analysis — everything the agent needs to know before editing a fileDependents, imports, health, coverage, git activity, GO / CAUTION / STOP
canopy_validatePost-modification verification — check that edits didn’t introduce new problemsHealth delta (resolved vs introduced), import validity
canopy_understandDeep comprehension — full structural analysis of a file or symbol for unfamiliar codeSymbols, callers, dependencies, coverage, recent history

Typical sequence:

canopy_prepare(file) → plan the work
[edit the file]
canopy_validate(file) → verify nothing broke

Find code by concept, keyword, structural pattern, or symbol name.

ToolOne-line descriptionNotes
canopy_searchFull-text keyword search across indexed code chunksRequires --with-search at index time. camelCase-aware: payment matches processPayment.
canopy_pattern_searchStructural AST pattern search (ast-grep syntax)Use $VAR for single-node wildcard, $$$VAR for multi-node. Matches code structure, not text.
canopy_search_symbolsSymbol name search — find functions, classes, types by nameAvailable in Community Mode. No search index required.

Example calls:

canopy_search("retry logic") → files/snippets mentioning retry
canopy_pattern_search("async function $NAME($$$)") → all async functions
canopy_search_symbols("PaymentService") → all symbols named PaymentService

Query the dependency graph for structural relationships between files.

ToolOne-line description
canopy_trace_importsOutbound edges — what does this file import? (direct only or transitive)
canopy_trace_dependentsInbound edges — what files import this file? Call this before any refactor.
canopy_check_wiringIs this file reachable from an entry point? Detects dead modules.
canopy_find_cyclesFind circular dependency chains — the root cause of “import not defined” errors
canopy_dependency_graphFull dependency subgraph for a path, returned as JSON or DOT format

Example calls:

canopy_trace_dependents("src/lib/auth.ts") → who will break if I change this?
canopy_check_wiring("src/utils/legacy.ts") → is this module actually used?
canopy_find_cycles() → are there any cycles in the repo?

ToolOne-line description
canopy_health_checkRun all health checks and return findings grouped by severity (P0 through info)

The four built-in checks:

CheckWhat it finds
broken_importsImport paths that resolve to no indexed file
dead_exportsNamed exports with zero consumers in the dependency graph
circular_depsImport cycles (even indirect ones)
secret_scanHard-coded API keys, tokens, credentials (regex-based, configurable)

Additional checks can be added via .canopy/plugins/*.yaml. See How-To: Write a Custom Health Check.

Community Mode users can call canopy_health_check — it’s one of the three tools available without a license.


Direct access to the parsed symbol table.

ToolOne-line description
canopy_parse_fileReturn every symbol in a file with type, line number, and export status
canopy_extract_symbolReturn the full source text of a named symbol (function, class, type)

Example calls:

canopy_parse_file("src/api/routes.ts") → [{name: "handleCheckout", type: "function", line: 42, exported: true}, ...]
canopy_extract_symbol("src/api/routes.ts", "handleCheckout") → the function's full source text

Require --with-git at index time.

ToolOne-line description
canopy_git_historyLast N commits touching a file — hash, author, date, commit message
canopy_git_blamePer-line authorship for a line range — who wrote what and when

Why these matter for agents: canopy_prepare uses git history automatically to flag recently active files (high concurrent-edit risk). Call canopy_git_history directly when you need to understand why a file is in its current state.


ToolOne-line description
canopy_ingest_scipIngest a SCIP index to upgrade heuristic import edges to compiler-resolved edges
canopy_coverageIngest a coverage report (LCOV, Istanbul JSON, Cobertura XML); enables per-file coverage in workflow tools

SCIP ingestion and coverage are optional but significantly improve the quality of canopy_prepare output. See How-To: Multi-language Repo for SCIP setup.


ToolOne-line description
canopy_index_statusCheck which index layers are ready (AST, search, git), stale file counts, last index time
canopy_reindexTrigger an incremental re-index of changed files (same as running canopy index . from CLI)

canopy_index_status is useful at the start of a session to confirm the index is current before running analysis.


Without a license, only three tools are available via CLI (MCP server mode requires a license):

Available in Community ModeRequires paid license
canopy_search (keyword only)All MCP server tools
canopy_search_symbolscanopy_search semantic/hybrid mode
canopy_health_checkAll workflow tools

Run canopy upgrade to start a 14-day free trial that unlocks all 21 tools in MCP server mode.


For input schemas, output schemas, example requests/responses, and error codes: Reference: MCP Tools