HOCON — 18 Operations for AI Agents

HOCON configures the reactive JVM stack: Akka clusters, Play apps, Kafka tooling. act101 resolves its nested, include-heavy structure into navigable form, so agents follow a setting to its source through layers of overrides.

This page is the canonical reference an AI coding agent uses to refactor, query, and analyze HOCON code through the act MCP server. 18 operations available: 0 refactor, 18 query, 0 analysis. 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.

18Query

Worked HOCON examples

act101 reads a HOCON file's top-level key-value pairs, called paths, as variable declarations in the skeleton, one per top-level key regardless of whether its value is a scalar or a nested object. symbols descends into every nested object, reporting each pair at every depth, also as variable. The unit of structure in this grammar is the pair: a HOCON object like channels is, at the query level, just a pair whose value happens to hold more pairs. Each example below is the verbatim output of the command shown, run against the file shown. Query outputs are pretty-printed with the timing block omitted.

Read the top-level pairs as a skeleton

calibration.hocon records a lab instrument's calibration run with three top-level keys: instrument, calibration, and due-date.

$ act query skeleton calibration.hocon

Before

instrument {
  model = "Fluke-8846A"
  serial = "FL-2291X"
}

calibration {
  reference-standard = "NIST-traceable resistor bank"
  last-run = "2026-04-12"
  technician = "M. Alvarez"

  channels {
    ch1 {
      range-ohms = 100
      offset = 0.003
    }
    ch2 {
      range-ohms = 1000
      offset = -0.012
    }
  }
}

due-date = "2026-10-12"

Output

{
    "type": "Skeleton",
    "declarations": [
        {
            "kind": "variable",
            "name": "instrument",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 1,
                    "column": 1,
                    "byte_offset": 0
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 4,
                    "column": 2,
                    "byte_offset": 60
                }
            },
            "name_range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 1,
                    "column": 1,
                    "byte_offset": 0
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 1,
                    "column": 12,
                    "byte_offset": 11
                }
            }
        },
        {
            "kind": "variable",
            "name": "calibration",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 6,
                    "column": 1,
                    "byte_offset": 62
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 21,
                    "column": 2,
                    "byte_offset": 325
                }
            },
            "name_range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 6,
                    "column": 1,
                    "byte_offset": 62
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 6,
                    "column": 13,
                    "byte_offset": 74
                }
            }
        },
        {
            "kind": "variable",
            "name": "due-date",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 1,
                    "byte_offset": 327
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 24,
                    "byte_offset": 350
                }
            },
            "name_range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 1,
                    "byte_offset": 327
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 10,
                    "byte_offset": 336
                }
            }
        }
    ]
}

The skeleton reports instrument, calibration, and due-date as variable declarations; the pairs nested inside instrument and calibration, such as serial and technician, don't get their own top-level entry.

List every nested pair as symbols

calibration nests a channels object two levels deep, with ch1 and ch2 each setting their own range-ohms and offset.

$ act query symbols calibration.hocon

Before

instrument {
  model = "Fluke-8846A"
  serial = "FL-2291X"
}

calibration {
  reference-standard = "NIST-traceable resistor bank"
  last-run = "2026-04-12"
  technician = "M. Alvarez"

  channels {
    ch1 {
      range-ohms = 100
      offset = 0.003
    }
    ch2 {
      range-ohms = 1000
      offset = -0.012
    }
  }
}

due-date = "2026-10-12"

Output

{
    "type": "Symbols",
    "symbols": [
        {
            "name": "instrument ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 1,
                    "column": 1,
                    "byte_offset": 0
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 1,
                    "column": 12,
                    "byte_offset": 11
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "model ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 2,
                    "column": 3,
                    "byte_offset": 15
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 2,
                    "column": 9,
                    "byte_offset": 21
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "serial ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 3,
                    "column": 3,
                    "byte_offset": 39
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 3,
                    "column": 10,
                    "byte_offset": 46
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "calibration ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 6,
                    "column": 1,
                    "byte_offset": 62
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 6,
                    "column": 13,
                    "byte_offset": 74
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "reference-standard ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 7,
                    "column": 3,
                    "byte_offset": 78
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 7,
                    "column": 22,
                    "byte_offset": 97
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "last-run ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 8,
                    "column": 3,
                    "byte_offset": 132
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 8,
                    "column": 12,
                    "byte_offset": 141
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "technician ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 9,
                    "column": 3,
                    "byte_offset": 158
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 9,
                    "column": 14,
                    "byte_offset": 169
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "channels ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 11,
                    "column": 3,
                    "byte_offset": 187
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 11,
                    "column": 12,
                    "byte_offset": 196
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "ch1 ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 12,
                    "column": 5,
                    "byte_offset": 202
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 12,
                    "column": 9,
                    "byte_offset": 206
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "range-ohms ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 13,
                    "column": 7,
                    "byte_offset": 214
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 13,
                    "column": 18,
                    "byte_offset": 225
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "offset ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 14,
                    "column": 7,
                    "byte_offset": 237
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 14,
                    "column": 14,
                    "byte_offset": 244
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "ch2 ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 16,
                    "column": 5,
                    "byte_offset": 262
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 16,
                    "column": 9,
                    "byte_offset": 266
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "range-ohms ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 17,
                    "column": 7,
                    "byte_offset": 274
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 17,
                    "column": 18,
                    "byte_offset": 285
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "offset ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 18,
                    "column": 7,
                    "byte_offset": 298
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 18,
                    "column": 14,
                    "byte_offset": 305
                }
            },
            "visibility": "unknown"
        },
        {
            "name": "due-date ",
            "kind": "variable",
            "range": {
                "start": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 1,
                    "byte_offset": 327
                },
                "end": {
                    "file": "calibration.hocon",
                    "line": 23,
                    "column": 10,
                    "byte_offset": 336
                }
            },
            "visibility": "unknown"
        }
    ]
}

symbols lists all 15 pairs, including the repeated range-ohms and offset from both channels; each reported name carries a trailing space, since act101 reports the pair's key text exactly as HOCON's grammar spans it, up to the =.

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

← HLSLHTML →