--- title: "ktx agent" description: "Machine-readable commands for coding agents." --- Hidden commands that provide machine-readable JSON output for coding agents. These are the commands that agent integrations (Claude Code, Cursor, Codex, OpenCode) call under the hood — you typically won't use them directly. All `ktx agent` subcommands require `--json` and produce structured JSON output on stdout. ## Command signature ```bash ktx agent --json [options] ``` ## Subcommands | Subcommand | Description | |-----------|-------------| | `tools` | Print available agent-facing KTX tools | | `context` | Print project context for agent planning | | `sl list` | List semantic-layer sources | | `sl read ` | Read one semantic-layer source | | `sl query` | Run a semantic-layer query from a JSON file | | `wiki search ` | Search KTX wiki pages | | `wiki read ` | Read one KTX wiki page | | `sql execute` | Execute read-only SQL with a row limit | ## Options ### `agent tools` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | ### `agent context` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | ### `agent sl list` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | | `--connection-id ` | Filter by connection id | — | | `--query ` | Search source names and descriptions | — | ### `agent sl read` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | | `--connection-id ` | Connection id containing the source | — | ### `agent sl query` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | | `--connection-id ` | Connection id for execution (required) | — | | `--query-file ` | JSON semantic-layer query file (required) | — | | `--execute` | Execute the compiled query against the connection | `false` | | `--max-rows ` | Maximum rows to return when executing (1-1000) | — | ### `agent wiki search` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | | `--limit ` | Maximum search results | `10` | ### `agent wiki read` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | ### `agent sql execute` | Flag | Description | Default | |------|-------------|---------| | `--json` | Print JSON output (required) | — | | `--connection-id ` | Connection id for execution (required) | — | | `--sql-file ` | SQL file to execute (required) | — | | `--max-rows ` | Maximum rows to return, 1-1000 (required) | — | ## Examples ```bash # List available tools ktx agent tools --json # Get project context for planning ktx agent context --json # List semantic sources ktx agent sl list --json # Search semantic sources by name ktx agent sl list --json --query "revenue" # Read a semantic source ktx agent sl read orders --json --connection-id my-warehouse # Run a semantic-layer query from a file ktx agent sl query --json \ --connection-id my-warehouse \ --query-file /tmp/query.json \ --execute \ --max-rows 100 # Search wiki pages ktx agent wiki search "churn definition" --json # Read a specific wiki page ktx agent wiki read page-abc123 --json # Execute read-only SQL ktx agent sql execute --json \ --connection-id my-warehouse \ --sql-file /tmp/query.sql \ --max-rows 500 ``` ## Output Every `ktx agent` command writes JSON to stdout and diagnostic text to stderr. Agents should parse stdout as JSON and treat a non-zero exit code as a failed tool call. ```json { "ok": true, "data": { "type": "agent-response" } } ``` ## Common errors | Error | Cause | Recovery | |-------|-------|----------| | Missing JSON output | `--json` was omitted | Re-run the same subcommand with `--json` | | Unknown connection id | The requested connection is not configured in `ktx.yaml` | Call `ktx agent context --json` or `ktx connection list` to discover valid ids | | Query file cannot be read | `--query-file` points to a missing or invalid JSON file | Write the query payload to a real file and pass its absolute path | | SQL execution rejected | SQL is not read-only or `--max-rows` is missing | Use semantic-layer queries first; for direct SQL, pass read-only SQL and an explicit row limit |