Study guides / CCDV-F

Quick reference

One condensed cheat-sheet per domain - the tables and rules worth re-reading right before the exam.

Tool Description: Weak vs. Strong

Test: does the description give the model a trigger condition (when to call) and a boundary (when not to), or just a summary of what the tool does?

Weak PatternStrong PatternWhy It Matters
"Handles order-related queries" (on two different tools)"Looks up order status by ID. Call when the user asks about an order they already placed. Do not use to create new orders."Identical/overlapping descriptions give the model no way to discriminate
"Get current weather for a location""Call this when the user asks about current conditions or the forecast for a specific place"Trigger conditions matter more on newer, more tool-conservative models
Positive description onlyPositive description + explicit negative case ("do not use for X")Naming what a tool is *not* for often prevents miscalls better than more positive detail
One do-everything tool with a mode/action enumSeveral tightly-scoped tools (search_orders, create_order, cancel_order)Less inference work for the model = fewer selection errors

input_schema and strict Cheat Sheet

Field / SettingWhere It LivesEffect
type: "object", properties, requiredInside input_schemaStandard JSON Schema shape every tool's input follows
Format guidance in a field's own descriptionInside properties.<field>Removes ambiguity (e.g. "ISO 8601, e.g. 2026-08-28") vs. a bare string type
enumInside properties.<field>Narrows what the model can *generate*, not just documents a constraint - use whenever values are a fixed small set
strict: trueTop-level, sibling of name/description/input_schema (NOT a tool_choice setting)Guarantees tool_use.input validates exactly - requires additionalProperties: false + accurate required

MCP Primitives at a Glance

PrimitiveShapeHow It's RetrievedRequired?
ToolsName + description + JSON Schema input (same shape as a regular tool)Invoked with arguments; returns a tool_use/tool_result round tripThe one most exam scenarios focus on
ResourcesReadable data (file, DB record, document) identified by a URIRead directly into context via a conversion helper - no tool callOptional
PromptsReusable, parameterized prompt templatesFetched and filled in by the clientOptional

A server is not required to expose all three - a minimal server may offer tools only. Watch for: expecting a resource read to appear as a tool_use block; it doesn't.

Local MCP Server vs. Remote MCP Connector

Local MCP ServerRemote MCP Connector
Transportstdio subprocess, same machineHTTP, server-side (Anthropic infra makes the connection)
Typical clientClaude Code / Claude DesktopMessages API
WiringSDK conversion helpers (anthropic.lib.tools.mcp) into the Tool Runnermcp_servers param + a tools entry of type mcp_toolset referencing it by name
Beta headerNone neededmcp-client-2025-11-20
Common validation error-Passing mcp_servers without a matching mcp_toolset entry (or naming a server it doesn't reference)

tool_choice Modes

ModeEffectTypical Use
{"type": "auto"}Claude decides whether and which tool to call (default when omitted)Ordinary agent turns - the correct default
{"type": "any"}Some tool call is required; model picks whichA routing step that must hand off to exactly one specialist tool
{"type": "tool", "name": "..."}Forces one specific named toole.g. force ask_clarifying_question after an ambiguous turn
{"type": "none"}Suppresses tool calls entirely for that turnFinal summarization turn - clean text answer, no risk of another call

Modifier on any mode: disable_parallel_tool_use: true caps the response to at most one tool call. Trap: defaulting to any "just to be safe" instead of auto - it forces unnecessary or premature tool calls; reserve any/forced-tool for genuinely mandatory situations.

Error Category → Model Recovery Action

Error CategoryMeaningCorrect Model Follow-UpAuto-Retry?
invalid_inputMalformed order ID, date outside valid rangeAsk the user for corrected inputNo - same input, same result
not_foundRecord legitimately doesn't existTell the user it doesn't exist; don't imply a system faultNo
permission_deniedCaller lacks accessExplain the limitationNo - retrying with different params won't help
transient_failureTimeout, rate limit, temporary outageBrief retry with explanation is fineYes - the one category where retry can succeed