When to use what
Agentic AI is a stack, not a menu
RAG, agents, MCP, and A2A are layers. Skills and rules shape behavior. Most teams need fewer layers than the pitch deck suggests; add autonomy only when the task actually branches.
RAGKnowledge — ground answers in your docsAGENTControl loop — plan, act, observe, stopMCPTools — standard reach into systemsA2APeers — agents coordinating across boundariesProblem → use → example
| If the real problem is… | Use | Example case |
|---|---|---|
| Answers ignore our docs, go stale, or invent policy | RAG | Internal policy bot cites the latest refund SOP; use GraphRAG when the question is about how entities link |
| Need live reads or writes against systems — not a stale index | MCP | Stock check hits ERP now; same agent opens a Jira bug with logs after a failed deploy |
| Only 1–2 APIs inside one app; no reuse yet | Direct tools | One Flask service calling Stripe + SendGrid; move to MCP when those same tools must serve multiple apps |
| Fixed path with a model in one or two slots | Workflow | Invoice PDF → extract fields → validate → post to ledger; model fills gaps, code owns order |
| Multi-step work that branches, retries, and must stop cleanly | Agent | Month-end expense pack: pull receipts, match policy via RAG, flag outliers, wait for Approve |
| Same standing orders across chats | Rules | “Never push main; always cite sources; Finnish UI copy stays formal” in every session |
| Named playbook with steps and a verify gate | Skill | “Author a Power BI page” skill: open model, place visuals, validate PBIR, screenshot check |
| Money, prod, or irreversible writes in the path | Human gate | Refund > €50 pauses for Approve; step and spend caps stop a runaway loop |
| Tone/format still wrong after prompts + RAG | Fine-tune | Bank chat must stick to a fixed compliance template; keep changing facts in retrieval, not weights |
| Specialist agents owned by different teams or vendors | A2A | Support agent hands a refund packet to Finance-ops across two tenants; each agent keeps its own MCP tools |
| Don’t know if the system still works after a change | Evals | 20 golden tickets; block ship if pass rate drops; inspect the tool path when a case fails |
Default build order: RAG → one agent with tools/MCP → stateful workflow + human gate → multi-agent inside one framework → A2A only when ownership boundaries are real.
Framework picker
LangGraphStateful, auditable, HITL, durable checkpoints
CrewAIFastest role-based prototype
LlamaIndexRAG / data-first agents
MS Agent FwAzure / .NET enterprise path
Pydantic AISchema-first typed Python
Rules vs skills
Rules · standing orders
Always on or path-scoped. Safety, voice, repo law. Keep short. Cursor:
.cursor/rules, AGENTS.md.
Skills · runbooks
Load when the task matches. Multi-step + verify. Cursor:
SKILL.md. Don’t wrap one API call as a skill.
Memory check
Rules = standing orders. Skills = runbooks. MCP = hands. RAG = library.
Ladder + gates
- Prompted chat
- RAG assistant with citations
- Single agent + tools / MCP
- Stateful workflow + human Approve
- Multi-agent inside one framework
- Cross-org A2A (earn this)
Kill switch
Max steps, max €/tokens, tool allowlist. If you can’t stop it, you don’t ship it.
Anti-patterns
- Agent for pure Q&A (start with RAG)
- Treating MCP and RAG as either/or
- Fine-tuning for facts that change weekly
- Premature multi-agent / A2A swarms
- Calling a fixed pipeline an “agent”
- Unbounded autonomy where money or prod moves
- Tools without schemas, budgets, or kill switches
- Always-on rules that belong in a skill