Field card · Agentic systems
alextouvras.com
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 docs
AGENTControl loop — plan, act, observe, stop
MCPTools — standard reach into systems
A2APeers — agents coordinating across boundaries

Problem → 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
OpenAI / Claude SDKsHandoffs or Anthropic-native loops
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

  1. Prompted chat
  2. RAG assistant with citations
  3. Single agent + tools / MCP
  4. Stateful workflow + human Approve
  5. Multi-agent inside one framework
  6. 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