Your invoice-processing system has six tools: extract_metadata, categorize_expense, match_to_PO, validate_totals, flag_for_review, and submit_for_payment. Business rules require that extract_metadata (which pulls the date, vendor, and invoice number) runs before any of the other tools — those downstream tools depend on metadata.
The agent skips extract_metadata about 4% of the time when the invoice is short or when the user explicitly mentions a vendor name. Downstream tools then fail with cryptic errors.
What's the most reliable fix?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
Forced tool selection on the first turn guarantees the prerequisite step runs, and then the agent regains normal tool discretion for subsequent turns. This is one of the highest-leverage uses of tool_choice: {"type": "tool", "name": "..."} — locking in a deterministic prerequisite without locking down the rest of the workflow. Prompt instructions for ordering produce probabilistic compliance; forced first-call tool selection produces deterministic ordering.
You've already seen this fail 4% of the time. Capitalizing "ALWAYS" doesn't make probabilistic compliance deterministic — it just makes the failures slightly less frequent. When ordering matters, use a mechanism that enforces it.
Removing downstream tools means the agent can't complete any invoice processing — only the prerequisite step. You'd have to re-add them somehow, and now you're back to the original problem.
Catching downstream errors and retrying doubles the latency on every failure case and exposes the agent to confusing intermediate states. Prevent the skip; don't recover from it.