{
  "version": "act 1.0.17",
  "url": "https://act101.ai/docs/analysis-tools",
  "operations": [
    {
      "name": "analyze_chokepoints",
      "anchor": "op-analyze-chokepoints",
      "description": "Find files that act as critical bottlenecks \u2014 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "enterprise"
    },
    {
      "name": "analyze_clusters",
      "anchor": "op-analyze-clusters",
      "description": "Identify 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\"]).",
      "params": "none [, granularity (string), min_size (u32), include (string[]), exclude (string[])]",
      "category": "Structure",
      "tier": "teams"
    },
    {
      "name": "analyze_cohesion",
      "anchor": "op-analyze-cohesion",
      "description": "Measure intra-module cohesion for each file \u2014 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Structure",
      "tier": "teams"
    },
    {
      "name": "analyze_coupling",
      "anchor": "op-analyze-coupling",
      "description": "Measure coupling per file \u2014 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\"]).",
      "params": "none [, granularity (string), sort (string), threshold (f64), include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "teams"
    },
    {
      "name": "analyze_cycle_risk",
      "anchor": "op-analyze-cycle-risk",
      "description": "Score 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "teams"
    },
    {
      "name": "analyze_cycles",
      "anchor": "op-analyze-cycles",
      "description": "Find 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\"]).",
      "params": "none [, granularity (string), max_length (u32), include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "teams"
    },
    {
      "name": "analyze_dead_code",
      "anchor": "op-analyze-dead-code",
      "description": "Find dead code \u2014 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\"]).",
      "params": "none [, entry (string[]), granularity (string), include_tests (bool), include (string[]), exclude (string[])]",
      "category": "Code Health",
      "tier": "teams"
    },
    {
      "name": "analyze_depth",
      "anchor": "op-analyze-depth",
      "description": "Compute 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Complexity",
      "tier": "enterprise"
    },
    {
      "name": "analyze_entry_points",
      "anchor": "op-analyze-entry-points",
      "description": "Detect entry points: main functions, HTTP routes, CLI commands, event listeners, test files (S5). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Structure",
      "tier": "enterprise"
    },
    {
      "name": "analyze_export",
      "anchor": "op-analyze-export",
      "description": "Export 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\"]).",
      "params": "none [, format (string), include (string[]), exclude (string[])]",
      "category": "Surface & API",
      "tier": "teams"
    },
    {
      "name": "analyze_extraction",
      "anchor": "op-analyze-extraction",
      "description": "Score 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Code Health",
      "tier": "teams"
    },
    {
      "name": "analyze_fan_balance",
      "anchor": "op-analyze-fan-balance",
      "description": "Compute 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "enterprise"
    },
    {
      "name": "analyze_features",
      "anchor": "op-analyze-features",
      "description": "Inventory language-specific AST features used in the codebase \u2014 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Migration Readiness",
      "tier": "enterprise"
    },
    {
      "name": "analyze_hotspots",
      "anchor": "op-analyze-hotspots",
      "description": "Rank files by composite complexity score \u2014 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\"]).",
      "params": "none [, top_n (u32), include (string[]), exclude (string[])]",
      "category": "Complexity",
      "tier": "teams"
    },
    {
      "name": "analyze_impact",
      "anchor": "op-analyze-impact",
      "description": "Compute change impact for a target file \u2014 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\"]).",
      "params": "target (string) [, max_depth (u32), include (string[]), exclude (string[])]",
      "category": "Migration Readiness",
      "tier": "teams"
    },
    {
      "name": "analyze_inconsistencies",
      "anchor": "op-analyze-inconsistencies",
      "description": "Detect inconsistent abstractions \u2014 sibling files in the same directory that diverge from the group's structural pattern (H5). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Code Health",
      "tier": "teams"
    },
    {
      "name": "analyze_inheritance",
      "anchor": "op-analyze-inheritance",
      "description": "Detect tangled inheritance \u2014 deep hierarchies (>N levels) and diamond inheritance (H6). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Complexity",
      "tier": "enterprise"
    },
    {
      "name": "analyze_interface_bloat",
      "anchor": "op-analyze-interface-bloat",
      "description": "Detect interface bloat \u2014 files where the public API is disproportionately large relative to implementation (H3). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Code Health",
      "tier": "teams"
    },
    {
      "name": "analyze_interfaces",
      "anchor": "op-analyze-interfaces",
      "description": "Map cross-module interfaces \u2014 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Surface & API",
      "tier": "enterprise"
    },
    {
      "name": "analyze_layers",
      "anchor": "op-analyze-layers",
      "description": "Detect 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\"]).",
      "params": "none [, detect_only (bool), include (string[]), exclude (string[])]",
      "category": "Coupling & Cycles",
      "tier": "enterprise"
    },
    {
      "name": "analyze_orphan_types",
      "anchor": "op-analyze-orphan-types",
      "description": "Find 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Code Health",
      "tier": "teams"
    },
    {
      "name": "analyze_patterns",
      "anchor": "op-analyze-patterns",
      "description": "Find code smells \u2014 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\"]).",
      "params": "none [, tier (string), pattern (string), file (string), severity (string), include (string[]), exclude (string[])]",
      "category": "Complexity",
      "tier": "teams"
    },
    {
      "name": "analyze_platform_deps",
      "anchor": "op-analyze-platform-deps",
      "description": "Detect 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Migration Readiness",
      "tier": "enterprise"
    },
    {
      "name": "analyze_readiness",
      "anchor": "op-analyze-readiness",
      "description": "Compute migration readiness scores per file \u2014 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Migration Readiness",
      "tier": "enterprise"
    },
    {
      "name": "analyze_roles",
      "anchor": "op-analyze-roles",
      "description": "Classify files by architectural role: entry point, routing, business logic, data access, config, test, utility, types, generated (S3). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Structure",
      "tier": "enterprise"
    },
    {
      "name": "analyze_seams",
      "anchor": "op-analyze-seams",
      "description": "Find the natural boundaries between file clusters \u2014 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\"]).",
      "params": "none [, min_cluster_size (u32), max_seam_width (u32), include (string[]), exclude (string[])]",
      "category": "Structure",
      "tier": "teams"
    },
    {
      "name": "analyze_stability",
      "anchor": "op-analyze-stability",
      "description": "Compute stability index (R2) and detect stable dependency violations (R3) \u2014 flags edges where stable modules depend on unstable ones. Params: none [, index_only (bool), include (string[]), exclude (string[])].",
      "params": "none [, index_only (bool), include (string[]), exclude (string[])].",
      "category": "Migration Readiness",
      "tier": "enterprise"
    },
    {
      "name": "analyze_surface",
      "anchor": "op-analyze-surface",
      "description": "Measure API surface area \u2014 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\"]).",
      "params": "none [, boundary (string), files (string), include (string[]), exclude (string[])]",
      "category": "Surface & API",
      "tier": "teams"
    },
    {
      "name": "analyze_test_gaps",
      "anchor": "op-analyze-test-gaps",
      "description": "Detect 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\"]).",
      "params": "none [, include (string[]), exclude (string[])]",
      "category": "Migration Readiness",
      "tier": "teams"
    },
    {
      "name": "analyze_type_completeness",
      "anchor": "op-analyze-type-completeness",
      "description": "Analyze type boundary completeness \u2014 detect 'any' types, untyped parameters, missing return types at exported function boundaries (M7). Params: none [, include (string[]), exclude (string[])].",
      "params": "none [, include (string[]), exclude (string[])].",
      "category": "Surface & API",
      "tier": "enterprise"
    }
  ]
}