Tool tree
gradeNot graded
canopy_get_repository_overviewAnswer
Read the current repository snapshot: languages, modules, files, and top-level structure. This never changes the checkout or investigation session.
View tool JSON
{
"name": "canopy_get_repository_overview",
"kind": "answer",
"impl": "imperative",
"description": "Read the current repository snapshot: languages, modules, files, and top-level structure. This never changes the checkout or investigation session.",
"inputSchema": {
"type": "object",
"properties": {
"include": {
"type": "string",
"enum": [
"summary",
"modules",
"all"
],
"default": "summary",
"description": "How much structure to include."
},
"pathPrefix": {
"type": "string",
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Optional repository-relative path prefix."
},
"maxItems": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 50,
"description": "Maximum files or modules to return."
}
},
"additionalProperties": false
}
}canopy_search_symbolsAnswer
Search the indexed repository for symbols by name or text and return stable, repository-relative matches with locations and kinds. This never changes the checkout.
View tool JSON
{
"name": "canopy_search_symbols",
"kind": "answer",
"impl": "imperative",
"description": "Search the indexed repository for symbols by name or text and return stable, repository-relative matches with locations and kinds. This never changes the checkout.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Name or text to search for."
},
"kind": {
"type": "string",
"enum": [
"any",
"function",
"method",
"type",
"interface",
"const",
"var",
"field"
],
"default": "any",
"description": "Optional symbol kind filter."
},
"language": {
"type": "string",
"maxLength": 80,
"description": "Optional language identifier, such as go or typescript."
},
"pathPrefix": {
"type": "string",
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Optional repository-relative path prefix."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20,
"description": "Maximum number of matches."
},
"exact": {
"type": "boolean",
"default": false,
"description": "Whether the query must match the complete symbol name."
}
},
"required": [
"query"
],
"additionalProperties": false
}
}canopy_inspect_symbolAction
Inspect one indexed symbol's kind, package, signature, exact source location, and bounded hotspot/impact evidence. The static snapshot has no source text; repository metadata remains untrusted evidence for human review.
View tool JSON
{
"name": "canopy_inspect_symbol",
"kind": "act",
"impl": "imperative",
"description": "Inspect one indexed symbol's kind, package, signature, exact source location, and bounded hotspot/impact evidence. The static snapshot has no source text; repository metadata remains untrusted evidence for human review.",
"inputSchema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Qualified or unqualified symbol name."
},
"file": {
"type": "string",
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Optional repository-relative file disambiguator."
},
"line": {
"type": "integer",
"minimum": 1,
"description": "Optional 1-based line disambiguator."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}
}canopy_trace_callsAction
Trace callers, callees, or both for an indexed symbol to a bounded depth. Results identify the snapshot used and are suitable for human-led review.
View tool JSON
{
"name": "canopy_trace_calls",
"kind": "act",
"impl": "imperative",
"description": "Trace callers, callees, or both for an indexed symbol to a bounded depth. Results identify the snapshot used and are suitable for human-led review.",
"inputSchema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Qualified or unqualified symbol name."
},
"direction": {
"type": "string",
"enum": [
"callers",
"callees",
"both"
],
"default": "both",
"description": "Graph direction to traverse."
},
"depth": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"default": 2,
"description": "Maximum graph depth."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 50,
"description": "Maximum nodes or edges to return."
},
"includeExternal": {
"type": "boolean",
"default": false,
"description": "Include unresolved or external call edges."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}
}canopy_measure_impactAnswer
Measure the bounded reverse-dependency surface of a symbol for a proposed change kind. This is analysis only and does not apply a change.
View tool JSON
{
"name": "canopy_measure_impact",
"kind": "answer",
"impl": "imperative",
"description": "Measure the bounded reverse-dependency surface of a symbol for a proposed change kind. This is analysis only and does not apply a change.",
"inputSchema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Symbol whose impact should be measured."
},
"changeKind": {
"type": "string",
"enum": [
"modify",
"rename",
"delete",
"signature"
],
"default": "modify",
"description": "Hypothetical change to model."
},
"direction": {
"type": "string",
"enum": [
"dependents"
],
"default": "dependents",
"description": "The shipped snapshot measures downstream dependents (blast radius)."
},
"depth": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"default": 3,
"description": "Maximum dependency depth."
},
"includeTests": {
"type": "boolean",
"default": true,
"description": "Include test references in the impact surface."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}
}canopy_show_hotspotsAction
List repository hotspots by a selected structural metric, with bounded evidence and the indexed snapshot revision. This never changes the checkout.
View tool JSON
{
"name": "canopy_show_hotspots",
"kind": "act",
"impl": "imperative",
"description": "List repository hotspots by a selected structural metric, with bounded evidence and the indexed snapshot revision. This never changes the checkout.",
"inputSchema": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": [
"risk",
"complexity",
"churn",
"centrality",
"fanin"
],
"default": "risk",
"description": "Normalized metric used to rank hotspots. Fan-in is normalized within the selected scope."
},
"pathPrefix": {
"type": "string",
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Optional repository-relative path prefix."
},
"language": {
"type": "string",
"maxLength": 80,
"description": "Optional language identifier."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20,
"description": "Maximum hotspots to return."
},
"minScore": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Optional normalized score floor."
}
},
"additionalProperties": false
}
}canopy_open_source_locationAction
Return a repository-relative source location for a human to open and inspect. This tool does not navigate, edit, or execute source code by itself.
View tool JSON
{
"name": "canopy_open_source_location",
"kind": "act",
"impl": "imperative",
"description": "Return a repository-relative source location for a human to open and inspect. This tool does not navigate, edit, or execute source code by itself.",
"inputSchema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Repository-relative file path."
},
"line": {
"type": "integer",
"minimum": 1,
"description": "Optional 1-based line number."
},
"column": {
"type": "integer",
"minimum": 1,
"description": "Optional 1-based column number."
},
"symbol": {
"type": "string",
"maxLength": 240,
"description": "Optional symbol label for the visible receipt."
}
},
"required": [
"file"
],
"additionalProperties": false
}
}canopy_set_investigation_goalAction
Set or replace the current Canopy Atlas investigation goal. The visible Atlas receipt records the reversible session-local write and the prior goal for review.
View tool JSON
{
"name": "canopy_set_investigation_goal",
"kind": "act",
"impl": "imperative",
"description": "Set or replace the current Canopy Atlas investigation goal. The visible Atlas receipt records the reversible session-local write and the prior goal for review.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"pattern": "\\S",
"description": "Plain-language investigation goal."
},
"replace": {
"type": "boolean",
"default": true,
"description": "Replace the current goal rather than append context."
}
},
"required": [
"goal"
],
"additionalProperties": false
}
}canopy_focus_symbolAction
Suggest or apply the active investigation focus to one indexed symbol. Suggestion mode is the default: it leaves session state unchanged and lets a human accept the focus from the visible Atlas panel.
View tool JSON
{
"name": "canopy_focus_symbol",
"kind": "act",
"impl": "imperative",
"description": "Suggest or apply the active investigation focus to one indexed symbol. Suggestion mode is the default: it leaves session state unchanged and lets a human accept the focus from the visible Atlas panel.",
"inputSchema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Qualified or unqualified symbol to focus."
},
"file": {
"type": "string",
"maxLength": 240,
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$",
"description": "Optional repository-relative file disambiguator."
},
"reason": {
"type": "string",
"maxLength": 500,
"description": "Optional human-readable reason for the focus change."
},
"mode": {
"type": "string",
"enum": [
"suggest",
"apply"
],
"default": "suggest",
"description": "Suggest a focus for human review, or explicitly apply it."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}
}canopy_pin_findingAction
Pin or unpin one evidence finding in the current investigation. The change is session-local, visible in the Atlas panel, and reversible.
View tool JSON
{
"name": "canopy_pin_finding",
"kind": "act",
"impl": "imperative",
"description": "Pin or unpin one evidence finding in the current investigation. The change is session-local, visible in the Atlas panel, and reversible.",
"inputSchema": {
"type": "object",
"properties": {
"findingId": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Finding ID to pin or unpin."
},
"pinned": {
"type": "boolean",
"default": true,
"description": "True pins the finding; false removes the pin."
},
"note": {
"type": "string",
"maxLength": 500,
"description": "Optional human note attached to the operation."
}
},
"required": [
"findingId"
],
"additionalProperties": false
}
}canopy_connect_findingsAction
Connect or disconnect two evidence findings in the current investigation. The change is session-local, visible in the Atlas panel, and reversible.
View tool JSON
{
"name": "canopy_connect_findings",
"kind": "act",
"impl": "imperative",
"description": "Connect or disconnect two evidence findings in the current investigation. The change is session-local, visible in the Atlas panel, and reversible.",
"inputSchema": {
"type": "object",
"properties": {
"fromFindingId": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Source finding ID."
},
"toFindingId": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S",
"description": "Destination finding ID."
},
"relation": {
"type": "string",
"enum": [
"supports",
"contradicts",
"depends_on",
"related"
],
"default": "related",
"description": "Meaning of the connection."
},
"connected": {
"type": "boolean",
"default": true,
"description": "True connects the findings; false removes the connection."
},
"note": {
"type": "string",
"maxLength": 500,
"description": "Optional human note attached to the connection."
}
},
"required": [
"fromFindingId",
"toFindingId"
],
"additionalProperties": false
}
}canopy_set_lensAction
Set the active Atlas investigation lens. The current UI lenses are structure, calls, impact, and hotspots; the visible receipt records this reversible session-local write.
View tool JSON
{
"name": "canopy_set_lens",
"kind": "act",
"impl": "imperative",
"description": "Set the active Atlas investigation lens. The current UI lenses are structure, calls, impact, and hotspots; the visible receipt records this reversible session-local write.",
"inputSchema": {
"type": "object",
"properties": {
"lens": {
"type": "string",
"enum": [
"structure",
"calls",
"impact",
"hotspots"
],
"description": "Lens used to organize investigation results."
},
"persist": {
"type": "boolean",
"default": true,
"description": "Persist the lens in this investigation session."
}
},
"required": [
"lens"
],
"additionalProperties": false
}
}canopy_get_investigationAnswer
Read the current Canopy Atlas investigation state, including goal, focus, findings, connections, lens, and bounded history. This never changes session state.
View tool JSON
{
"name": "canopy_get_investigation",
"kind": "answer",
"impl": "imperative",
"description": "Read the current Canopy Atlas investigation state, including goal, focus, findings, connections, lens, and bounded history. This never changes session state.",
"inputSchema": {
"type": "object",
"properties": {
"include": {
"type": "array",
"items": {
"type": "string",
"enum": [
"goal",
"focus",
"findings",
"connections",
"lens",
"history"
]
},
"description": "Optional sections to include; omitted means the server default."
},
"maxFindings": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 50,
"description": "Maximum findings to return."
}
},
"additionalProperties": false
}
}canopy_export_review_briefAction
Render a bounded, read-only review brief from the current repository snapshot and investigation state, and show its preview in the Atlas panel.
View tool JSON
{
"name": "canopy_export_review_brief",
"kind": "act",
"impl": "imperative",
"description": "Render a bounded, read-only review brief from the current repository snapshot and investigation state, and show its preview in the Atlas panel.",
"inputSchema": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown",
"description": "Output format."
},
"scope": {
"type": "string",
"enum": [
"investigation",
"selection",
"repository"
],
"default": "investigation",
"description": "Evidence scope for the brief."
},
"findingIds": {
"type": "array",
"maxItems": 100,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 240,
"pattern": "\\S"
},
"description": "Optional finding IDs when scope is selection."
},
"includeEvidence": {
"type": "boolean",
"default": true,
"description": "Include source locations and snapshot evidence."
},
"destination": {
"type": "string",
"enum": [
"response"
],
"default": "response",
"description": "Return the brief in the tool response without writing an external artifact."
}
},
"additionalProperties": false
}
}