Building Domain-Specific Tools -- Giving Agents Real Capabilities
How to build production-quality agent tools that query databases, validate business rules, and automatically scope data to the current user.
Read article
Solutions Architect specializing in Azure, AI, and enterprise cloud-native development. Writing about architecture, AI agents, and building things that scale.
How to build production-quality agent tools that query databases, validate business rules, and automatically scope data to the current user.
Read article

How to build an orchestrator that routes requests to specialist agents, and the A2A protocol that makes agent-to-agent communication standardized, secure, and framework-independent.

How to instrument multi-agent systems with OpenTelemetry -- auto-instrumented traces across agents, LLM calls, and database queries, visualized in .NET Aspire Dashboard.

Transform agent text responses into interactive product cards and order cards, then add token-by-token streaming via SSE so the UI feels instant -- all without changing the backend agents.
Read article
JWT authentication, role-based access control, user-scoped data isolation for a multi-agent system, then Docker Compose architecture with a one-command startup for all 11 services.

Give your agents persistent memory -- store user preferences, recall past interactions, and personalize responses across conversations.

Build a repeatable evaluation pipeline for multi-agent correctness -- golden datasets, automated scoring, and CI/CD integration.

Replace hand-coded tools with Model Context Protocol servers -- standardized tool discovery and execution for any agent framework.

Move from LLM-driven routing to deterministic graph-based workflows -- sequential pipelines, parallel execution, conditional branching, and state management.

Serialize an AgentSession to JSON, persist it, reload in a fresh process, and have the agent pick up exactly where it left off.

Stream tokens as they arrive and reuse a session across turns so the LLM sees the full conversation. ~60 lines of code per language.

Give an agent a callable function, let the LLM decide when to use it, and compare Python and .NET tool loops side by side.