CCAR-F scenarios › Customer Support Resolution Agent · Question 5 of 60
Scenario 1 · Customer Support Resolution Agent
You're building a support agent with the Claude Agent SDK that resolves ambiguous customer requests such as returns, billing disputes, and account problems. It reaches your backend through custom MCP tools: get_customer, lookup_order, process_refund, and escalate_to_human. The goal is to resolve at least 80% of contacts on first touch while recognizing the cases a human should take over.
Tool Design & MCP Integration
During a 20-minute backend outage, lookup_order returned an empty result list, the same response it gives when no order matches. The agent told dozens of customers that their order "does not exist in our system," which generated complaints. What change most directly prevents this?
Show answer and explanation
Answer: B — Have lookup_order report access failures as errors (isError true, transient, retryable) and return an empty list only when a query succeeds but finds no matching order.
The root cause is that the tool merges two different outcomes: an access failure that needs a retry decision and a valid empty result (task 2.2). Once they're distinct, the agent can retry or tell the customer about a temporary problem instead of denying the order exists. Asking customers to re-check (a) blames them during an outage, and the agent still can't tell the two cases apart. Calling twice (c) fails during any outage longer than a few seconds and wastes calls on the ordinary not-found case. A health-check tool plus blanket escalation (d) adds a call to every conversation and overloads humans during the outage, all to work around an ambiguous response that structured errors fix at the source.
More from this scenario
- You expanded the descriptions of get_customer and lookup_order with input formats…
- To stay within context limits, your system summarizes older turns once a conversation…
- Each lookup_order call returns about 45 fields (warehouse codes, carrier internals, tax…
- A customer says "I'm Maria Lopez, I was double-charged last week." get_customer returns…
- You are writing explicit escalation criteria with few-shot examples for the system…