CCAR-F scenarios › Customer Support Resolution Agent · Question 1 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.
Agentic Architecture & Orchestration
Company policy caps agent-issued refunds at $500; anything larger must go to a human. The system prompt states this rule clearly, yet an audit finds a handful of process_refund calls for $700-$1,400 each month, usually in long conversations with persuasive customers. What is the most effective fix?
Show answer and explanation
Answer: B — Add a hook that intercepts outgoing process_refund calls, blocks any whose amount exceeds $500, and redirects the case to escalate_to_human with the requested amount attached.
A hard business rule with financial consequences needs a deterministic guarantee, and a tool-call interception hook gives that: the oversized call never runs, and the case is sent on to escalation (task 1.5). Prompt wording and few-shot examples (a) are still probabilistic, and the audit already shows a non-zero failure rate for prompt-only enforcement. Self-reported confidence (c) is poorly calibrated and is still the model policing itself. An iteration limit (d) is an arbitrary cap that doesn't address the rule, cuts legitimate long conversations short, and a short conversation can still produce an oversized refund.
More from this scenario
- Your loop around the support agent ends the conversation whenever Claude's response…
- Human agents who receive cases from escalate_to_human report that they spend the first…
- When a customer asks for a refund on an order that is outside the 30-day return window…
- During a 20-minute backend outage, lookup_order returned an empty result list, the same…
- You expanded the descriptions of get_customer and lookup_order with input formats…