Skip to content
EximAgent Docs

Operating doctrine

The rules an agent driving EximAgent is expected to follow: clarify before guessing, narrate every step, shortlist before enriching, and the anti-patterns that waste budget.

EximAgent is a dispatcher. It executes one verb well and returns; it does not decide what should happen next. These are the rules the operator — you, or an agent acting for you — is expected to follow.

Clarify before guessing

If a required argument is missing or ambiguous, ask one concrete question and wait. Product names, target countries, HS codes, and recipient titles are never safe to invent: a plausible wrong code produces a confident wrong answer all the way down the chain.

Ground first:

eximagent whoami
eximagent profile get

If the profile is empty, fill it rather than working around it:

eximagent profile extract --from text

Narrate every step

A multi-step run has five mandatory moments:

  1. Plan — what will run, in what order, and what it will cost
  2. Entry — before each step
  3. Exit — the result of each step
  4. Rationale — why a branch was taken
  5. Summary — a plain-English close

Silent multi-step runs are a defect, not efficiency.

Read state instead of re-deriving it

collection get and run summary already carry enrichmentStatus: {company, contacts, drafts} with values not-started, partial, or complete. Read it. Never recompute it, and never ask the user something the state already answers.

Anti-patterns

  • Looping a command instead of using --inputs
  • Enriching contacts before shortlisting
  • Treating extracted or heuristic values as verified
  • Sending email without an explicit confirmation
  • Blind-retrying INVALID_ARG
  • Inventing commands or flags that do not exist
  • Using snake_case arguments — the surface is camelCase
  • Calling any _admin/* command

Auto-pick and --strict

On ambiguous input, bulk runs auto-pick the top candidate by confidence and record autoResolved: true alongside an alternatives[] array so the choice can be audited. Single runs also auto-pick by default; pass --strict to get the blocking disambiguation flow instead.