MCP (Model Context Protocol)
USEDStandard protocol connecting models to tools, resources, and data sources.
- need it when
- You're building agents that need to interoperate with a growing ecosystem of tool servers.
- skip it
- Single-app tool calling — plain function calling is simpler.
MCP Supply-Chain Security
Tool descriptions are attacker-controlled input — they can steer an agent, leak context, or trigger unintended actions.
- need it when
- You run agents that connect to third-party MCP servers. Pin the trust boundary: allow-list servers, validate descriptions, treat every tool call as an input-validation gate.
- skip it
- You only call first-party tools you wrote yourself behind a stable interface.
Temporal
Durable workflow execution: code that survives crashes, retries, and multi-day processes.
- need it when
- Long-running agent pipelines, billing flows, or anything where 'the process died mid-way' is unacceptable.
- skip it
- Short-lived request/response work — a queue is enough.
Firecracker / gVisor
Run untrusted agent-generated code in hardened microVMs or sandboxes.
- need it when
- Agents that execute code. Non-negotiable isolation layer before anything else.
- skip it
- Never for agent code execution — if you're skipping this, you're skipping safety.
E2B
Managed sandboxes for running AI-generated code with SDK access.
- need it when
- You need agent code execution now and don't want to operate Firecracker yourself.
- skip it
- High-volume execution where per-second sandbox billing dominates costs — self-host.
pgvector
Vector similarity search inside PostgreSQL — embeddings without new infrastructure.
- need it when
- RAG under ~10M vectors where you want one database for everything.
- skip it
- Billion-scale retrieval or heavy ANN tuning — dedicated vector DBs pull ahead.
Qdrant
Purpose-built vector database with filtering, quantization, and distributed sharding.
- need it when
- Large-scale semantic search or hybrid filtering over embeddings at production volume.
- skip it
- Small RAG apps — pgvector in your existing Postgres is the right boring answer.
Celery / BullMQ
Background job queues for work that shouldn't block a request.
- need it when
- Email, embedding generation, webhooks, scheduled tasks — anything async.
- skip it
- Durable multi-step workflows — upgrade to Temporal before you outgrow queues painfully.