CCAR-F Study Guide

CCAR-F questions and answers — Domain 2: Tool Design & MCP

11 practice questions on Tool Design & MCP Integration, the domain weighted at 18% of the CCAR-F exam. Every answer explains why the distractors fail — that is the part that transfers to questions you have not seen before.

Question 1

Your search_orders tool is frequently called with malformed date strings. What is the most reliable fix?

  1. Add a line to the system prompt describing the date format
  2. Tighten input_schema — describe the format in the parameter description, and set strict: true with additionalProperties: false
  3. Post-process the argument and guess the intended date
  4. Switch to a larger model

Answer: B. The schema is the contract the model is generating against; strict: true makes conformance enforced rather than requested. System-prompt notes about a specific parameter are easily lost among many tools. Guessing at malformed input hides the defect and creates silent wrong answers.

Question 2

A tool call fails because the order does not exist. How should your application return this?

  1. Raise an exception in your handler and omit the tool_result block
  2. Return a tool_result with is_error: true and an actionable message in content
  3. Return an empty tool_result
  4. Return a tool_result containing an empty list of orders

Answer: B. Failures travel back through the same protocol channel: a tool_result with is_error: true and the reason in content. Omitting the block breaks the exchange, since every tool_use needs a matching result. Empty results are read as 'no data found', which is a different fact entirely.

Question 3

Which error payload best supports an agent's decision-making?

  1. {"error": "Request failed"}
  2. {"error": {"code": "RATE_LIMITED", "message": "...", "isRetryable": true, "suggestedAction": "Retry after 30s"}}
  3. {"status": 500}
  4. An HTTP status code with the response body stripped

Answer: B. The agent needs three things: what happened, whether retrying could help, and what else it might do. The isRetryable flag is what turns blanket retry-with-backoff into a policy that retries transient failures and surfaces permanent ones immediately.

Question 4

You are consolidating an agent's tool set. Which change is most likely to improve reliability?

  1. Replace get_user, get_user_email and get_user_tier with one get_customer_profile
  2. Split get_customer_profile into six single-field tools for precision
  3. Add a help tool that explains the other tools
  4. Register every tool twice under different names to improve recall

Answer: A. Each tool costs context and adds a chance of mis-selection. Consolidating overlapping micro-tools into a coherent, higher-level tool reduces both. Splitting further, adding meta-tools, or duplicating names all increase the surface the model must choose across.

Question 5

In MCP, which primitives are exposed by servers?

  1. Sampling, elicitation and logging
  2. Tools, resources and prompts
  3. Tools, sampling and roots
  4. Resources, transports and sessions

Answer: B. Servers expose tools (executable actions), resources (context data) and prompts (reusable templates). Sampling, elicitation and logging are the client-side primitives — the ways a server can ask the host to run a completion, ask the user something, or emit logs.

Question 6

An internal MCP server runs on the same machine as the client and serves that one client. Which transport is appropriate, and why?

  1. Streamable HTTP, because it supports OAuth
  2. stdio, because it is direct process communication with no network overhead
  3. WebSocket, because it is bidirectional
  4. SSE, because it is the modern default

Answer: B. stdio is designed for exactly this: a local process serving a single client, with no network hop. Streamable HTTP is the choice for remote servers serving many clients, where standard HTTP authentication — preferably OAuth — matters. SSE as a standalone transport is deprecated.

Question 7

Your team needs everyone on the project to get the same MCP server automatically after cloning the repo. Which scope?

  1. local, stored in ~/.claude.json
  2. user, so it is available everywhere
  3. project, stored in .mcp.json at the repo root
  4. Managed organisation scope

Answer: C. Project scope writes to .mcp.json at the project root, which you commit. Local and user scopes live in ~/.claude.json and are personal to one machine. Managed scope is an organisation-wide deployment, heavier than a single team repository needs.

Question 8

A committed .mcp.json needs an API token that differs per developer. What is the correct approach?

  1. Commit the token and rotate it monthly
  2. Use ${API_TOKEN} expansion in the headers value, with each developer setting the variable
  3. Have each developer edit .mcp.json and gitignore it
  4. Move the server to user scope for everyone

Answer: B. Environment expansion — ${VAR} and ${VAR:-default} — is what makes a shared .mcp.json committable. Gitignoring the file loses the shared configuration entirely; user scope means every developer configures it from scratch; committing secrets is never right. For rotating credentials such as Kerberos tickets, headersHelper runs a script that prints the headers.

Question 9

Which permission rule denies every tool from every MCP server?

  1. mcp__*
  2. mcp__server__*
  3. mcp__server
  4. MCP(*)

Answer: A. MCP tools are named mcp__<server>__<tool>. mcp__server and mcp__server__* each remove one named server's tools; mcp__* removes every MCP tool from any server. There is no MCP(*) form.

Question 10

In a CI run, an MCP server entry fails config validation. What happens by default, and how should the pipeline react?

  1. The run aborts with a non-zero exit code; no action needed
  2. The entry is skipped and the run continues and exits cleanly; check mcp_server_errors in the system/init event to fail the build
  3. Claude Code prompts for confirmation, blocking the pipeline
  4. The server is retried until MCP_TIMEOUT elapses, then the run aborts

Answer: B. Invalid entries are skipped and the run exits cleanly, which is exactly how a silently degraded pipeline happens. With --output-format stream-json, the system/init event carries mcp_servers and mcp_server_errors; gate the build on the latter being empty. The same pattern applies to plugin_errors.

Question 11

Claude returns two tool_use blocks in one response. What must your next request contain?

  1. A single tool_result for the first tool, then another request for the second
  2. Both tool_result blocks together, each matching its tool_use_id
  3. A tool_result for whichever finished first, with the other discarded
  4. A summary of both results in a plain text user message

Answer: B. Parallel tool use means all matching results go back together in the next user message, keyed by tool_use_id. Splitting them across requests breaks the exchange. If your backend cannot handle concurrency, disable it with {"type":"auto","disable_parallel_tool_use": true} rather than mishandling the results.

← Previous: Questions & answers — Domain 1  |  Next: Questions & answers — Domain 3 →

Architect CCAR-F Real Exam Questions

Ready to Pass Your CCAR-F Certification?

Practice with authentic exam questions, verified explanations, and timed test simulation to guarantee your success.

Starting from $49.00
Take Practice Exam →