HomeGuidesAgentic AIAI Agent Development — Tool Use & Building Agents (NCP-AAI 15%)

Know if you're actually ready. Take the Agentic AI quiz → get your AI readiness report.

Take the free test →
🤖 Agentic AI

Agent Development: NCP-AAI Domain 2 (15%)

Agent Development is the other 15% domain — the hands-on craft of building agents. Here's what the NCP-AAI exam expects on tool use, prompting, structured output, and robust agent loops.

Examifyr·2026·8 min read

What this domain covers

Where Architecture is about the blueprint, Agent Development is about actually building the agent: defining tools, prompting the model to use them, parsing structured outputs, handling errors, and wiring the loop together. At 15% it is tied for the largest domain.

Tool use / function calling

Tools are how an agent acts on the world — search, code execution, database queries, API calls. You define each tool with a name, a description, and a typed parameter schema; the model chooses which to call and supplies arguments, your runtime executes it, and the result returns to the model. Clear, unambiguous tool descriptions are the single biggest lever on whether an agent calls the right tool.

# A tool definition is a name + description + typed schema
{
  "name": "get_weather",
  "description": "Get current weather for a city. Use when the user asks about weather.",
  "parameters": {
    "type": "object",
    "properties": { "city": { "type": "string" } },
    "required": ["city"]
  }
}
Note: The model selects tools from their descriptions, so vague descriptions cause wrong tool calls. Treat tool descriptions as prompt engineering, not documentation.

Structured output and validation

Agents need machine-parseable output to drive the next step. Use JSON schemas / structured output modes rather than parsing free text, and always validate before acting on the result. Never trust that the model returned well-formed data — validate, and on failure, re-prompt with the error.

result = llm.call(tools=[...], response_format=schema)
try:
    data = validate(result, schema)   # parse + check
except ValidationError as e:
    result = llm.retry(error=e)       # feed the error back

Error handling and resilience

Real tools fail — timeouts, rate limits, bad arguments. A well-built agent catches the failure, feeds a useful error message back to the model, and lets it adapt (retry, pick a different tool, or ask for clarification). It also bounds retries so a failing tool cannot spin the loop forever.

Note: Returning the raw error text to the model usually works better than failing silently — the model can often correct a bad argument if it sees what went wrong.

Frameworks vs building from scratch

Agent frameworks handle the loop, tool dispatch, and memory plumbing so you can focus on tools and prompts; building from scratch gives full control and easier debugging. The exam expects you to understand what these frameworks do under the hood — the loop, tool schemas, and message history — regardless of which one you use.

Exam tip

Tool descriptions are prompt engineering. If an exam scenario describes an agent calling the wrong tool or skipping a tool, the fix is almost always clearer tool names/descriptions or schemas — not a bigger model.

Further reading

🎯

Think you're ready? Prove it.

Take the free Agentic AI readiness test. Get a score, topic breakdown, and your exact weak areas.

Take the free Agentic AI test →

Free · No sign-up · Instant results

← Previous
AI Agent Architecture & Design — NCP-AAI Domain Guide (15%)
Next →
Evaluating AI Agents — Metrics & Tuning (NCP-AAI Domain, 13%)
← All Agentic AI guides