{"id":403,"date":"2026-04-04T20:43:02","date_gmt":"2026-04-04T19:43:02","guid":{"rendered":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/"},"modified":"2026-04-04T20:43:07","modified_gmt":"2026-04-04T19:43:07","slug":"agent-middleware-in-microsoft-agent-framework-1-0","status":"publish","type":"post","link":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/","title":{"rendered":"Agent Middleware in Microsoft Agent Framework 1.0"},"content":{"rendered":"<div class=\"anp-pro-entry\">\n<p class=\"anp-pro-lead\">The topic <strong>Agent Middleware in Microsoft Agent Framework 1.0<\/strong> is currently the subject of lively discussion \u2014 readers and analysts are keeping a close eye on developments.<\/p>\n<p class=\"anp-pro-p\">This is taking place in a dynamic environment: companies\u2019 decisions and competitors\u2019 reactions can quickly change the picture.<\/p>\n<p class=\"anp-pro-p\">Covers all three middleware types, registration scopes, termination, result override, and when to use each<\/p>\n<p class=\"anp-pro-p\">If you have used ASP.NET Core or Express.js, you already understand the core concept. Both frameworks let you register a chain of functions around every request. Each function receives a context and a next() delegate. Calling next() continues the chain. Not calling it short circuits it. That is the pipeline pattern a clean way to apply cross cutting concerns like logging, authentication, and error handling without touching any business logic.<\/p>\n<p class=\"anp-pro-p\">Microsoft\u2019s Agent Framework applies this exact pattern to AI agents. The next() delegate becomes call_next(), the context object holds the agent\u2019s conversation instead of an HTTP request, and the pipeline wraps an AI reasoning turn instead of a web request. If you know app.Use() or app.use(), you already know the shape of what follows.<\/p>\n<p class=\"anp-pro-p\">What is new, and worth understanding deeply, is that an agent turn is not a single request\/response cycle. It is a multi step reasoning loop, and Agent Framework exposes three distinct interception points within it. The rest of this post covers all three types, how they differ, when to use each, and how they come together in a real SQL agent example.<\/p>\n<p class=\"anp-pro-p\">The Agent Framework supports three types of middleware, each intercepting a different layer of execution:<\/p>\n<p class=\"anp-pro-p\">All three types support both function based and class based implementations.<\/p>\n<p class=\"anp-pro-p\">When multiple middleware of the same type are registered, they execute as a chain each middleware calls call_next() to hand off control to the next one in line.<\/p>\n<p class=\"anp-pro-p\">Rather than passing updated values into call_next() as arguments, middleware mutates the shared context object directly. This means any changes you make to the context before calling call_next() are automatically visible to downstream middleware, with no need to thread values through the call explicitly.<\/p>\n<p class=\"anp-pro-p\">Agent level middleware always wraps run level middleware. Given agent middleware [A1, A2] and run middleware [R1, R2], the execution order is:<\/p>\n<p class=\"anp-pro-p\">Function and chat middleware follow the same wrapping principle, applied at the time of each tool call or chat request respectively.<\/p>\n<p class=\"anp-pro-p\">The biggest value is not convenience; it is correctness and consistency.<\/p>\n<p class=\"anp-pro-p\">Without middleware, teams usually end up in one or both of these patterns:<\/p>\n<p class=\"anp-pro-p\">This is useful guidance, but it is still model behavior, not a hard gate. As prompts get long, tools increase, and edge cases appear, this policy can become inconsistent. It is also hard to audit after the fact.<\/p>\n<p class=\"anp-pro-p\">Agent middleware is the outermost layer of the pipeline. It fires once per turn before any LLM call is made and after the final reply or response is produced making it the right place for concerns that span the entire turn: input validation, security screening, audit logging, and output transformation.<\/p>\n<figure class=\"anp-pro-inline-figure\" style=\"margin:1.75em auto;text-align:center;max-width:100%\"><img decoding=\"async\" class=\"anp-pro-inline-img\" src=\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2Ffrts2avkvnzmlsp9v0fu.webp\" alt=\"\" style=\"margin:0 auto;max-width:100%;width:auto;height:auto;object-fit:contain;object-position:center\" loading=\"lazy\"><\/figure>\n<p class=\"anp-pro-p\">Agent middleware supports both class based and function based implementations both are fully equivalent, and the choice comes down to whether you need instance state or prefer a lighter syntax.<br \/>\nWhen multiple middleware components are registered, they form a chain. Each component is responsible for calling call_next() to pass control to the next layer; omitting this call short-circuits the pipeline, preventing any downstream middleware or the LLM from running.<\/p>\n<p class=\"anp-pro-p\">Note that call_next() takes no arguments. Instead of passing updated values explicitly, middleware mutates the shared AgentContext object directly \u2014 any changes made before await call_next() are automatically visible to everything further down the chain.<\/p>\n<p class=\"anp-pro-p\">Subclass AgentMiddleware and override process(). The example below shows SecurityAgentMiddleware It inspects the latest user message and short-circuits the pipeline if it detects a threat the LLM is never invoked for blocked requests.<\/p>\n<p class=\"anp-pro-p\">Agent Framework also supports function-based and decorator-based implementations. All three styles are equivalent; choose based on whether you need state or explicit type annotations.<\/p>\n<p class=\"anp-pro-p\">Middleware is registered when constructing the agent. Pass a list to the middleware argument different middleware types can be mixed in the same list and the framework routes each to the correct pipeline layer automatically:<\/p>\n<p class=\"anp-pro-p\">Agent middleware is the right choice for any concern that applies to the turn as a whole, rather than to a specific tool call or model request.<\/p>\n<p class=\"anp-pro-p\">FunctionMiddleware fires inside the agent turn, but only when the LLM decides to invoke a tool. A single agent turn can trigger multiple tool calls, and FunctionMiddleware wraps each one independently. This makes it the right place for concerns that are specific to tool execution: timing, input validation, result transformation, and tool call auditing.<\/p>\n<p class=\"anp-pro-p\">Each FunctionMiddleware component receives a FunctionInvocationContext, which is scoped to a single tool invocation:<\/p>\n<p class=\"anp-pro-p\">Use it for concerns specific to tool execution the execution timing and performance monitoring, validating or sanitising tool arguments before they run, capping the number of times a tool may be called in one turn, transforming tool results before the LLM sees them, or auditing exactly which tools were called and with what arguments.<\/p>\n<p class=\"anp-pro-p\">Setting context.terminate = True inside FunctionMiddleware does something powerful: it stops the LLM\u2019s function calling loop entirely. The LLM will not receive the tool result and will not make any further tool calls in this turn. This is useful for enforcing tool call budgets or stopping a loop that is going in an undesirable direction.<\/p>\n<p class=\"anp-pro-p\">Terminating the function calling loop can leave the chat history in an inconsistent state a tool-call message with no corresponding tool result. This may cause errors if the same history is used in subsequent agent runs. Use termination carefully and consider clearing or repairing the history afterward.<\/p>\n<p class=\"anp-pro-p\">ChatMiddleware is the deepest layer. It wraps the actual inference call sent to the underlying language model  the raw list of messages, the model options, and the response that comes back. This layer fires for every call to the LLM within a turn, which can be more than one if tools are used.<\/p>\n<p class=\"anp-pro-p\">print(f&#8221;[Chat] Sending {len(context.messages)} messages to model&#8221;)<\/p>\n<p class=\"anp-pro-p\">print(&#8220;[Chat] Model response received&#8221;)<br \/>\n`<br \/>\nBecause ChatMiddleware sees the exact message list going to the model, it can be used to inject system instructions, strip sensitive content, enforce token budgets, or even substitute a cached response all without the AgentMiddleware or FunctionMiddleware layers knowing anything changed.<\/p>\n<figure class=\"anp-pro-inline-figure\" style=\"margin:1.75em auto;text-align:center;max-width:100%\"><img decoding=\"async\" class=\"anp-pro-inline-img\" src=\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2Fcs50tvtnjc56tfbg7cbl.webp\" alt=\"\" style=\"margin:0 auto;max-width:100%;width:auto;height:auto;object-fit:contain;object-position:center\" loading=\"lazy\"><\/figure>\n<p class=\"anp-pro-p\">Use it when you need access to the raw LLM call: injecting or modifying system level instructions per call, redacting PII from messages before they leave your infrastructure, enforcing token count limits, caching repeated inference calls, or monitoring every model request for compliance purposes.<\/p>\n<p class=\"anp-pro-p\">Microsoft Agent Framework supports two scopes for registering middleware. Understanding the difference is important for designing flexible agent systems.<\/p>\n<p class=\"anp-pro-p\">Middleware passed in the middleware=[&#8230;] list when constructing the Agent applies to every single call to agent.run() for the lifetime of that agent. This is where you put policies that should always be enforced: security guards, mandatory audit logging, content filters.<\/p>\n<p class=\"anp-pro-p\">You can also pass middleware directly to a single agent.run() call. This middleware applies only to that one invocation and is discarded afterward. It is useful for per request customisation: adding a trace ID for a specific call, applying extra validation for a sensitive operation, or attaching a debug logger without affecting every other turn.<\/p>\n<p class=\"anp-pro-p\">With three types available, the choice usually comes down to what you need to see and at what granularity.<\/p>\n<p class=\"anp-pro-p\">Microsoft Agent Framework\u2019s middleware brings the same pipeline contract you know from ASP.NET Core and Express  ordered components, a context object, and a call_next() delegate into the world of AI agents. The structural difference is that an agent turn is not a single request\/response cycle but a multi-step reasoning loop, and Agent Framework exposes three separate interception points within it.<\/p>\n<p class=\"anp-pro-p\">AgentMiddleware is the right home for turn level concerns: security screening, content policy, and audit logging.<\/p>\n<p class=\"anp-pro-p\">FunctionMiddleware is the right home for tool level concerns: execution timing, argument validation, and tool call budgets.<\/p>\n<p class=\"anp-pro-p\">ChatMiddleware is the right home for model level concerns: raw message inspection, token enforcement, and caching.<\/p>\n<p class=\"anp-pro-p\">Templates let you quickly answer FAQs or store snippets for re-use.<\/p>\n<p class=\"anp-pro-p\">Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment&#8217;s permalink.<\/p>\n<p class=\"anp-pro-p\">For further actions, you may consider blocking this person and\/or reporting abuse<\/p>\n<p class=\"anp-pro-p\">Thank you to our Diamond Sponsors for supporting the DEV Community<\/p>\n<p class=\"anp-pro-p\">Google AI is the official AI Model and Platform Partner of DEV<\/p>\n<p class=\"anp-pro-p\">DEV Community \u2014 A space to discuss and keep up software development and manage your software career<\/p>\n<p class=\"anp-pro-p\">Built on Forem \u2014 the open source software that powers DEV and other inclusive communities.<\/p>\n<p class=\"anp-pro-p\">We&#8217;re a place where coders share, stay up-to-date and grow their careers.<\/p>\n<aside class=\"anp-pro-aside\" aria-label=\"context\">\n<p class=\"anp-pro-kicker\">Why it matters<\/p>\n<p class=\"anp-pro-p\">News like this often changes audience expectations and competitors\u2019 plans.<\/p>\n<p class=\"anp-pro-p\">When one player makes a move, others usually react \u2014 it is worth reading the event in context.<\/p>\n<\/aside>\n<aside class=\"anp-pro-aside\" aria-label=\"outlook\">\n<p class=\"anp-pro-kicker\">What to look out for next<\/p>\n<p class=\"anp-pro-p\">The full picture will become clear in time, but the headline already shows the dynamics of the industry.<\/p>\n<p class=\"anp-pro-p\">Further statements and user reactions will add to the story.<\/p>\n<\/aside>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p class=\"text-justify mb-2\" >The topic Agent Middleware in Microsoft Agent Framework 1.0 is currently the subject of lively discussion \u2014 readers and analysts are keeping a close eye on developments. This is taking place in a dynamic environment: companies\u2019 decisions and competitors\u2019 reactions can quickly change the picture. [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":404,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wpscppro_dont_share_socialmedia":false,"_wpscppro_custom_social_share_image":0,"_facebook_share_type":"","_twitter_share_type":"","_linkedin_share_type":"","_pinterest_share_type":"","_linkedin_share_type_page":"","_instagram_share_type":"","_medium_share_type":"","_threads_share_type":"","_google_business_share_type":"","_selected_social_profile":[],"_wpsp_enable_custom_social_template":false,"_wpsp_social_scheduling":{"enabled":false,"datetime":null,"platforms":[],"status":"template_only","dateOption":"today","timeOption":"now","customDays":"","customHours":"","customDate":"","customTime":"","schedulingType":"absolute"},"_wpsp_active_default_template":true},"categories":[1],"tags":[60,62,61,64,63],"class_list":["post-403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology-news","tag-agent","tag-call","tag-middleware","tag-next","tag-tool"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site\" \/>\n<meta property=\"og:description\" content=\"The topic Agent Middleware in Microsoft Agent Framework 1.0 is currently the subject of lively discussion \u2014 readers and analysts are keeping a close eye on developments. This is taking place in a dynamic environment: companies\u2019 decisions and competitors\u2019 reactions can quickly change the picture. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\" \/>\n<meta property=\"og:site_name\" content=\"who-offers.site\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-04T19:43:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-04T19:43:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Agent Middleware in Microsoft Agent Framework 1.0\",\"datePublished\":\"2026-04-04T19:43:02+00:00\",\"dateModified\":\"2026-04-04T19:43:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\"},\"wordCount\":1546,\"publisher\":{\"@id\":\"https:\/\/who-offers.site\/#organization\"},\"image\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp\",\"keywords\":[\"Agent\",\"Call\",\"Middleware\",\"Next\",\"Tool\"],\"articleSection\":[\"Technology News\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\",\"url\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\",\"name\":\"Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site\",\"isPartOf\":{\"@id\":\"https:\/\/who-offers.site\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp\",\"datePublished\":\"2026-04-04T19:43:02+00:00\",\"dateModified\":\"2026-04-04T19:43:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage\",\"url\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp\",\"contentUrl\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp\",\"width\":1200,\"height\":627},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/who-offers.site\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agent Middleware in Microsoft Agent Framework 1.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/who-offers.site\/#website\",\"url\":\"https:\/\/who-offers.site\/\",\"name\":\"who-offers.site\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/who-offers.site\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/who-offers.site\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/who-offers.site\/#organization\",\"name\":\"who-offers.site\",\"url\":\"https:\/\/who-offers.site\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/who-offers.site\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/01\/cropped-logo.png\",\"contentUrl\":\"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/01\/cropped-logo.png\",\"width\":50,\"height\":50,\"caption\":\"who-offers.site\"},\"image\":{\"@id\":\"https:\/\/who-offers.site\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/","og_locale":"en_GB","og_type":"article","og_title":"Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site","og_description":"The topic Agent Middleware in Microsoft Agent Framework 1.0 is currently the subject of lively discussion \u2014 readers and analysts are keeping a close eye on developments. This is taking place in a dynamic environment: companies\u2019 decisions and competitors\u2019 reactions can quickly change the picture. [&hellip;]","og_url":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/","og_site_name":"who-offers.site","article_published_time":"2026-04-04T19:43:02+00:00","article_modified_time":"2026-04-04T19:43:07+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#article","isPartOf":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/"},"author":{"name":"","@id":""},"headline":"Agent Middleware in Microsoft Agent Framework 1.0","datePublished":"2026-04-04T19:43:02+00:00","dateModified":"2026-04-04T19:43:07+00:00","mainEntityOfPage":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/"},"wordCount":1546,"publisher":{"@id":"https:\/\/who-offers.site\/#organization"},"image":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage"},"thumbnailUrl":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp","keywords":["Agent","Call","Middleware","Next","Tool"],"articleSection":["Technology News"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/","url":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/","name":"Agent Middleware in Microsoft Agent Framework 1.0 - who-offers.site","isPartOf":{"@id":"https:\/\/who-offers.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage"},"image":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage"},"thumbnailUrl":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp","datePublished":"2026-04-04T19:43:02+00:00","dateModified":"2026-04-04T19:43:07+00:00","breadcrumb":{"@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#primaryimage","url":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp","contentUrl":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/04\/https3A2F2Fdev-to-uploads.s3.amazonaws.com2Fuploads2Farticles2F2d2wly7wlo1atbwaklbo.webp","width":1200,"height":627},{"@type":"BreadcrumbList","@id":"https:\/\/who-offers.site\/index.php\/2026\/04\/04\/agent-middleware-in-microsoft-agent-framework-1-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/who-offers.site\/"},{"@type":"ListItem","position":2,"name":"Agent Middleware in Microsoft Agent Framework 1.0"}]},{"@type":"WebSite","@id":"https:\/\/who-offers.site\/#website","url":"https:\/\/who-offers.site\/","name":"who-offers.site","description":"","publisher":{"@id":"https:\/\/who-offers.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/who-offers.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/who-offers.site\/#organization","name":"who-offers.site","url":"https:\/\/who-offers.site\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/who-offers.site\/#\/schema\/logo\/image\/","url":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/01\/cropped-logo.png","contentUrl":"https:\/\/who-offers.site\/wp-content\/uploads\/2026\/01\/cropped-logo.png","width":50,"height":50,"caption":"who-offers.site"},"image":{"@id":"https:\/\/who-offers.site\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/posts\/403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/comments?post=403"}],"version-history":[{"count":1,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions"}],"predecessor-version":[{"id":410,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions\/410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/media\/404"}],"wp:attachment":[{"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/media?parent=403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/categories?post=403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/who-offers.site\/index.php\/wp-json\/wp\/v2\/tags?post=403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}