Exam guide·10 min read·31 July 2026

Claude Agents Tutorial: CCDV-F Developer Exam Guide

A practical claude agents tutorial mapped to the CCDV-F exam's eight domains. Build, test, and secure Claude agents with patterns that earn marks on exam day.

By Solomon Udoh · AI Architect & Certification Lead

Claude Agents Tutorial: CCDV-F Developer Exam Guide

This claude agents tutorial is written for developers preparing for the Claude Certified Developer, Foundations exam (CCDV-F), a 53-item, 120-minute proctored exam scored on a 100-to-1000 scale with a passing mark of 720. We cover the mechanics of building agents with Claude, map every pattern to the exam's eight domains, and flag the judgment calls the exam rewards. If you want the broader concept library, our Claude Certification Concepts hub is the place to start.

What is a Claude agent, and how does it differ from a workflow?

A Claude agent is a system in which the model itself decides which actions to take, in what order, and when to stop, rather than following a fixed sequence of steps. The distinction matters on the CCDV-F exam because Domain 1 (Agents and Workflows, 14.7% of the exam) tests whether you can classify a given scenario correctly.

The practical rule: if the branching logic is fixed and success is easy to verify in advance, you are looking at a workflow. If the model must reason about which tool to call next, or must adapt its plan mid-execution based on intermediate results, you are looking at an agent. A pipeline that always runs extract -> validate -> store is a workflow. A system that decides whether to call a search tool, a calculator, or a code executor based on what it finds is an agent.

CharacteristicWorkflowAgent
Control flowPre-defined by the developerDecided by the model at runtime
BranchingFixed conditionalsDynamic, based on tool results
Success verificationDeterministic, checkable upfrontOften requires model judgment
Typical CCDV-F domainApplications and Integration (D2)Agents and Workflows (D1)
Exam signalPrefer when task is repeatablePrefer when task is open-ended

When a scenario describes a repeatable, verifiable task with fixed branching, the exam expects you to reach for a workflow, not a full agent loop. Agents carry overhead: they consume more tokens, are harder to test, and introduce non-determinism. The exam consistently rewards proportionate solutions.

How does the agentic loop work at the API level?

Every Claude agent is built on the Messages API. Understanding the request-response cycle is foundational to Domain 2 (Applications and Integration, 33.1%), the single heaviest domain on the exam.

The loop runs as follows:

  1. Send a messages request with a tools array and the current conversation history.
  2. Inspect the response's stop_reason field.
  3. If stop_reason is "tool_use", extract the tool call, execute it, append a tool_result block, and loop back to step 1.
  4. If stop_reason is "end_turn", the agent has finished.
python
import anthropic
client = anthropic.Anthropic()
tools = [
{
"name": "search_docs",
"description": "Search the internal knowledge base for relevant documents.",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "The search query."}
},
"required": ["query"]
}
}
]
messages = [{"role": "user", "content": "Find the refund policy for enterprise customers."}]
while True:
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
tools=tools,
messages=messages
)
if response.stop_reason == "end_turn":
# Agent has finished; extract the final text response
print(response.content[0].text)
break
# Handle tool_use blocks
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = run_tool(block.name, block.input) # your dispatch function
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Append assistant turn and tool results before looping
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})

The exam tests two common failure modes here. First, forgetting to append the assistant's full content block (not just the text) before the tool result. Second, misreading stop_reason: "max_tokens" is not the same as "end_turn", and treating them identically is a classic agentic loop anti-pattern.

For a deeper look at the request-response cycle, see our concept on the Messages API Request-Response Cycle.

How do you choose the right Claude model for an agent?

Model selection is Domain 5 (Model Selection and Optimisation, 16.8%) and is the second-heaviest domain after Applications and Integration. The exam does not ask you to memorise benchmark numbers. It asks you to match model capability to task requirements across four axes: latency, cost, quality, and task complexity.

AxisSignal to use a lighter modelSignal to use a heavier model
LatencyUser-facing, sub-second response neededBackground batch job, latency not critical
CostHigh-volume, simple extraction or classificationLow-volume, high-stakes reasoning
QualityWell-defined task with clear success criteriaAmbiguous task requiring nuanced judgment
Task complexitySingle-step, structured input/outputMulti-step, open-ended, tool-heavy

A common exam scenario: a pipeline that classifies support tickets into five categories before routing them. The task is repeatable, the output is constrained, and volume is high. A lighter, faster model is the proportionate choice. Escalate to a more capable model only when the ticket is ambiguous or the stakes of misclassification are high.

The exam also tests cascading model selection in multi-agent systems: a coordinator running on a capable model orchestrates specialist subagents that can run on lighter models for cost efficiency. This pattern appears in Hub-and-Spoke Architecture scenarios.

How do tools and MCPs work in a CCDV-F context?

Domain 8 (Tools and MCPs, 10.6%) covers both custom tools defined inline and Model Context Protocol (MCP) servers. The exam distinguishes between them clearly.

Custom tools are defined in the tools array of a Messages API request. They are scoped to a single API call and are the right choice when the tool is tightly coupled to one application.

MCP servers expose tools, resources, and prompts over a standardised protocol. They are the right choice when the same capability needs to be shared across multiple agents or applications, or when you want to decouple tool implementation from agent code.

json
{
"mcpServers": {
"internal_docs": {
"command": "npx",
"args": ["-y", "@company/docs-mcp-server"],
"env": {
"DOCS_API_KEY": "${DOCS_API_KEY}"
}
}
}
}

Note the ${DOCS_API_KEY} pattern: MCP configuration supports environment variable expansion, which keeps secrets out of version-controlled config files. The exam tests this detail.

The build-vs-use decision for MCP servers follows a simple rule: if a well-maintained community server already covers the integration (GitHub, Slack, databases), use it. Build a custom server only when the integration is proprietary or the existing server's interface does not match your tool description needs. Our concept on Tool Descriptions as Selection Mechanism explains why the description quality, not the tool's underlying logic, is what determines whether Claude calls the right tool.

Tool descriptions are the primary mechanism by which Claude selects among available tools. A vague description causes misrouting; a precise description with scope, trigger conditions, and output format causes correct routing.

Anthropic , Claude Tool Use Documentation

How do you engineer prompts and manage context for agents?

Domain 6 (Prompt and Context Engineering, 11.0%) tests your ability to structure prompts that produce reliable, consistent agent behaviour. The key exam concepts are:

System prompt design. The system prompt sets the agent's role, constraints, and output format. It should be goal-based rather than step-based when the task is open-ended, and step-based when the sequence is fixed. Our concept on Goal-Based vs Step-Based Prompts covers the trade-offs.

Long-context handling. Claude models have large context windows, but the exam tests the attention dilution problem: as context grows, the model's attention to early instructions weakens. The mitigation is to keep the most important instructions at the top of the system prompt and to use structured context passing rather than appending raw tool outputs verbatim.

Few-shot examples. For tasks with ambiguous edge cases or non-obvious output formats, few-shot examples are the highest-leverage technique. The exam rewards knowing when to deploy them versus when a clear instruction suffices.

text
System: You are a support ticket classifier. Classify each ticket into exactly one of:
[billing, technical, account, feature_request, other].
Output format:
{"category": "<category>", "confidence": "<high|medium|low>", "reason": "<one sentence>"}
Examples:
User: "I was charged twice this month."
Assistant: {"category": "billing", "confidence": "high", "reason": "Duplicate charge is a billing issue."}
User: "The export button does nothing when I click it."
Assistant: {"category": "technical", "confidence": "high", "reason": "Non-functional UI element is a technical defect."}

Context management across sessions. Agents that run across multiple turns accumulate stale context. The exam tests the Stale Context Problem and its mitigations: summary injection for fresh sessions, forking sessions for divergent exploration, and knowing when to resume versus start fresh.

How do you secure a Claude agent against prompt injection?

Domain 7 (Security and Safety, 8.1%) is a smaller but high-signal domain. The exam focuses on practical mitigations, not theoretical threat models.

Prompt injection occurs when untrusted content in a tool result or user message attempts to override the agent's system prompt instructions. The primary defence is architectural: treat all tool results as untrusted data, never as instructions.

python
# Vulnerable: tool result interpolated directly into a new system prompt
system = f"You are a helpful assistant. Context: {tool_result}"
# Safer: tool result passed as a user-turn message, not a system prompt
messages = [
{"role": "user", "content": f"Here is the retrieved document:\n\n{tool_result}\n\nAnswer the user's question based on it."}
]

The exam also tests minimal footprint as a design principle: agents should request only the permissions they need, prefer reversible actions over irreversible ones, and pause for human confirmation before taking high-stakes actions. This is not just a safety principle; it is the exam's preferred answer whenever a scenario involves an agent with broad tool access and an ambiguous instruction.

Guardrails in the exam context are programmatic checks layered around the agent loop, not just prompt instructions. A hook that inspects every tool call before execution and blocks disallowed patterns is more reliable than a system prompt instruction alone. This connects to the Hooks vs Prompts Decision Framework: use programmatic enforcement when the stakes are high and the rule is binary.

Prefer deterministic, programmatic enforcement over prompt-based instructions for high-stakes constraints. Prompts can be overridden by sufficiently adversarial inputs; code cannot.

Anthropic , Claude Code Hooks Documentation

How do you evaluate and debug a Claude agent?

Domain 4 (Eval, Testing, and Debugging, 2.6%) is the smallest domain by weight but appears in scenario questions that span multiple domains. The exam tests your ability to diagnose unexpected model outputs and design regression tests.

Regression testing for agents requires fixed test cases with known-good outputs. Because agents are non-deterministic, the exam rewards rubric-based graders over exact-match graders. A rubric grades the response on dimensions (accuracy, format compliance, tool selection correctness) rather than checking for a specific string.

Diagnosing unexpected outputs follows a root-cause-first approach. The exam's preferred diagnostic sequence:

  1. Check whether the system prompt is being received correctly (log the full request).
  2. Check whether the tool result is being appended in the correct format.
  3. Check whether stop_reason is what you expect.
  4. Check whether context length is approaching the model's limit, causing attention dilution.
  5. Only after ruling out the above, consider whether the model itself is the problem.

The exam consistently rewards this root-cause tracing discipline over probabilistic guesses.

How does Claude Code fit into the CCDV-F exam?

Domain 3 (Claude Code, 3.1%) is the smallest domain. The exam tests CLI setup, permissions, hooks, slash commands, and headless automation, not deep implementation detail.

The key exam facts: Claude Code runs in a terminal, supports a three-level configuration hierarchy (user, project, and session), and uses hooks to enforce rules programmatically before and after tool calls. The --print flag (-p) enables non-interactive, headless mode suitable for CI/CD pipelines.

bash
# Run Claude Code non-interactively in a CI pipeline
claude -p "Run the test suite and report any failures as JSON." --output-format json

The exam distinguishes between Claude Code skills (reusable, user-scoped behaviours) and CLAUDE.md instructions (project-scoped context). Skills customise how Claude Code behaves for a developer; CLAUDE.md tells Claude Code about the project's conventions and constraints.

What does the CCDV-F exam domain breakdown look like?

Understanding the weight distribution helps you allocate study time. Applications and Integration is the dominant domain at 33.1% and deserves the most preparation time.

DomainWeightKey exam topics
D1: Agents and Workflows14.7%Agent vs workflow classification, agentic loop mechanics
D2: Applications and Integration33.1%Messages API, system design, integration patterns, model selection
D3: Claude Code3.1%CLI, hooks, slash commands, headless mode
D4: Eval, Testing, and Debugging2.6%Rubric graders, regression tests, output diagnosis
D5: Model Selection and Optimisation16.8%Latency/cost/quality trade-offs, cascading model selection
D6: Prompt and Context Engineering11.0%System prompts, few-shot, long-context, session management
D7: Security and Safety8.1%Prompt injection, minimal footprint, guardrails
D8: Tools and MCPs10.6%Custom tools, MCP servers, tool descriptions, build vs use

The CCDV-F exam costs $125 USD per attempt, runs for 120 minutes, and is delivered online-proctored or at a Pearson VUE test centre. The credential is valid for 12 months from the date it is awarded. AI Skill Certs offers adaptive study, Archie tutoring, and practice exams for CCDV-F today; our practice exams mirror the real format, scored 100 to 1000 with 720 as the passing bar across 53 questions.

For the architectural patterns that underpin multi-agent systems, our Agentic Architecture and Orchestration concept area covers the full set of CCAR-F-mapped patterns, many of which also appear in CCDV-F Domain 1 scenarios.

Frequently asked questions

How many questions are on the CCDV-F exam and what is the passing score?
The CCDV-F exam has 53 items and a 120-minute time limit. It is scored on a 100-to-1000 scale, and the passing score is 720. Anthropic does not publish the raw-to-scaled conversion, so there is no exact question count that guarantees a pass.
Does the CCDV-F exam use a scenario bank like the CCAR-F exam?
No. Unlike the CCAR-F Architect exam, which draws four scenarios at random from a bank of six, the CCDV-F exam has no scenario bank. Items are written directly against the skills in each domain, so every sitting covers the same domain areas.
What is the best way to study for the Applications and Integration domain on CCDV-F?
Applications and Integration is 33.1% of the exam, the largest single domain. Focus on the Messages API request-response cycle, stop_reason handling, tool result appending, integration pattern selection, and configuration management. Hands-on practice building a working agentic loop is more effective than reading alone.
How does the CCDV-F exam test prompt injection defence?
The exam presents scenarios where untrusted content arrives via tool results or user messages and asks you to identify the correct mitigation. The preferred answer is architectural: treat tool results as data, not instructions, and layer programmatic guardrails around the agent loop rather than relying solely on system prompt instructions.
Is AI Skill Certs affiliated with Anthropic?
No. AI Skill Certs is an independent adaptive prep platform. It is not affiliated with, endorsed by, or approved by Anthropic. The CCDV-F exam is an Anthropic certification delivered via Pearson VUE; AI Skill Certs prepares developers for it independently.
When should I use an MCP server instead of a custom inline tool?
Use an MCP server when the same capability needs to be shared across multiple agents or applications, or when you want to decouple tool implementation from agent code. Use an inline custom tool when the tool is tightly coupled to one application and will not be reused elsewhere.

People also ask

What is the difference between a Claude agent and a Claude workflow?
A Claude agent lets the model decide which actions to take and in what order at runtime. A workflow follows a fixed, pre-defined sequence of steps. If branching is fixed and success is easy to verify upfront, use a workflow. If the model must adapt its plan based on intermediate results, use an agent.
How do you build a Claude agent with tool use?
Define tools in the Messages API request's tools array, send the request, inspect the stop_reason field, and if it is tool_use, execute the tool, append a tool_result block, and loop. Continue until stop_reason is end_turn. Appending the full assistant content block before the tool result is essential and a common exam failure point.
What domains are on the CCDV-F Claude developer exam?
The CCDV-F exam has eight domains: Agents and Workflows (14.7%), Applications and Integration (33.1%), Claude Code (3.1%), Eval, Testing, and Debugging (2.6%), Model Selection and Optimisation (16.8%), Prompt and Context Engineering (11.0%), Security and Safety (8.1%), and Tools and MCPs (10.6%).
How does prompt injection affect Claude agents and how do you prevent it?
Prompt injection occurs when untrusted content in a tool result tries to override system prompt instructions. Prevent it by treating all tool results as data passed in user-turn messages, never interpolating them into the system prompt, and adding programmatic guardrails that inspect tool calls before execution.
How do you choose between Claude models for an agent task?
Match model capability to task requirements across four axes: latency, cost, quality, and task complexity. Use a lighter, faster model for high-volume, well-defined tasks with constrained outputs. Use a more capable model for low-volume, ambiguous, or high-stakes tasks requiring nuanced reasoning or complex multi-step tool use.

About the author

Solomon Udoh

AI Architect & Certification Lead

Solomon Udoh is an AI Architect who designs and ships production agent systems on the Claude API and Claude Code. He built AI Skill Certs' adaptive engine and authored its 174-concept knowledge graph, mapping every Claude Certified Architect - Foundations objective to hands-on, exam-aligned practice.

  • Designs production multi-agent systems on the Claude API and Agent SDK
  • Author of the AI Skill Certs knowledge graph (174 mapped exam concepts)
  • Builds with MCP, Claude Code, structured outputs, and agentic loops daily
  • Reviews every concept page against the official Anthropic exam guide

You might also like

Ready to put it into practice?

Study every exam concept with an adaptive tutor.

Start studying