{"ok":true,"site":{"host":"atlas.m31labs.dev","url":"https://atlas.m31labs.dev/","type":"live","desc":"A WebMCP-native structural code observatory where humans and agents trace calls, measure blast radius, and build evidence-backed review briefs together.","tools":[{"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.","title":"Repository overview","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Search symbols","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Inspect symbol","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Trace calls","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Measure impact","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Show hotspots","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Open source location","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Set investigation goal","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Focus symbol","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Pin finding","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Connect findings","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Set investigation lens","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Get investigation","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Export review brief","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/atlas.m31labs.dev.png","apiSurface":"spec","toolCount":14}}