Certification
    June 9, 2026

    Claude Certified Architect (Foundations): Complete Exam Prep Course

    A complete, hands-on prep course for the Claude Certified Architect — Foundations exam: the five domains, curriculum with code, and a four-week plan.

    Share

    Claude Certified Architect (Foundations): Complete Course

    The Claude Certified Architect — Foundations (CCA-F) certification validates that you can design and implement production-grade systems with Claude, and make sound tradeoff decisions across the Claude API, the Claude Agent SDK, Claude Code, and the Model Context Protocol (MCP).

    This is a complete prep course: overview, the five exam domains, a full curriculum with code, a four-week plan, eight hands-on exercises, tips, and a curated resource list. Use the "On this page" outline to jump between sections.

    📚 This is Page 1 of an 8-page course. Mark each page complete (button at the bottom of every page) and your progress fills in on the Courses page. The pages: 1. Overview (this page) · 2. Domain 1 — Agentic Architecture · 3. Domain 2 — Tool Design & MCP · 4. Domain 3 — Claude Code · 5. Domain 4 — Prompt & Structured Output · 6. Domain 5 — Context & Reliability · 7. The 6 Exam Scenarios · 8. Exam Cheat-Sheet.

    A note on sources and policy. This is an independent study course. It links only to publicly available Anthropic documentation and third-party study resources and summarizes the exam at a high level. It deliberately does not reproduce Anthropic's confidential exam materials (the official exam guide is marked Confidential — Need to Know), nor any verbatim sample questions or answer keys. Treat it as a study companion to the official docs and your own hands-on practice. Where you have access to official practice material through the partner portal, make that your primary reference.


    Overview

    The certification is not a memorization test. Questions are grounded in realistic production scenarios and reward practical judgment — given a situation, which architecture or configuration is the right tradeoff?

    Who should take this

    • Solution architects and senior/backend engineers building AI systems with Claude
    • DevOps/SRE engineers integrating Claude into pipelines
    • Tech leads evaluating Claude for production

    What you'll be able to do

    • Design autonomous agentic loops and multi-agent orchestration
    • Build MCP servers with well-designed tools, resources, and structured errors
    • Enforce reliable structured output with JSON schemas and validation
    • Configure Claude Code for teams and CI/CD
    • Manage context windows and design for reliability and escalation

    Prerequisites

    Roughly 6+ months of hands-on experience with the Claude API, Claude Agent SDK, Claude Code, and MCP. If you're newer, work the curriculum and exercises below before booking the exam.

    Exam format at a glance

    • Question type: multiple choice — one correct answer, three distractors
    • Scoring: scaled 100–1,000; passing score 720; pass/fail result
    • Style: scenario-based — a subset of realistic scenarios is drawn from a larger pool, each framing several questions
    • No penalty for guessing — answer every question
    • Commonly cited logistics: ~60 questions in ~120 minutes (confirm current details on the official registration page)

    Exam Domains

    Approximate weightings (largest first). Domain 1 is the heaviest — start there.

    # Domain Weight Focus
    1 Agentic Architecture & Orchestration ~27% Agentic loops, multi-agent coordination, hooks, handoffs
    2 Tool Design & MCP Integration ~18% Tool descriptions, MCP servers, structured errors, tool scoping
    3 Claude Code Configuration & Workflows ~20% CLAUDE.md, slash commands, Skills, plan mode, CI/CD
    4 Prompt Engineering & Structured Output ~20% Explicit criteria, few-shot, JSON-schema tool use, validation
    5 Context Management & Reliability ~15% Long context, escalation, error propagation, provenance

    Scenario types

    The exam frames questions around realistic production contexts. Be ready to reason about each:

    • A customer-support resolution agent with backend tools and an escalation path
    • Code generation with Claude Code — slash commands, CLAUDE.md, plan vs direct execution
    • A multi-agent research pipeline — coordinator + search / analysis / synthesis subagents
    • Developer-productivity tooling over a codebase using built-in + MCP tools
    • Claude Code in CI/CD — automated review and test generation with low false positives
    • Structured data extraction from unstructured documents with JSON-schema validation

    ⚠️ Key insight. Domain 1 (Agentic Architecture) is the largest slice. Master the agentic loop and hub-and-spoke orchestration first — almost everything else builds on them.


    Curriculum

    Module 1 — Agentic Architecture Fundamentals

    The agentic loop. Send a request, inspect stop_reason, execute the requested tool, append the result, repeat until done.

    flowchart TD A[Send request to Claude] --> B{stop_reason} B -->|tool_use| C[Execute the requested tool] C --> D[Append tool_result to messages] D --> A B -->|end_turn| E[Return final answer]
    while True:
        response = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=1024,
            tools=tools,
            messages=messages,
        )
        messages.append({"role": "assistant", "content": response.content})
    
        if response.stop_reason != "tool_use":
            break  # end_turn / max_tokens -> done
    
        # Run every tool the model requested this turn
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })
        messages.append({"role": "user", "content": tool_results})

    Key points:

    • Drive the loop off stop_reason (tool_use vs end_turn) — never parse the model's prose or rely on arbitrary iteration caps as the primary stop
    • Tool results go back as a user message so the model can reason about the next step
    • This is model-driven control flow, not a hard-coded decision tree

    Multi-agent orchestration (hub-and-spoke). A coordinator decomposes the task, delegates to specialized subagents, and routes all communication.

    flowchart TD U[User request] --> CO[Coordinator] CO --> R[Research subagent] CO --> A[Analysis subagent] CO --> W[Writer subagent] R --> CO A --> CO W --> CO CO --> OUT[Final result]
    • Subagents have isolated context — they do not inherit the coordinator's history. Pass what they need explicitly in the prompt
    • The coordinator decides which subagents to invoke based on the query — don't always run the full pipeline
    • Watch for overly narrow task decomposition (e.g., breaking "creative industries" into only visual-arts subtopics) that silently drops coverage

    Lifecycle hooks & enforcement.

    • PreToolUse / PostToolUse hooks intercept calls and results — for logging, data normalization, or blocking policy-violating actions
    • When a step must happen (e.g., verify identity before a refund), use programmatic enforcement / prerequisite gates — prompt instructions alone have a non-zero failure rate
    • Compile structured handoff summaries (key facts + root cause + recommended action) when escalating to a human

    Spawning subagents & passing context.

    • Subagents are spawned via the Task tool — a coordinator's allowedTools must include "Task" to delegate
    • Each subagent is configured with an AgentDefinition (description, system prompt, tool restrictions)
    • Context is not inherited — pass prior findings explicitly in the subagent's prompt; use structured formats to preserve source attribution
    • Spawn subagents in parallel by emitting multiple Task calls in a single response (faster than separate turns)

    Task decomposition.

    • Prompt chaining (fixed sequential passes) for predictable, multi-aspect work — e.g., analyze each file, then a cross-file integration pass
    • Dynamic adaptive decomposition for open-ended investigation — generate subtasks from what each step discovers
    • Avoid attention dilution by splitting large jobs into focused passes

    Session state, resumption & forking.

    • --resume <session-name> continues a specific prior conversation
    • fork_session branches from a shared baseline to explore divergent approaches in parallel
    • Prefer starting fresh with a structured summary over resuming with stale tool results; when you do resume, tell the agent which files changed

    📖 Go deeper: Claude Agent SDK docs (agentic loops, subagents, hooks) and Claude Code memory & sessions.

    Module 2 — Prompt Engineering & Structured Output

    Enforce structure with tool use + JSON schemas (the most reliable approach — eliminates JSON syntax errors).

    {
      "type": "object",
      "properties": {
        "sentiment": { "type": "string", "enum": ["positive", "negative", "neutral"] },
        "confidence": { "type": "number", "minimum": 0, "maximum": 1 }
      },
      "required": ["sentiment", "confidence"]
    }
    • tool_choice: "auto" (model may answer in text), "any" (must call some tool), or forced {"type": "tool", "name": "..."}
    • Make fields nullable/optional when the source may not contain them — prevents the model fabricating values to satisfy required
    • Strict schemas remove syntax errors, not semantic ones (line items that don't sum, values in the wrong field)

    Few-shot examples are the most reliable lever for consistent format and good judgment on ambiguous cases — 2–4 targeted examples that show why one choice beats a plausible alternative.

    Extraction vs classification. Extraction (pull existing values) is more reliable than classification (assign a label) — prefer it when possible.

    Validation, retry & feedback loops.

    • On a validation failure, send a follow-up that includes the original input, the failed output, and the specific error so the model self-corrects
    • Know retry's limit: it fixes format/structural errors but not missing information (info simply absent from the source)
    • Distinguish semantic errors (values don't sum, wrong field) from syntax errors (tool use already eliminates syntax errors)

    Batch processing (Message Batches API).

    • ~50% cost savings, processing window up to 24 hours, no latency SLA → ideal for overnight/weekly jobs, not for blocking pre-merge checks
    • Correlate request/response pairs with custom_id; on failure, resubmit only the failed items (e.g., chunk oversized docs)
    • The batch API does not support multi-turn tool calling within a single request

    Multi-pass & independent review.

    • A model that generated code is biased reviewing its own work — use an independent instance (no prior reasoning context) to catch subtle issues
    • Split large reviews into per-file passes + a cross-file integration pass to avoid attention dilution and contradictory findings

    📖 Go deeper: Prompt engineering guide, Tool use & structured output, and the Message Batches API.

    Module 3 — Model Context Protocol (MCP)

    MCP defines how Claude discovers and uses external capabilities. Three building blocks:

    1. Tools — callable actions (query a DB, send email, call an API)
    2. Resources — readable assets (files, schemas, doc catalogs) that reduce exploratory tool calls
    3. Prompts — reusable instruction templates

    Tool design principles:

    • One focused task per tool — too many tools (or overlapping ones) degrade selection
    • Descriptions are the primary selection signal — include inputs, example queries, edge cases, and when to use this vs a similar tool
    • Structured errors — category (transient / validation / business / permission), a retryable flag, and a human-readable message
    • Scope tools per role and use project vs user config, with environment-variable expansion for secrets

    MCP server configuration.

    • Project-level (.mcp.json) for shared team tooling vs user-level (~/.claude.json) for personal/experimental servers
    • Environment-variable expansion (e.g., ${GITHUB_TOKEN}) keeps secrets out of committed config
    • Tools from all configured servers are discovered at connection time; prefer existing community servers over custom ones for standard integrations

    Built-in tools (Read, Write, Edit, Bash, Grep, Glob).

    • Grep = search file contents; Glob = find files by name/pattern; Read/Write = full-file ops; Edit = targeted change via a unique text match
    • When Edit can't find a unique anchor, fall back to Read + Write
    • Build understanding incrementally — Grep for entry points, then Read to follow imports — rather than reading everything upfront

    📖 Go deeper: Model Context Protocol spec and Claude Code documentation.

    Module 4 — Claude Code & CI/CD

    • CLAUDE.md hierarchy: user → project → directory, with @import and a rules directory for modular organization
    • Path-specific rules (glob patterns) for conventions that span directories (e.g., all **/*.test.tsx)
    • Custom slash commands and Skills (frontmatter like context: fork, allowed-tools, argument-hint); project-scoped (shared) vs user-scoped (personal)
    • Plan mode vs direct execution — plan mode for large, architectural, multi-file work; direct execution for small, well-scoped changes
    • CI/CD: run non-interactively with -p / --print; use --output-format json / --json-schema for machine-parseable findings; an independent review instance catches more than self-review

    Iterative refinement.

    • Concrete input/output examples beat prose descriptions when results are inconsistent
    • Test-driven iteration — write the tests first, then iterate by sharing failures
    • Interview pattern — have Claude ask clarifying questions before implementing in an unfamiliar domain
    • Fix interacting problems in one message; fix independent problems sequentially

    Commands & exploration.

    • /memory — inspect which memory / CLAUDE.md files are loaded (diagnose inconsistent behavior across sessions)
    • /compact — reduce context usage during long sessions
    • Explore subagent — isolate verbose discovery and return summaries, preserving the main context window

    📖 Go deeper: Claude Code documentation (CLAUDE.md, slash commands, Skills, plan mode, GitHub Actions).

    Module 5 — Context Management & Reliability

    • Long context: chunk, summarize, or retrieve; beware the "lost in the middle" effect and progressive-summarization loss of numbers/dates
    • Trim verbose tool output to relevant fields before it accumulates; keep a persistent "case facts" block
    • Escalation: honor explicit human-agent requests immediately; escalate on policy gaps or lack of progress; sentiment and self-reported confidence are poor complexity proxies
    • Error propagation: structured error context, local recovery first, distinguish access failures from valid empty results
    • Provenance: preserve claim-source mappings through synthesis; annotate conflicts and dates instead of silently picking a value

    Human review & confidence calibration.

    • Aggregate accuracy (e.g., "97% overall") can mask poor performance on specific document types or fields — analyze accuracy by segment
    • Use stratified random sampling of high-confidence outputs to catch novel error patterns
    • Have the model emit field-level confidence, calibrate thresholds on a labeled set, and route low-confidence or ambiguous cases to humans

    Large-codebase context.

    • Use scratchpad files to persist key findings across context boundaries (counteracts degradation in long sessions)
    • Delegate verbose exploration to subagents; summarize each phase before starting the next
    • For crash recovery, have agents export structured state (manifests) the coordinator reloads on resume; use /compact when context fills with discovery output

    📖 Go deeper: Long-context tips and context window management.


    4-Week Study Plan

    Plan for ~10–15 hours per week. Each week builds on the last.

    Week 1 — Architecture foundations

    • Read the Claude API docs on tool use and stop_reason
    • Build a small agentic loop that calls a tool a few times
    • Study hub-and-spoke and coordinator-subagent patterns; diagram a support system
    • Implement PreToolUse / PostToolUse hooks (log calls; block a forbidden call)

    Week 2 — Prompting & MCP

    • JSON Schema validation; make Claude follow a strict schema via tool use
    • Few-shot extraction + a validation-retry loop
    • Read the MCP spec; start a simple MCP server (tools, resources)
    • Practice designing tool boundaries (what's a tool vs overkill)

    Week 3 — Claude Code & context

    • Finish the MCP server with structured error handling; test with the Agent SDK
    • Build a CLAUDE.md hierarchy; add a path-scoped rule, a custom command, and a Skill
    • Integrate Claude Code into a CI step (run with -p, output JSON)
    • Practice long-context strategies; take a first full practice exam

    Week 4 — Practice & final prep

    • Work each scenario type end-to-end: design, list tradeoffs, code key parts
    • Take full-length timed practice exams; review every wrong answer
    • Drill your weakest domain; skim key concepts; rest before exam day

    Hands-On Exercises

    Reading isn't enough — these builds are the difference between passing and failing. Ideally build one integrated system that exercises all of them rather than eight disconnected demos.

    1. End-to-end agentic loop · Domain 1

    Implement a full loop with tool calling, correct stop_reason handling (tool_use / end_turn / max_tokens), tool results added back to context, and graceful handling when a tool fails. Done when: the loop handles all stop reasons, multi-turn works (5+ exchanges), and tool errors don't crash it.

    2. CLAUDE.md architectural rulebook · Domain 3

    Write a CLAUDE.md with a real hierarchy (repo / folder / file), naming conventions, tool-design rules, and 3+ custom slash commands.

    # Project Architecture & Rules
    
    ## Code Organization
    - Agents: `src/agents/` (one file per agent)
    - Tools: `src/tools/` (named `{service}_tools.py`)
    
    ## Tool Design Rules
    - Input: must have a JSON schema
    - Error: return structured error with code + message
    - Timeout: 30s max; retry with exponential backoff
    
    ## Commands
    - `/run-agents` - start all agents
    - `/test-tools` - validate tool execution

    3. MCP server from scratch · Domain 2/3

    Implement a server with tools, resources, and structured errors.

    from mcp.server import Server
    from mcp.types import Tool
    
    server = Server("my-database-mcp")
    
    @server.list_tools()
    async def list_tools():
        return [Tool(
            name="query_database",
            description="Run a read-only SQL query against the orders DB. "
                        "Input: a SELECT statement. Use for order/customer lookups; "
                        "not for writes.",
            inputSchema={
                "type": "object",
                "properties": {"query": {"type": "string"}},
                "required": ["query"],
            },
        )]
    
    @server.call_tool()
    async def call_tool(name: str, arguments: dict):
        try:
            return [{"type": "text", "text": execute_query(arguments["query"])}]
        except Exception as e:
            return [{"type": "text", "text": f"Error: {e}", "isError": True}]

    4. Structured output with validation-retry · Domain 4

    Define an extraction schema (required, optional, nullable, and an enum with an "other" + detail pattern). On validation failure, send a follow-up that includes the document, the failed output, and the specific error — and know when retry won't help (info simply absent).

    from pydantic import BaseModel, ValidationError
    
    class ReviewResult(BaseModel):
        overall_score: int
        issues: list[str]
        pass_fail: bool
    
    def review(doc: str, max_retries: int = 3):
        for attempt in range(max_retries):
            raw = call_claude_with_tool(doc)        # tool_use returns JSON
            try:
                return ReviewResult.model_validate(raw)
            except ValidationError as e:
                doc = f"{doc}\n\nPrevious output was invalid: {e}. Fix and re-emit."
        raise RuntimeError("Validation failed after retries")

    5. Hub-and-spoke multi-agent system · Domain 1

    A coordinator delegating to 3+ specialized subagents with isolated context and structured error propagation. Done when: subagents receive context explicitly, a failed subagent returns structured error context, and the coordinator proceeds with partial results.

    6. Claude Code in CI/CD · Domain 3

    Run Claude Code on pull requests and post results.

    name: Claude Code Review
    on: pull_request
    jobs:
      review:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Review PR
            run: |
              claude -p "Review this PR for security and correctness" \
                --output-format json > review.json
              python post_review.py review.json

    7. Data extraction with few-shot · Domain 4

    Extract structured data from messy documents using 2–4 few-shot examples that cover varied formats and edge cases (informal values, missing fields → null).

    8. Long-context document workflow · Domain 5

    Process a document that exceeds the window: chunk → summarize/retrieve relevant chunks → aggregate. Done when: it handles large inputs without losing key facts and mitigates the "lost in the middle" effect.

    Map exercises to the exam

    • Week 1: #1 + #5 (agentic loop + hub-and-spoke) — the heaviest domain
    • Week 2: #3 + #4 + #7 (MCP + structured output + extraction)
    • Week 3: #2 + #6 + #8 (Claude Code + CI/CD + context)
    • Week 4: review + practice exams

    Readiness checklist

    • Completed all 8 exercises
    • Can explain the agentic loop without looking at code
    • Built at least one hub-and-spoke system
    • Implemented an MCP server with structured errors
    • Enforced a JSON schema with a retry loop
    • Created a CLAUDE.md with custom commands
    • Can design an architecture for each scenario type
    • Scoring comfortably above the pass mark on timed practice exams

    Tips & Tricks

    • Master the agentic loop first. It underpins most of the exam — know it cold.
    • Build, don't just read. The exam rewards practical judgment; the 8 exercises are non-negotiable.
    • Think in tradeoffs. When hub-and-spoke vs sequential? When enforce programmatically vs prompt? When tool_choice: "any"?
    • Prefer the proportionate fix. Many answers favor the simplest root-cause fix (e.g., better tool descriptions) over heavy infrastructure (a new classifier/routing layer).
    • Programmatic enforcement beats prompts when compliance must be guaranteed (money, identity, safety).
    • JSON schema via tool use is the reliable path to structured output; nullable fields prevent fabrication.
    • Independent review beats self-review; split large reviews into per-file + integration passes.
    • Connect the domains — build one system that touches all five, not five silos.
    • Use -p for non-interactive Claude Code in pipelines.
    • Trust the process — finish the exercises and timed practice exams and you'll be ready.

    Common mistakes to avoid

    • Skipping the hands-on builds and relying on reading
    • Not taking timed full-length practice exams
    • Confusing sequential with hub-and-spoke orchestration
    • Overloading agents with too many tools / vague tool descriptions
    • Studying only Domain 1 and ignoring the other ~73%

    Resources

    Official Anthropic


    Final advice

    If you complete the hands-on exercises and can explain the tradeoffs behind each architectural choice — not just the definitions — you're in strong shape. Anchor on Domain 1, build something real that touches all five domains, and use timed practice exams to find where to study next.

    Good luck. 🎯

    Ask about this article

    Get answers grounded in this post. AI-generated — based on this article, and may be imperfect.

    Scaled AI Weekly

    Enjoyed this? Get more like it every Monday.

    Real architecture decisions, LLMOps patterns that survive production, and engineering leadership advice — from 12+ years of building at enterprise scale. Free. No spam. Unsubscribe anytime.

    Join engineers building production AI systems