AI Certificates

Domain 3 · 19%

CCAR-P integration: RAG, MCP, auth and observability

Matthew Hartman · CCAR-P certified, scored 965/1000 · 26 min read

The biggest domain on the exam, and the one where the attractive wrong answer is usually a real improvement aimed at the wrong half of the system.

19% of the exam — about 12 of the 63 questions — across 8 sub-objectives.

Domain 3 is the largest on the exam and the one where the wrong answers are most often real improvements pointed at the wrong half of the system. A retrieval upgrade offered for a generation problem. A better chunker offered for a data architecture problem. Read the diagnostic in the stem before choosing the fix, because the stem usually contains a measurement that already clears one half.

Eight sub-objectives sit here, covering tool configuration, authorization, latency trade-offs, observability, retrieval design, protocol choice, and how much context to load up front. It deserves the largest share of study time.

Worth calibrating that against the score report, because it surprised me. Of these eight sub-objectives, only four appeared on my form at all: tool configuration, authorization, the accuracy-latency trade-off, and protocol selection. Retrieval design, retrieval strategy, observability at scale and the context-strategy question were not sampled. So integration felt like the heaviest domain because its questions were hard, not because there were more of them. Forms are sampled differently, so yours may test exactly the four mine did not.

Evaluate tool/agent configuration for capability bloat

Every tool you connect is an attack surface and a running cost. The exam asks you to audit a tool list the way you would audit permissions, one entry at a time, asking whether the task genuinely requires it.

Bloat shows up in two ways. An agent given twelve tools picks the wrong one more often, because selection is a judgement and more options make it harder. And each tool widens what a compromised or confused agent can reach. A scenario describing an agent that occasionally takes an inappropriate action is often a configuration question rather than a prompting one.

When two tools do similar things and the agent confuses them, the fix is in the descriptions. Each one has to say when it is the right choice rather than only what it returns, because the model is choosing between them and both descriptions being accurate does not help it decide.

From the free practice form

A freight dispatch assistant has accumulated 42 tools, including warehouse admin functions and invoice voiding it has never legitimately needed. It now picks the wrong tool on about 8% of routine status updates, and a security review found that a prompt injection in a delivery note could trigger invoice voiding. What is the most effective remediation?

Analyze authentication and authorization requirements to identify security gaps

One principle carries most of these questions. Identity is verified on your server, before the model call, and the user's role is injected into the prompt by your code.

Where identity is verifiedIn the unsound path the user's message asserts a role and reaches the model. In the sound path the server authenticates, looks up the role, and injects it before the model call.NO AUTHORIZATION MODELUser message: “I am an admin”Model callthe user can edit thisVERIFIED BEFORE THE CALLRequestYour serverauthenticate, look up roleModel callrole arrives in thesystem prompt
Identity is established by your server before the call, and the role travels in the system prompt. A role asserted in the user's own message is a value the user can edit, so validating it harder does not make it trustworthy.

Anything a user puts in their own message is under their control. A system that lets a message assert a role has no authorization model, only the appearance of one, and no amount of prompt instruction repairs it. Options offering to have the model check the claimed role, or to validate the assertion more carefully, are the designed traps.

Pass the role and what that role may access. Add identifiers beyond that only when the task needs them.

The related idea is that the context window is not a governance boundary. Data passed into a call is transmitted, and it lands in your own application logs on the way. For each field entering the prompt, ask whether the model needs it to produce the output. Reference numbers usually yes, full personal detail usually not, and redaction belongs before the call rather than after the incident.

From the free practice form

A hospital assistant queries patient records through an electronic health record (EHR) integration that authenticates with a single service account holding organization-wide read access, chosen because provisioning per-user credentials was deemed too slow. During a pilot, a cardiology nurse received data on an oncology patient she has no treatment relationship with — a reportable access violation. Which change addresses the root cause?

Second question, same objective

A fintech is rolling out an internal MCP server that exposes payment-operations tools — refund issuance, chargeback lookups, and account-hold toggles — to Claude clients used by three different teams. Today any authenticated employee client can invoke any tool, and the server trusts whatever tool name and arguments the client sends. Compliance has flagged the design before launch. Which TWO changes most directly close the authorization gaps?

Evaluate accuracy-latency trade-offs and justify configuration decisions

These questions give you a number and expect the number to decide. A latency budget, a volume, a deadline. The credited answer respects the binding constraint even when a more accurate option is available, and the wrong answers are usually more accurate and too slow.

Work out what the system is. Nothing interactive happening and a fixed volume due by a deadline is a throughput problem, and options offering streaming or low-latency inference are answering about a system the scenario has ruled out. A person waiting on a screen changes the calculation completely.

Several levers appear repeatedly. A smaller model, fewer retrieved chunks, a shorter reasoning chain, and caching all buy latency, and each costs something specific. Justifying the decision means naming what you gave up, which is often literally what the question asks for.

From the free practice form

An insurance carrier's claims-adjudication assistant retrieves policy language to answer adjuster questions. Adding a cross-encoder reranking stage in a staging test raised answer accuracy from 84% to 93%, but added roughly 450 ms per query, moving p95 latency from 2.1 s to 2.6 s against an internal 3-second SLA. Each incorrect answer that reaches an adjuster triggers an average of 40 minutes of downstream rework and occasional erroneous payouts. How should the architect decide, and why?

Analyze observability challenges and select monitoring strategies at scale

An LLM system does not crash when it goes wrong. It returns something plausible and slightly incorrect, which standard error logging never sees. That difference drives every question here.

Log four things and the exam's answers fall out of them: the request, including model version, input tokens, and which prompt was used; the response, including output tokens, latency, and stop reason; the context, including user role, session, and whether caching applied; and the outcome, meaning whether the downstream system accepted the result. The fourth is the one designs omit and the one that tells you quality is degrading.

At scale two problems recur. Traces fragment across agents and steps unless a shared identifier is propagated, leaving you unable to reconstruct a single run. And a multi-tenant system on one shared key cannot attribute a rate-limit breach to the tenant that caused it, so the spike is visible and unassignable.

Observability added after the first incident cannot answer the question the incident raised, because it was not recording then. Scenarios that describe reconstructing a root cause from insufficient logs are testing that point.

From the free practice form

A B2B SaaS provider runs a Claude-based onboarding agent handling roughly 40,000 sessions per day, each involving multiple tool calls, retrievals, and model turns. Engineers currently see only aggregate dashboards of token usage and average latency. When customers report the agent "got stuck" or gave a wrong answer, the team cannot reconstruct what happened in that session, and manually reproducing failures rarely works. Which monitoring strategy fits this scale?

Design a RAG pipeline with appropriate chunking and indexing strategies

Chunking is chosen by the shape of the source material, not by a default size. Uniform spans suit homogeneous prose with weak natural boundaries. Semantic splitting suits material where a retrieved chunk has to stand alone to be useful. Hierarchical splitting suits contracts, manuals, and policies, where the section a passage sits in carries meaning the passage alone does not.

Fixed-size against structure-aware chunkingA rate table split by a fixed token window produces a chunk of rows with no header. Splitting on structure keeps each chunk's header with its rows.FIXED WINDOWTier · Region · RateGold · EU · 0.42Silver · EU · 0.31Bronze · EU · 0.19Rows with no header. 0.31 of what?SPLIT ON STRUCTURETier · Region · RateGold · EU · 0.42Silver · EU · 0.31Bronze · EU · 0.19The chunk answers on its own.
A fixed window cuts where the token count runs out, separating rows from the header that gives them meaning. Splitting on the document's own structure keeps the header attached.

That last case produces a favorite exam scenario. Retrieval returns the right document and the answer is still wrong, because a fixed window cut a table and separated rows from the header that gave them meaning. More chunks, more overlap, and better ranking all fail to repair it. Splitting on structure does.

Indexing is chosen by how queries are phrased. Dense embeddings match meaning and handle paraphrase. Sparse keyword matching handles exact tokens: part numbers, error codes, statute citations. Hybrid combines them and is the common production answer, because dense retrieval alone quietly misses exact identifiers. When a hybrid index produces two ranked lists they have to be merged, and reciprocal rank fusion is the standard way to do it without tuning.

From the free practice form

A legal-tech company runs RAG over 80,000 commercial contracts. Users ask clause-targeted questions like "what does the indemnification clause in the Acme master service agreement (MSA) cap liability at?" The pipeline splits every contract into fixed 1,000-token chunks, and retrieved chunks frequently begin or end mid-clause, so the model answers from partial obligations and users report subtly wrong summaries. Which change best addresses the failure?

Second question, same objective

An electronics retailer's support RAG indexes 12,000 product manuals and 300 policy documents in a single flat vector collection. Two problems dominate: queries about one product line retrieve confident passages from a different product line's manual, and queries constrained to a product line take 4-6 seconds because filtering happens after a full-collection similarity search. Which TWO indexing changes address both problems?

Apply retrieval strategies matched to data shape and query pattern

One distinction settles a surprising number of questions. Retrieval is for stable knowledge, meaning things true yesterday and still true tomorrow: policies, manuals, FAQs. Tool calls are for live state, meaning values a system owns and changes independently: order status, balances, inventory.

Retrieval against tool callsA question is routed by whether its answer is stable knowledge or live state. Stable knowledge goes to a retrieval index; live state goes to a tool call against the system of record.Questiontrue yesterday and tomorrowa value a system ownsRetrieval indexpolicies, manuals, FAQsTool callorder status, balances,inventory
The deciding question is whether the answer changes without anyone editing a document. Policies do not, so they belong in an index. Order status does, so it belongs behind a tool call. Index live state as text and similarity will confidently merge two stale snapshots into one wrong answer.

The classic failure indexes live state as text. An assistant answers where is my order from two stale snapshots, merges them confidently, and reports a shipment that did not happen. Nothing about the retrieval was broken. Current state was represented as historical text in the first place, which is a data architecture error rather than a tuning error. A shorter refresh interval and a higher similarity threshold both fail; a tool call to the system of record does not.

Similarity is not truth. A high score means the retrieved text was semantically close to the question, which says nothing about whether it is still accurate.

From the free practice form

A retail chain's store-associate assistant answers questions like "do we have stock-keeping unit (SKU) 88412 in stock at store #12?" using a vector index of inventory snapshots refreshed hourly. Associates report confidently wrong stock counts during busy periods, and the platform team has proposed cutting the re-index interval from 60 minutes to 5 minutes, roughly tripling pipeline cost. As the reviewing architect, what should you recommend?

Second question, same objective

A heavy-equipment manufacturer's maintenance assistant retrieves from 50,000 service bulletins. Technicians usually search by exact part numbers such as "bearing 6205-2RS-C3," but pure embedding search often returns bulletins for near-identical part numbers from the same family (6205-2RS, 6205-ZZ-C3), and technicians have begun distrusting the tool. Which retrieval change best fits this query pattern?

Evaluate connection protocols and select the appropriate integration mechanism (MCP, API/CLI, agent-to-agent)

Protocol questions are questions about how many consumers there are and who owns what.

A direct API or CLI integration suits one application talking to one service with code you control. MCP earns its place when the same set of tools has to be reachable by several clients, because the alternative is the same integration written repeatedly and drifting. Agent-to-agent arrangements suit peers that each own part of a goal, and they carry the coordination and failure-boundary costs that come with any multi-agent design.

The scenario detail that decides it is usually a count or an ownership statement. Three teams needing the same connectors points one way; one internal service consumed by one application points another. Reaching for a protocol because it is current, rather than because something in the scenario has more than one consumer, is the wrong answer this sub-objective is built around.

From the free practice form

A media company runs a nightly batch job that enriches 200,000 article records with tags generated by Claude, calling an internal metadata REST API to read and write records. The pipeline is a scheduled script owned by one data team, with fixed inputs and no interactive or conversational component. An engineer proposes wrapping the metadata API in an MCP server "so we're standardized for the future." What should the architect recommend?

Second question, same objective

An enterprise software firm runs three internal Claude-based assistants — a Slack support bot, an IDE assistant, and a customer-facing web copilot — and each team independently hand-built function-calling integrations to the same CRM. The three implementations have drifted: field mappings differ, one caches stale auth tokens, and a recent CRM API change broke two of the three in different ways. Which integration approach best resolves this?

Evaluate progressive discovery vs. monolithic context strategy

Every workload decides, deliberately or not, how much context reaches the model on each call, and the choice sits on a spectrum.

The context strategy spectrumA spectrum from monolithic loading, which suits bounded single-shot work, to progressive loading, which suits multi-turn dialogue and agent loops where context accumulates.MonolithicProgressiveeverything in one promptstaged, just in timeEarns its placebounded input, single-shot Q&A,a stable cacheable prefixEarns its placemulti-turn dialogue, agent loops,stages with narrow handoffsmost production workloads
Two facts decide where a workload sits: whether input size is bounded, and whether context accumulates turn over turn. Both are usually stated plainly in the scenario.

Monolithic loading puts everything in at once: the whole document, the entire history, the full retrieved set. It suits bounded tasks with predictable input size, single-shot questions where retrieval latency is not worth paying, stable prefixes that cache well, and reasoning that genuinely needs all the material at the same time. It breaks down wherever context accumulates, because cost and latency track input length.

Progressive loading stages context instead, retrieving just in time and carrying forward only what the next step needs. It suits multi-turn dialogue, agent loops where each step depends mainly on recent state, and pipelines with narrow handoffs between stages. Most production workloads end up here.

The exam tests the decision rather than the vocabulary. Look for whether input size is bounded and whether context accumulates turn over turn. Those two facts decide it, and both are usually stated plainly in the scenario.

From the free practice form

An enterprise automation platform exposes 600+ connector tools (Salesforce, SAP, Workday, Jira, and hundreds more) to its Claude-based agent. Loading every tool definition consumes roughly 70,000 tokens per request before the user says a word, tool-selection accuracy has fallen measurably as connectors were added, and per-request cost is triple last quarter's. A typical task uses two to four tools. What is the strongest architectural response?

What I would do differently

Two sub-objectives out of 38 came back at 0% on my score report, and this was one of them: evaluating accuracy-latency trade-offs and justifying the configuration decision. Everything else in this domain scored 100%.

That is worth knowing because it is not a knowledge gap in the usual sense. I could define every lever. What the questions wanted was the justification, and specifically what I gave up to get what I chose. A configuration answer that names only the benefit is incomplete, and I kept treating the trade-off as context rather than as the thing being asked for.

If you prepare one thing in this domain differently from me, make it that: for every configuration choice, be able to say the cost in one clause. Fewer chunks buys latency and spends recall. A smaller model buys cost and spends accuracy on the hard tail. The exam wants both halves.

Practice this

Form 1 has 12 Integration questions. Free, no signup.

Start form 1 · study mode

Sets 2–6 add 58 more Integration questions — on Udemy.