Anthropic CCA-F Exam Actual Questions
Claude Certified Architect - Foundations (Page 7 )

Updated On: 1-Aug-2026

Your search Flights tool calls an external airline API that occasionally returns a 503 Service Unavailable error.
What is the most effective way to handle this error in your tool implementation?

  1. Return an empty flight list as if the search succeeded but found no matching flights.
  2. Log the error internally and return an empty response, letting the model continue without the flight data.
  3. Return an error message in the tool result explaining the service is temporarily unavailable.
  4. Automatically retry the request up to five times with exponential backoff before returning results to the agent.

Answer(s): D

Explanation:

A: Return an empty flight list as if the search succeeded but found no matching flights. Incorrect.
This hides the failure and misleads the system into thinking no flights exist, which can lead to incorrect conclusions.
B: Log the error internally and return an empty response, letting the model continue without the flight data. Incorrect.
This still suppresses the failure signal, preventing the agent from taking corrective action.
C: Return an error message in the tool result explaining the service is temporarily unavailable. Incorrect.
While transparent, this alone doesn’t attempt recovery and may degrade user experience unnecessarily.
D: Automatically retry the request up to five times with exponential backoff before returning results to the agent. Correct.
This is the most effective approach—handles transient failures gracefully , improves reliability, and only surfaces errors if retries fail.



Your MCP server implements a check_availability tool that queries an external calendar API. During testing, you encounter three error conditions: (1) the tool is called with a malformed request, missing the required user_email parameter (2) the calendar API returns a 404 because the specified user doesn't exist in the calendar system (3) the calendar API returns a 503 because the service is temporarily unavailable. How should each error be reported according to MCP's error handling design?

  1. Report all three as tool results with isError: true
  2. Report errors 1 and 2 as JSON-RPC protocol errors, report error 3 as a tool result with isError: true
  3. Report error 1 as a JSON-RPC protocol error, report errors 2 and 3 as tool results with isError: true
  4. Report all three as JSON-RPC protocol errors.

Answer(s): C

Explanation:

A: Report all three as tool results with isError: true Incorrect.
Malformed requests (error 1) are protocol-level issues , not tool execution results, so they should not be reported this way.
B: Report errors 1 and 2 as JSON-RPC protocol errors, report error 3 as a tool result with isError: true Incorrect.
A 404 (error 2) is a valid tool execution outcome (the user doesn’t exist), not a protocol error.
C: Report error 1 as a JSON-RPC protocol error, report errors 2 and 3 as tool results with isError: true Correct.
Error 1 (malformed request) → JSON-RPC protocol error (invalid input) Error 2 (user not found) → Tool result with isError: true (valid execution, meaningful failure) Error 3 (service unavailable) → Tool result with isError: true (transient external failure)
D: Report all three as JSON-RPC protocol errors. Incorrect.
Only malformed requests should be protocol errors; external API responses are tool-level outcomes , not protocol failures.



Your documents (query) tool returns results as "Found 3 documents: Q2 Budget Proposal, Q2 Budget Forecast, Annual Review". You want the agent to document (4, multi) and doc (24, multi).
What return format would best enable these multi-step workflows?

  1. URLs that users can click to open the document in their browser.
  2. Structured data containing document IDs and metadata for each result.
  3. A JSON array of document titles extracted from the search results.
  4. More detailed human-readable descriptions including the size and authors.

Answer(s): B

Explanation:

A: URLs that users can click to open the document in their browser. Incorrect.
URLs are useful for users, but not ideal for agents performing multi-step workflows that require reliable referencing and further operations .
B: Structured data containing document IDs and metadata for each result. Correct.
This enables the agent to programmatically reference specific documents (via IDs) across multiple steps, making workflows like follow-up queries or document retrieval precise and reliable.
C: A JSON array of document titles extracted from the search results. Incorrect.
Titles alone are ambiguous and not stable identifiers, making it difficult for agents to reliably act on specific documents.
D: More detailed human-readable descriptions including the size and authors. Incorrect.
Helpful for users, but still unstructured and not suitable for precise multi-step agent operations.



Your agent has access to 50+ specialized API connectors for different external services. As the connector library grew, tool selection accuracy dropped to 58%. You design a search_connectors(description) tool that finds matching connectors, but in testing agents frequently skip searching and call connectors directly (often incorrectly), or search select wrong connectors from the filtered results. How should you design the tool composition pattern to address both issues?

  1. Design connectors with built-in compatibility validation that return descriptive errors for mismatched requests.
  2. Design a find_and_execute(description, params) composite tool that searches and immediately executes the best matching connector.
  3. Enhance all connector descriptions with detailed usage samples, edge cases, and input requirements. Add few-shot examples showing the correct search-then-use workflow.
  4. Design search_connectors to dynamically add matched connectors to the agent's available tools. Connectors start unavailable and persist once discovered.

Answer(s): D

Explanation:

A: Design connectors with built-in compatibility validation that return descriptive errors for mismatched requests. Incorrect.
This helps with error handling after a wrong choice is made, but does not improve initial tool selection accuracy .
B: Design a find_and_execute(description, params) composite tool that searches and immediately executes the best matching connector. Incorrect.
This removes transparency and control, making debugging harder and preventing the agent from reasoning about tool choice.
C: Enhance all connector descriptions with detailed usage samples, edge cases, and input requirements. Add few-shot examples showing the correct search-then-use workflow. Incorrect.
While helpful, this still relies on the agent to follow instructions and does not enforce correct behavior, especially at scale with 50+ tools.
D: Design search_connectors to dynamically add matched connectors to the agent's available tools. Connectors start unavailable and persist once discovered. Correct.
This enforces the search-first pattern by limiting available tools initially and reducing the decision space , improving both discovery and correct selection.



Your publish article tool calls an external CMS API that occasionally returns transient errors (network timeouts,
503s) and non-transient errors (403 permission denied, 422 validation failure). Currently, every error is returned directly to the agent, which leads to the agent retrying non-transient errors and wasting turns on failures that will never succeed. How should you partition error-handling responsibility between the tool implementation and the agent?

  1. Handle all errors inside the tool: Implement retries with exponential backoff for every error type, and only surface a failure to the agent after a fixed number of retry attempts have been exhausted.
  2. Handle transient errors (timeouts, 503s) with automatic retries inside the tool implementation, and surface non-transient errors (permission denied, validation fallures) to the agent with descriptive messages so it can take corrective action.
  3. Surface all errors to the agent immediately with detailed context, and let the agent decide which errors to retry and how many times-keeping the tool implementation stateless and simple.
  4. Implement a universal error handler that catches all exceptions and returns a generic "tool unavailable-try again later" message, shielding the agent from error complexity.

Answer(s): B

Explanation:

A: Handle all errors inside the tool: Implement retries with exponential backoff for every error type, and only surface a failure to the agent after a fixed number of retry attempts have been exhausted. Incorrect.
This wastes time retrying non-transient errors (e.g., 403, 422) that will never succeed and hides useful feedback from the agent.
B: Handle transient errors (timeouts, 503s) with automatic retries inside the tool implementation, and surface non-transient errors (permission denied, validation failures) to the agent with descriptive messages so it can take corrective action. Correct.
This cleanly separates responsibility:
Tool handles recoverable/transient issues automatically Agent receives actionable errors it can fix (permissions, input validation)
C: Surface all errors to the agent immediately with detailed context, and let the agent decide which errors to retry and how many times—keeping the tool implementation stateless and simple. Incorrect.
This pushes retry logic to the agent, leading to inefficient behavior and wasted turns .
D: Implement a universal error handler that catches all exceptions and returns a generic "tool unavailable —try again later" message, shielding the agent from error complexity. Incorrect.
This removes critical detail, preventing the agent from taking corrective actions when possible.



Your remove_team_member tool uses a dry_run: boolean parameter for previewing impacts before execution. Production monitoring shows the agent bypasses the preview step in 15% of calls by calling with dry_run=false directly. You need to ensure every removal is preceded by a preview that the user explicitly confirms.
What is the most reliable approach?

  1. Add server-side validation that permits dry_run=false only when a dry_run=true call with identical parameters occurred within the past 60 seconds.
  2. Replace with two tools: preview_remove_member returns impact details and a single-use confirmation token; execute_remove_member requires that token, binding execution to the specific previewed action.
  3. Annotate the tool as requiring confirmation and configure the orchestration layer to prompt the user for approval before forwarding any calls to annotated tools.
  4. Add detailed instructions and few-shot examples to the tool description requiring the agent to always call with dry_run=true first and wait for user confirmation before calling with dry_run=false.

Answer(s): B

Explanation:

A: Add server-side validation that permits dry_run=false only when a dry_run=true call with identical parameters occurred within the past 60 seconds. Incorrect.
This approach is brittle because it depends on timing and does not guarantee that the user actually reviewed or confirmed the preview.
B: Replace with two tools: preview_remove_member returns impact details and a single-use confirmation token; execute_remove_member requires that token, binding execution to the specific previewed action. Correct.
This enforces the correct workflow at the system level by requiring a valid preview step and tying execution to an explicit confirmation, making bypass impossible.
C: Annotate the tool as requiring confirmation and configure the orchestration layer to prompt the user for approval before forwarding any calls to annotated tools. Incorrect.
This depends on orchestration behavior and is not strictly enforced, so it can still be bypassed or misconfigured.
D: Add detailed instructions and few-shot examples to the tool description requiring the agent to always call with dry_run=true first and wait for user confirmation before calling with dry_run=false. Incorrect.
Instruction-based approaches are not reliable for enforcement, as demonstrated by the existing bypass rate.



Your expense reimbursement agent processes employee requests using a process reimbursement tool. Company policy requires that reimbursements above $500 must be approved before funds are disbursed. The agent handles hundreds of requests daily, and you need the threshold enforcement to be tamper-proof regardless of how the agent is prompted ensures the $500 approval threshold cannot be bypassed?

  1. The process reimbursement tool accepts an approved by manager parameter. The system prompt instructs the agent to only set this to true after confirming that a manager approved the request. A nightly audit script reviews all reimbursements where approved by manager was set to true.
  2. Provide two tools: auto reimburse (hard-coded limit of $500) and manager approval. Include detailed system prompt instructions telling the agent to check the amount and use the appropriate tool. Add a Post ToolUse hook that logs which tool was called for auditing.
  3. The process reimbursement tool accepts amount and details, and internally enforces the threshold; amounts <$500 are auto-disbursed and the tool returns a success confirmation. Amounts >$500 cause the tool to create a pending approval request and return a status indicating manager review is pending.
  4. Implement the threshold check in a PreToolUse hook that inspects the amount parameter before process reimbursement executes. If the amount exceeds $500, the hook modifies the context to add a requires approval: true flag, which the tool checks before disbursing.

Answer(s): C

Explanation:

A: The process reimbursement tool accepts an approved by manager parameter. The system prompt instructs the agent to only set this to true after confirming that a manager approved the request. A nightly audit script reviews all reimbursements where approved by manager was set to true. Incorrect.
This relies on the agent following instructions and post-hoc auditing, which is not tamper-proof and allows bypass at execution time.
B: Provide two tools: auto reimburse (hard-coded limit of $500) and manager approval. Include detailed system prompt instructions telling the agent to check the amount and use the appropriate tool. Add a Post ToolUse hook that logs which tool was called for auditing. Incorrect.
Again depends on agent behavior and correct tool selection. Logging helps auditing but does not prevent misuse.
C: The process reimbursement tool accepts amount and details, and internally enforces the threshold; amounts <$500 are auto-disbursed and the tool returns a success confirmation. Amounts >$500 cause the tool to create a pending approval request and return a status indicating manager review is pending. Correct.
This enforces the rule inside the tool itself , making it impossible to bypass regardless of how the agent is prompted.
D: Implement the threshold check in a PreToolUse hook that inspects the amount parameter before process reimbursement executes. If the amount exceeds $500, the hook modifies the context to add a requires approval: true flag, which the tool checks before disbursing. Incorrect.
PreToolUse hooks can be bypassed or misconfigured and still rely on downstream logic. Enforcement should reside directly within the tool for full reliability.



Your order management system requires tools for three distinct operations: issuing refunds (requires amount and reason), canceling orders (requires reason), and res (requires shipping address). Each operation shares an order id parameter but has different additional requirements. You notice during testing that with your current frequently omits required parameters or includes irrelevant ones.
What design change will most effectively improve parameter accuracy?

  1. Split into three separate tools (each defining only the parameters required for that specific operation.
  2. Keep one unified tool with all parameters marked optional, but add few-shot examples in the system prompt showing correct parameter combinations for each operation.
  3. Keep one unified tool but add JSON Schema if-then-else conditionals to enforce that parameters like amount are required only when the operation type is "refund".
  4. Keep one unified tool with a nested operation object parameter whose internal structure varies by operation type, documented in the tool description.

Answer(s): A

Explanation:

A: Split into three separate tools (e.g., issue_refund, cancel_order, reship_order), each defining only the parameters required for that specific operation. Correct.
This reduces ambiguity and ensures the agent only sees relevant parameters per operation , leading to much higher accuracy.
B: Keep one unified tool with all parameters marked optional, but add few-shot examples in the system prompt showing correct parameter combinations for each operation. Incorrect.
Examples help, but the schema remains ambiguous, so errors will still occur.
C: Keep one unified tool but add JSON Schema if-then-else conditionals to enforce that parameters like amount are required only when the operation type is "refund". Incorrect.
While technically valid, this increases complexity and is less reliable than simply separating tools.
D: Keep one unified tool with a nested operation object parameter whose internal structure varies by operation type, documented in the tool description. Incorrect.
This adds complexity and cognitive load, making it harder for the agent to consistently provide correct parameters.



Viewing page 7 of 20
Viewing questions 49 - 56 out of 149 questions


Post your Comments and Discuss Anthropic CCA-F exam prep with other Community members:

AI Tutor AI Tutor 👋 I’m here to help!