Skip to main content
Reconify is built to be driven by an agent. Every command emits versioned JSON, every error is structured, and the binary describes its own capabilities before you run anything. There’s no account, no API key, and no network call standing between an agent and a first result: it can install the binary and use it in the same turn.

The workflow

Workflow from capabilities discovery through file inspection, config inference and validation, reconciliation, and explanation. An agent can skip steps it already has what it needs for; calling reconcile directly with a hand-written config is fine. It should not assume an output shape without calling capabilities first, since passes, formats, and schemas vary by installed version.

Discover what this build can do

This is the correct first call, because commands, formats, and matching passes vary by version.

Profile a file before mapping it

ambiguous is a fact about the column, not a decision. It’s true when the top two type candidates are within 0.10 confidence of each other. inspect never proposes a mapping; config infer builds on this profile to do that.

Let it propose the config

A proposal is ready only when the date, amount, and reference mappings each reach 0.90 confidence, each leads its runner-up by 0.10, and at least 100 rows parsed successfully per source. Otherwise it returns needs_input and names which column it couldn’t resolve. It never guesses. Without --out, a needs_input proposal is still exit code 0; that’s not a failure, just an unresolved column. With --out, ambiguity writes nothing and exits 2 with INFERENCE_AMBIGUOUS.

The --agent flag

--agent changes two defaults: JSON diagnostics on stderr, and for reconcile, NDJSON output with exceptions_only. Any flag you set explicitly overrides it. The precedence rule, stated once: explicit flag > pair/config value > --agent default > built-in default. --agent also refuses interactive commands like config init. It returns a structured diagnostic naming a non-interactive alternative (config infer, or a hand-written reconify.yaml) instead of hanging on a prompt. That’s the difference between an agent failing fast and an agent timing out.

One-shot reconciliation

--auto takes exactly two positional files: no --config, --pair, --left-file, or --right-file. It applies the same confidence gates as config infer before reconciling. On success, run_info carries inferred_config (the exact YAML used) and inference_confidence, so the run is reproducible non-auto by writing that config to a file. On a gate failure, it returns INFERENCE_AMBIGUOUS with exit code 2 and no result data.

When something fails

suggestions is there specifically so an agent has a next action instead of a dead end.

Exit codes

The one that trips people up: 3 and 4 are not failures. The run completed and found unmatched rows or exceptions. Those codes only fire when you’ve explicitly opted in with --fail-if-unmatched or --fail-if-exceptions.

Install ready-made skills

This copies skill files into .agents/skills/, plus adapters in .claude/skills/ and .codex/skills/: reusable workflows an agent picks up automatically instead of you re-explaining the CLI in every prompt.

Give your agent context

reconify capabilities is the live source of truth for what a given build supports; prefer it over a cached description of the CLI. This site also publishes llms.txt and llms-full.txt for agents that read documentation directly. A short system-prompt snippet, if you’re wiring Reconify into a fixed agent role: