Objective-C — 138 Operations for AI Agents
This page is the canonical reference an AI coding agent uses to refactor, query, and analyze Objective-C code through the act MCP server. 138 operations available: 64 refactor, 18 query, 42 analysis, 14 verification. Each operation is callable from Claude Code, Cursor, Codex, OpenCode, or any MCP-compatible agent host. Click any operation for a stable anchor link suitable for citation.
Query
18 query tools, the same on every supported language. Descriptions live in the shared reference: /docs/query-tools.
callers control_flow data_flow definition diagnostics effect_closure effect_summary fix_auto get_type graph import_organize interface mutations references repo_outline skeleton symbols symbols_batch
Refactor
| Operation | Description |
|---|---|
add-braces |
Add braces to single-statement if/while/for blocks |
add-default-case |
Add default case to switch statement |
add-method-documentation |
Add documentation comment to method |
add-method-implementation |
Add method body stub to @implementation |
add-nil-check |
Add nil check before property or pointer access |
add-nullability-annotation |
Add @nullable/@nonnull annotation |
add-property-attribute |
Add nonatomic/retain/weak attribute to property |
add-protocol-conformance |
Add protocol conformance to class |
add-required-import |
Add required import statement |
change-signature |
Modify function parameters, return, generics |
consolidate-imports |
Consolidate multiple import statements |
convert-for-to-foreach |
Convert for loop to fast enumeration (for-in) |
convert-ivar-to-property |
Convert instance variable to @property |
convert-loop-style |
Convert between loop styles |
convert-string-literal |
Convert string literal format |
encapsulate |
Make field private, generate getter/setter |
extract-class |
Extract methods/fields to new class |
extract-constant |
Extract value to named constant |
extract-enum-member |
Extract enum member value into a named constant |
extract-interface |
Create interface from class |
extract-variable |
Extract a sub-expression into a new local variable |
extract_function |
Extract a code selection into a new function — automatically infers parameters, return types, and inserts the call site. Use instead of manually cutting/pasting code. Works without LSP; LSP improves type inference. Params: file (string), new_name (string), start_line (u32), start_column (u32), end_line (u32), end_column (u32) [, preview (bool), receipt (bool)] |
extract_variable |
Extract an expression into a named variable — inserts the declaration and replaces the expression with the variable name. Works without LSP. Params: file (string), new_name (string), start_line (u32), start_column (u32), end_line (u32), end_column (u32) [, preview (bool)] |
flatten |
Merge category @implementation into main @implementation |
generate-accessors |
Generate getter/setter methods for @properties |
generate-async-method |
Generate method with completion handler |
generate-builder |
Generate builder pattern |
generate-class-stub |
Generate class interface and implementation skeleton |
generate-constructor |
Generate an initWith… initializer from @properties |
generate-convenience-init |
Generate convenience initializer |
generate-delegate-methods |
Generate delegate method stubs |
generate-description |
Generate description method |
generate-equality-methods |
Generate isEqual:/hash methods |
generate-equals |
Generate equals/eq comparison method |
generate-factory-method |
Generate factory method |
generate-from-json |
Generate JSON deserialization |
generate-hash |
Generate hash/hashCode method |
generate-impl |
Generate interface/trait impl stubs |
generate-init-method |
Generate init method |
generate-mapped-type |
Generate typedef pointer alias for a class |
generate-property-getter |
Generate @property getter |
generate-property-setter |
Generate @property setter |
generate-protocol-stub |
Generate protocol implementation stubs |
generate-stub-method |
Generate empty method stub |
generate-test-class |
Generate test class |
generate-to-json |
Generate JSON serialization |
generate-to-string |
Generate string representation |
generate-try-catch-block |
Generate @try/@catch/@finally exception handling |
generate-type-guard |
Generate isKindOfClass type guard function |
inline |
Inline a variable, function, or method — replace every usage with its definition body, then remove the original. The inverse of extract. Works without LSP (single-file); LSP enables cross-file inlining. Params: file (string), symbol (string) [, line (u32), preview (bool), receipt (bool)] |
insert_body |
Replace a function's implementation body with new code. AST-validated — rejects if the result has parse errors, so you can't accidentally break syntax. Use instead of manual text editing for function rewrites. Params: file (string), symbol (string), code (string) [, commit (bool)] |
introduce-field |
Convert local variable to class field |
introduce-parameter |
Convert expression to function parameter |
introduce-property |
Convert ivar to @property with appropriate attributes |
move-method-to-category |
Move method to category |
move-method-to-protocol |
Move method to protocol |
move_symbol |
Move a function, class, or type to a different file and automatically update all imports across the codebase. Use instead of manually cut/paste + fixing imports. Works without LSP (single-file); LSP enables cross-file import updates. Params: file (string), symbol (string), destination (string) [, preview (bool), receipt (bool)] |
pull-up |
Move member to parent class |
push-down |
Move member to child class(es) |
recipe_run |
Run a codemod recipe: declarative match → transform → optional verify across modeled grammars. Preview lists matches; apply writes with optional E7 receipts and all-or-nothing rollback. Returns a per-site report. |
remove-unused-import |
Remove unused import statement |
rename |
Rename a symbol and automatically update ALL references across the codebase. Safer and faster than find-and-replace — AST-aware, won't rename strings or comments. Works without LSP (single-file); LSP enables cross-file renames. Params: file (string), old_name (string), new_name (string) [, line (u32), column (u32), preview (bool), receipt (bool)] |
wrap-at-try-catch |
Wrap code in @try/@catch block |
wrap-in-function |
Wrap selected code in new method |
Analysis
42 analysis tools, the same on every supported language. Descriptions live in the shared reference: /docs/analysis-tools.
analyze_api_diff analyze_chokepoints analyze_clones analyze_clusters analyze_cohesion analyze_conformance analyze_coupling analyze_cycle_risk analyze_cycles analyze_dead_code analyze_depth analyze_entry_points analyze_export analyze_extraction analyze_fan_balance analyze_features analyze_hotspots analyze_impact analyze_inconsistencies analyze_inheritance analyze_interface_bloat analyze_interfaces analyze_layers analyze_orphan_types analyze_patterns analyze_platform_deps analyze_readiness analyze_roles analyze_seams analyze_stability analyze_surface analyze_test_gaps analyze_thickness analyze_type_completeness churn_hotspots co_change_clusters coverage_overlay ownership_map profile_overlay simulate split_module trace_overlay
Verify
14 verify tools, the same on every supported language. Descriptions live in the shared reference: /docs/verification.
bisect_regression gate generate_test_harness scan secret_surface summarize_pr taint_flow unsafe_surface verify_behavioral_equivalence verify_contract_preserved verify_diff_semantics verify_port_parity verify_side_effects verify_test_impact