Problem
Teams want agents that do work — query systems, draft from tools, trigger workflows — but most prototypes hide tool failures, lack RBAC, and cannot be debugged in production. The goal was an agent architecture that is composable, observable, and constrained.
My role
- Framed agent vs workflow vs plain RAG — when tool-calling is worth the complexity.
- Designed MCP tool boundaries (what the model can call, with what auth and side effects).
- Shaped ADK / Vertex Agent Engine deployment, eval hooks, and human-in-the-loop gates.
Architecture (shape)
- Orchestrator — Google ADK-style agent loop: plan → tool call → observe → respond.
- Tools via MCP — typed tools (search, tickets, docs, internal APIs) with least-privilege credentials.
- Runtime — Vertex Agent Engine / Cloud Run for scalable, inspectable execution.
- Guardrails — allow-lists, confirmation for write actions, PII/PHI redaction where needed.
- Observability — traces for every tool call, latency, and failure reason.
Approach
- Started with read-only tools; unlocked writes only after confirmation UX and audit logging.
- Kept prompts thin — quality came from tool contracts and retrieval, not megaprompts.
- Eval suite: task success, unsafe-action rate, and cost/latency budgets per session.
Trade-offs
- Fewer tools beat a kitchen-sink toolbox — narrower surface, clearer ownership.
- Human confirmation on mutating actions reduced autonomy demos but raised trust.
- MCP indirection added a layer, but made tools reusable across agents and clients.
Evaluation
- Task completion on a fixed scenario pack (search → synthesize → propose action).
- Tool-error recovery: does the agent retry, explain, or escalate cleanly?
- Cost and p95 latency under concurrent sessions on Cloud Run / Agent Engine.
Outcome
An agent platform pattern I apply for GenAI products that need real system access: MCP tools, ADK orchestration, Vertex runtime, and ops-grade traces — closer to software architecture than chatbot theater.
- Safety: mutating tools gated behind explicit confirmation + audit trail
- Operability: end-to-end traces for prompt → tool → response debugging
- Reuse: MCP tools shared across agents instead of one-off function glue