Orchestrating a multi-agent solution with the Microsoft Agent Framework

Orchestrating a multi-agent solution with the Microsoft Agent Framework

The World Cup is over, and despite England losing in the semi-finals, there were plenty of successful hatewatches to be enjoyed (Thank you Belgium and Spain for your service). If you’re sad that it’s all over, the Premier League is just over 1 month away. Last season, my team Arsenal finally won the title after a 22-year drought. Arguably, we should have won the EFL Cup and the Champions League. But as any Arsenal fan will tell you, we do have a tenancy to lead by a goal, and just kill the game until the final whistle. Our defence is probably the best in the world (Our biggest defeat last season was a 2-0 loss to Man City), but our attacking could, and should be much better. ...

July 21, 2026 · 27 min · Will Velida
A simple guide for installing and running Dev Containers on Podman

Running Dev Containers with Podman and VS Code

I returned from my honeymoon this week and while I was hoping for a quiet week to get over the jetlag, I found myself in the deep end of getting a legacy application that I had ported from .NET Framework 4.8.2 (they’re still out there) to .NET 8 and getting it to run in a Dev Container for a client that my team is currently working with. In order to avoid paying for Docker licences, companies like my client have turned to alternatives like Podman to develop on containers. ...

June 19, 2026 · 9 min · Will Velida
Multi-agent architecture: Chat.Api with Microsoft Agent Framework, Reporting.Api with GitHub Copilot SDK, connected via Entra Agent Identity.

Building a Multi-Agent System in .NET using the Microsoft Agent Framework, GitHub Copilot SDK, and Entra Agent ID

My side project (Biotrackr) started as a Fitbit data tracker and has gradually evolved into a full multi-agent system. Currently, it tracks my health data from Fitbit including sleep patterns, activity levels, food intake, and weight. I’ve recently built a chat agent that allows me to ask questions about my health data through the UI. However, I wanted to take this a step further and use another agent to build charts and graphs to visualize my data. ...

April 8, 2026 · 13 min · Will Velida
Preventing OWASP MCP01 Token Mismanagement and Secret Exposure in a .NET MCP server with Key Vault, telemetry redaction, and runtime injection.

Preventing Token Mismanagement and Secret Exposure in MCP Servers

When building an MCP server for my side project (Biotrackr), one of the first things I had to think about was how to manage secrets. The MCP server needs an APIM subscription key to call downstream health data APIs, and it also exposes an API key for clients connecting to it. That’s two secrets that need to be stored, distributed, and protected and if either one leaks, the blast radius could extend across the entire platform. ...

March 23, 2026 · 12 min · Will Velida
Migrating a .NET AI agent from function tools to MCP client integration, showing the architectural shift from duplicated HTTP tool classes to a single MCP Server.

From Function Tools to MCP: Migrating an AI Agent to the Model Context Protocol

When I first built an AI Agent for my personal health platform Biotrackr, I used the Microsoft Agent Framework’s function tool pattern with 12 tools decorated with [Description] attributes, registered via AIFunctionFactory.Create(). This wasn’t ideal as I already had an MCP Server exposing the same 12 tools to VS Code and other MCP clients. The natural approach would have been to make the Chat API another MCP client. But there was a blocker. The Anthropic provider in Microsoft Agent Framework (Microsoft.Agents.AI.Anthropic) didn’t support Local MCP Tools. If I wanted to use Claude as the LLM backend (which I did), function tools were the only option. So I duplicated all 12 tool implementations in the Chat API, complete with their own models, validation logic, and API call code. ...

March 22, 2026 · 16 min · Will Velida