Analysis Tools

30 codebase analyzers exposed to AI agents through the act MCP server — complexity, coupling, cycles, dead code, hotspots, structural boundaries, API surface, and migration readiness. The agent uses these to map a codebase before refactoring or porting it. See the Feature Matrix for tier details.

Complexity

OperationDescriptionParametersLicense
analyze_depthCompute longest transitive dependency chain per file (S4 dependency depth analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_hotspotsRank files by composite complexity score — max cyclomatic complexity, statement count, nesting depth (H1). Params: none [, top_n (u32), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, top_n (u32), include (string[]), exclude (string[])]Teams
analyze_inheritanceDetect tangled inheritance — deep hierarchies (>N levels) and diamond inheritance (H6). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Enterprise
analyze_patternsFind code smells — god functions, deep nesting, high coupling, and other structural issues. Use to identify refactoring targets or assess code quality. Params: none [, tier (string), pattern (string), file (string), severity (string), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, tier (string), pattern (string), file (string), severity (string), include (string[]), exclude (string[])]Teams

Coupling & Cycles

OperationDescriptionParametersLicense
analyze_chokepointsFind files that act as critical bottlenecks — high betweenness centrality in the dependency graph (R4). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_couplingMeasure coupling per file — how many files depend on it (afferent) vs how many it depends on (efferent), plus instability and abstractness scores. Use to find the most critical/fragile files. Params: none [, granularity (string), sort (string), threshold (f64), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, granularity (string), sort (string), threshold (f64), include (string[]), exclude (string[])]Teams
analyze_cycle_riskScore each circular dependency cycle by its external risk surface (R6 circular risk zones analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Teams
analyze_cyclesFind circular dependency chains in the codebase. Use to identify import cycles that cause build issues or indicate architecture problems. Params: none [, granularity (string), max_length (u32), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, granularity (string), max_length (u32), include (string[]), exclude (string[])]Teams
analyze_fan_balanceCompute fan-in/fan-out imbalance for migration ordering guidance (M6 fan balance analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_layersDetect architectural layers from directory names and find dependency direction violations (S1+S2). Params: none [, detect_only (bool), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, detect_only (bool), include (string[]), exclude (string[])]Enterprise

Structure

OperationDescriptionParametersLicense
analyze_clustersIdentify tightly coupled groups of files using community detection. Use to discover natural module boundaries and understand which files change together. Params: none [, granularity (string), min_size (u32), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, granularity (string), min_size (u32), include (string[]), exclude (string[])]Teams
analyze_cohesionMeasure intra-module cohesion for each file — ratio of internal to total symbol edges (H2). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Teams
analyze_entry_pointsDetect entry points: main functions, HTTP routes, CLI commands, event listeners, test files (S5). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Enterprise
analyze_rolesClassify files by architectural role: entry point, routing, business logic, data access, config, test, utility, types, generated (S3). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Enterprise
analyze_seamsFind the natural boundaries between file clusters — the narrowest points where groups of files communicate. Use to identify where to split modules or add API boundaries. Params: none [, min_cluster_size (u32), max_seam_width (u32), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, min_cluster_size (u32), max_seam_width (u32), include (string[]), exclude (string[])]Teams

Code Health

OperationDescriptionParametersLicense
analyze_dead_codeFind dead code — functions, classes, and types that are never referenced from any entry point. Use before cleanup to safely identify what can be deleted. Params: none [, entry (string[]), granularity (string), include_tests (bool), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, entry (string[]), granularity (string), include_tests (bool), include (string[]), exclude (string[])]Teams
analyze_extractionScore clusters for service or package extraction viability (M2 extraction candidates analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Teams
analyze_inconsistenciesDetect inconsistent abstractions — sibling files in the same directory that diverge from the group's structural pattern (H5). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Teams
analyze_interface_bloatDetect interface bloat — files where the public API is disproportionately large relative to implementation (H3). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Teams
analyze_orphan_typesFind type definitions used exclusively outside their defining directory (H4 orphan types analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Teams

Surface & API

OperationDescriptionParametersLicense
analyze_exportExport the full semantic graph (files, symbols, dependencies) in JSON, DOT (Graphviz), or CSV format. Use for visualization or external analysis. Params: none [, format (string), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, format (string), include (string[]), exclude (string[])]Teams
analyze_interfacesMap cross-module interfaces — symbols that cross directory-module boundaries, ranked by interface width (M4). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_surfaceMeasure API surface area — count exposed functions, types, and complexity at a module boundary. Use to assess whether an API is too large or leaky. Params: none [, boundary (string), files (string), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, boundary (string), files (string), include (string[]), exclude (string[])]Teams
analyze_type_completenessAnalyze type boundary completeness — detect 'any' types, untyped parameters, missing return types at exported function boundaries (M7). Params: none [, include (string[]), exclude (string[])].none [, include (string[]), exclude (string[])].Enterprise

Migration Readiness

OperationDescriptionParametersLicense
analyze_featuresInventory language-specific AST features used in the codebase — async, generics, decorators, etc. (M3). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_impactCompute change impact for a target file — finds all files directly and transitively depending on it (R1). Params: target (string) [, max_depth (u32), include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).target (string) [, max_depth (u32), include (string[]), exclude (string[])]Teams
analyze_platform_depsDetect platform-specific API usage by scanning imports (M5 platform dependencies analysis). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_readinessCompute migration readiness scores per file — composite of complexity, coupling, porting blockers (M1). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Enterprise
analyze_stabilityCompute stability index (R2) and detect stable dependency violations (R3) — flags edges where stable modules depend on unstable ones. Params: none [, index_only (bool), include (string[]), exclude (string[])].none [, index_only (bool), include (string[]), exclude (string[])].Enterprise
analyze_test_gapsDetect source files with no or partial test coverage based on graph import analysis (R5). Params: none [, include (string[]), exclude (string[])]. Use include/exclude to restrict the scan scope (e.g. include=["crates"], exclude=["corpus"]).none [, include (string[]), exclude (string[])]Teams