Agentic AI Patterns

Course Content

Agentic AI Patterns

9 sections · 50 lessons

What is tool augmentation in Agentic AI, and how does it expand agent capabilities?


How an MCP host reaches a toolHost — the agent app and its modelClient — one per connected serverTransport — stdio or streamable HTTPServer — tools, resources, prompts
MCP standardises the plumbing between agents and systems; permissions and trusted servers are still your job.

What you need to know

The four axes

AxisWithout toolsWith tools
FreshnessKnows only training dataReads today's price, stock, ticket status
PrecisionEstimates arithmetic, guesses factsRuns SQL, a calculator, a pricing engine
ReachKnows nothing about your companyReads your CRM, claims system, wiki
EffectCan only produce textBooks, refunds, files tickets, sends messages

Good tool design

  • Narrow and typed. get_policy(policy_id) beats query_database(sql). Narrow tools are safer and easier for the model to choose.
  • Clear descriptions. The model reads the description to decide when to call the tool. Say when to use it and when not to.
  • Enums over free text. status: "open" | "closed" prevents invented values.
  • Shaped results. Return the fields the decision needs, IDs for the rest, and a size cap. Raw tool output is usually the biggest consumer of context.
  • Honest failures. An empty result and a failed call must look different, or the model will report "no records found" when the API was down.

Tool count and selection

Models choose tools well from a small set. When tools overlap ("search_orders", "find_order", "lookup_order_status") or number in the dozens, wrong choices climb. Fixes: merge overlapping tools, split tools across sub-agents, or search a tool catalogue and load only the relevant definitions for each request.

MCP in one paragraph

MCP solves the "N agents times M systems" integration problem. Write a Jira MCP server once and any compatible host can use it. It does not make tools safe by itself: you still need permissions, trusted servers and review of tool descriptions.

A real-life example

A health insurer's claims agent started with no tools. It could explain policy wording in general, but it could not answer "is my claim approved?" and it made up plausible statuses.

The team added four tools:

  • get_claim(claim_id) returns status, amounts and missing documents, trimmed to 12 fields instead of the 140-field raw record.
  • get_policy_clause(policy_id, topic) returns the exact clause text with its number.
  • calculate_payable(claim_id) calls the real deduction engine; the model never does the co-pay arithmetic.
  • request_document(claim_id, doc_type) with doc_type as an enum of 6 values.

Invented statuses dropped to near zero because the agent now had a real answer to read. One early bug: get_claim returned {} when the claims API timed out, and the agent told customers "no claim found". The fix was to return {"error": "claims system unavailable, try again"} instead.

Follow-up questions to expect

  • "MCP versus plain function calling?" — Function calling is how a model asks for a tool. MCP is how tools are packaged, discovered and connected from separate servers. An MCP host turns MCP tools into ordinary function definitions for the model.
  • "How do you stop a tool from flooding the context?" — Cap result size, paginate, return summaries plus IDs, and let the agent fetch details on request.
  • "How do you know which tool is broken?" — Track call volume, error rate, latency and retry rate per tool. The broken tool shows up in metrics faster than in transcripts.