<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4126985520350746834</id><updated>2026-03-28T22:20:22.944+00:00</updated><category term="SharePoint"/><category term="SP2010"/><category term="speaking"/><category term="Development"/><category term="Office 365"/><category term="Power Platform"/><category term="SP2013"/><category term="features"/><category term="MOSS"/><category term="Azure"/><category term="deployment"/><category term="AI"/><category term="AJAX"/><category term="Office365"/><category term="codeplex"/><category term="content deployment"/><category term="customizing"/><category term="Syntex/SharePoint Premium"/><category term="Content Deployment Wizard"/><category term="content migration API"/><category term="workflow"/><category term="Continuous Integration"/><category term="Strategy"/><category term="WCM"/><category term="configuration"/><category term="site definitions"/><category term="VSeWSS"/><category term="feature receiver"/><category term="user group"/><category term="webparts"/><category term="Automation"/><category term="TechEd"/><category term="master pages"/><category term="site columns"/><category term="Azure DevOps"/><category term="Coding"/><category term="SharePoint apps"/><category term="Teams"/><category term="central admin"/><category term="content types"/><category term="ghosting"/><category term="page layouts"/><category term="security"/><category term="CAS policy"/><category term="Content Search web part"/><category term="CustomAction"/><category term="DelegateControl"/><category term="Display Templates"/><category term="InfoPath"/><category term="JSLink"/><category term="Personal"/><category term="Search"/><category term="Virtual Machine Manager"/><category term="Virtual Server"/><category term="content query web part"/><category term="debugging"/><category term="feature-stapling"/><category term="help"/><category term="jQuery"/><category term="lists"/><title type='text'>Chris O&#39;Brien</title><subtitle type='html'>The nuts and bolts of Microsoft 365 and SharePoint</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sharepointnutsandbolts.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/posts/default?max-results=1&amp;redirect=false'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/posts/default?start-index=2&amp;max-results=1&amp;redirect=false'/><author><name>Chris O&#39;Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlM9GXd8VuRw-0tP2zT6NJR41XHRMVq2yhEaQ_i2VP0tgk74lta7Ug4Ekk0jkYPpS8rCxh4nEax-CnH-_kwmKdKjMMJjAcx_3i2xJFlDl_xE31TWtPZ22nv2iRIBfV1iR9sDXosJO28ZR4DnEvDTT-XntanHhk-sMgZRKp7-tLzKdBqg/s1600/Chris-OBrien-AdvaniaUK-1000.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>334</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>1</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4126985520350746834.post-2473437871415318533</id><published>2026-01-31T19:20:00.001+00:00</published><updated>2026-02-08T12:37:58.151+00:00</updated><title type='text'>Autonomous agents - Technique 3: Provide tools for steps your agent can&#39;t easily handle (like Agent Flows)</title><content type='html'>&lt;p&gt;Continuing the theme of this series on how to build effective AI agents which have some autonomy and operate on the instructions you give, we need to address another aspect of keeping an agent on rails - specifically, when agents take action. That might be updating an external system or database, sending an e-mail or other message, asking for human approval in a step, cross-referencing some organisational data, or any number of other things we may want an agent to do. The challenge is that steps like these often need to be very defined and exact&amp;nbsp;- simply specifying what should happen in agent instructions is often never going to work. &quot;Update our CRM with the new lead details&quot; or &quot;Raise an invoice for the order&quot; are vague guidance with nowhere near enough context - even the most capable AI agent backed by the latest LLM will fail on those without help. If the agent could talk it would conceivably say &lt;i&gt;&quot;What CRM, where? How do I authenticate? How are leads stored, and how do I ensure the lead is associated with a client and I&#39;m not creating a duplicate?&quot;&amp;nbsp;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;In the last post we focused on &lt;a href=&quot;https://www.sharepointnutsandbolts.com/2025/11/Copilot-Studio-agent-instructions.html&quot;&gt;writing good instructions for agents&lt;/a&gt; - but most agents need more than that. They need to call out to tools which are pre-defined and wrap up the complex details of taking actions on specific systems, integrating data, or performing precise steps in a process. Every agent framework has a &#39;tools&#39; concept, and for Microsoft agents built with Copilot Studio, this is agent flows - ultimately Power Automate flows triggered from Copilot Studio agents which. &lt;b&gt;This post covers how to make your agent more reliable in actions it performs by calling out to agent flows, including the specific help Microsoft give you to simplify this.&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;But first, here&#39;s a recap of the full series:&lt;/p&gt;&lt;h3&gt;Articles in this series&lt;/h3&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://www.sharepointnutsandbolts.com/2025/07/Copilot-Studio-autonomous-agents-series.html&quot; target=&quot;_blank&quot;&gt;Techniques for autonomous agents in Copilot Studio - intro&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.sharepointnutsandbolts.com/2025/07/Copilot-Studio-autonomous-agent-video.html&quot; target=&quot;_blank&quot;&gt;Scenario video - Microsoft architect with proposal generation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.sharepointnutsandbolts.com/2025/09/Copilot-Studio-agent-descriptions.html&quot; target=&quot;_blank&quot;&gt;Technique 1 - Getting AI-suitable descriptions right - data, tools, agents themselves&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.sharepointnutsandbolts.com/2025/11/Copilot-Studio-agent-instructions.html&quot; target=&quot;_blank&quot;&gt;Technique 2 -&amp;nbsp;Define explicit steps in agent instructions when &quot;reasoning the process&quot; isn&#39;t appropriate&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Technique 3 -&amp;nbsp;Provide tools for steps your agent can’t easily handle [like agent flows]&amp;nbsp;(this article)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Technique 4 - Leveraging Power Platform and Microsoft 365 capabilities in your agents&lt;/li&gt;&lt;li&gt;Technique 5 - Understand cost, capability, and governance implications of agents you create&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h3&gt;Agent flows - what are they?&lt;/h3&gt;&lt;div&gt;As a concept, agent flows isn&#39;t anything too new - this is Power Automate within the Microsoft ecosystem but adapted for the AI and agent world. An agent flow is essentially a Power Automate &lt;b&gt;cloud flow&lt;/b&gt; which can only be called from an agent. Here&#39;s a quick primer on some of the differences and commonalities:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;
  &lt;div class=&quot;cob-emphasised orange&quot;&gt;&lt;header&gt;Agent flows - a primer&lt;/header&gt; 
    &lt;div&gt;
    &lt;ul&gt;
      &lt;li&gt;Agent flows share the same workflow designer as Power Automate, the same set of connectors, and the same approach to key concepts like triggers, actions, child flows, and variables&lt;/li&gt;&lt;li&gt;An agent flow must be created in Copilot Studio (not Power Automate) and start with the &lt;b&gt;Run a flow from Copilot&lt;/b&gt; trigger and finish with the &lt;b&gt;Respond to Copilot&lt;/b&gt; action.&lt;/li&gt;
      &lt;li&gt;Licensing is different - Agent Flows run under Copilot Studio licensing rather than Power Automate licensing (i.e. they consume Copilot credits)&lt;/li&gt;
      &lt;li&gt;Agent flows can use Premium connectors without charge (since it&#39;s being covered by the Copilot Studio licensing)&lt;/li&gt;
      &lt;li&gt;Agent flows DO bring special support for calling from agents - in particular, if your flow has a series of input parameters (let&#39;s say pieces of an address), the agent can automatically determine which pieces of data it should pass to each. This works surprisingly well if you name your inputs properly - more on this later&lt;/li&gt;
      &lt;li&gt;Agent flows are designed to be shared across agents - they essentially become a toolkit of well-defined actions and sub-processes used by your agents, some of which may be specific to an agent and some shared across many&lt;/li&gt;&lt;li&gt;Agent flows give better tracking, analytics, and overall control across the actions they take compared to steps an agent would run just from it&#39;s instructions - this is helpful in anything you need full control and monitoring over&amp;nbsp;&lt;/li&gt;
      &lt;/ul&gt; 
    &lt;/div&gt;
  &lt;/div&gt;  
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;This is essentially &#39;tool calling&#39; in the Copilot Studio agent world.&lt;/span&gt;&lt;/p&gt;

&lt;h3&gt;How agent flows are used in my scenario&lt;/h3&gt;&lt;div&gt;Agent flows give us consistent execution across processes and actions - and since we all know about the non-deterministic nature of LLMs by now, it&#39;s clear that many agents need this. For the &#39;technology architect agent&#39; discussed in this series, if you read the the last article you might remember we were hitting issues trying to get the agent to do certain things:&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;background-color: white; font-family: &amp;quot;Segoe UI&amp;quot;, serif; font-size: 14.3px;&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;b style=&quot;font-size: 14.3px;&quot;&gt;Issue 1 - agent was failing to create the Word proposal document as requested - which we said would include the technology recommendation, rationale, and licensing uplifts etc. required for this change&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b style=&quot;font-size: 14.3px;&quot;&gt;Issue 2 - agent was failing to log it&#39;s output to a SharePoint list as requested - this is to give a simple audit trail of requests and corresponding recommendations&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style=&quot;background-color: white; font-family: &amp;quot;Segoe UI&amp;quot;, serif; font-size: 14.3px;&quot;&gt;Agent flows are needed to fix this.&lt;/div&gt;
  &lt;br /&gt;
  &lt;div&gt;I created two flows, one for each sub-process:&lt;/div&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
  &lt;div&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6QrUxqHUZrUgRt0i4U8IZ2wADlrAtbxwKlrsgZhcO-zAo3x2pEMTaaJ1_YQIK4jfipdaMm8aPWoEJYqwC1sJQNhY5JvOYn0Gek509NJmntHUTqtTl9PdeMG57CmREstxmPdQq3D1LG2cA0Sy_H00x6Ea87UptqlRQFcm6e5B4A2BbaMIbe_AYeEjPCE_/s880/Agent%20flows%20-%20two%20flows%20used%20by%20architect%20agent.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;389&quot; data-original-width=&quot;880&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6QrUxqHUZrUgRt0i4U8IZ2wADlrAtbxwKlrsgZhcO-zAo3x2pEMTaaJ1_YQIK4jfipdaMm8aPWoEJYqwC1sJQNhY5JvOYn0Gek509NJmntHUTqtTl9PdeMG57CmREstxmPdQq3D1LG2cA0Sy_H00x6Ea87UptqlRQFcm6e5B4A2BbaMIbe_AYeEjPCE_/s16000/Agent%20flows%20-%20two%20flows%20used%20by%20architect%20agent.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Let&#39;s look at these one by one.&amp;nbsp;&lt;/div&gt;
  &lt;h5 style=&quot;clear: both; text-align: left;&quot;&gt;Agent flow to create proposal document&lt;/h5&gt;
The objective here is to: 
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Creating a draft customer proposal containing all the details of the technology upgrade that the agent has determined - essentially, accelerate our consultants who would normally create such documents from scratch&lt;/li&gt;&lt;li&gt;Ensure the document is on the Advania branded Word template&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;So this is essentially &quot;create a templated document and drop information into placeholders&quot;. There are a few ways to do this in Microsoft 365, and this agent flow effectively automates my chosen approach - I&#39;m using a capability in SharePoint Premium/Syntex called Content Assembly, and this provides a handy Power Automate action. Here&#39;s the start of the flow in designer:&lt;/div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;span style=&quot;font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3eztLASKekbFpCjKK9ZBU9LEmxsvLHo_ym07X_RKbUYM1Mm24i1Twp5x2a9KxrrDX2g-L0OqICuraPUJ-1jTxQBc4D3vKBMQKuVIVb4Amtf9WZi7wzJUJ7-36Bmskh9KoJ_wOeMyj6nSBzUhs4jbNvjQ_e5k1cwu5lolwZC4R2zH5ZeElXJuFCoXRXWIV/s813/Agent%20flows%20-%20create%20proposal%20flow%20-%201.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;730&quot; data-original-width=&quot;813&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3eztLASKekbFpCjKK9ZBU9LEmxsvLHo_ym07X_RKbUYM1Mm24i1Twp5x2a9KxrrDX2g-L0OqICuraPUJ-1jTxQBc4D3vKBMQKuVIVb4Amtf9WZi7wzJUJ7-36Bmskh9KoJ_wOeMyj6nSBzUhs4jbNvjQ_e5k1cwu5lolwZC4R2zH5ZeElXJuFCoXRXWIV/s16000/Agent%20flows%20-%20create%20proposal%20flow%20-%201.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;/span&gt;
       &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;We&#39;ll go into this in more detail in the next post -&amp;nbsp;&lt;i&gt;Technique 4 - Leveraging Power Platform and Microsoft 365 capabilities in your agents&lt;/i&gt;. The key message is that to build effective low-code agents in the Microsoft world, you need a solid understanding of wider M365 building blocks and how these can be plugged into your agents - otherwise you&#39;ll hit limits of agent building and automation.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;To summarise here, the approach I&#39;m using for templated document creation is a Microsoft Syntex/SharePoint Premium capability called Content Assembly. I&#39;ve already done the setup work for this which involves:&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Creating a SharePoint list with columns for all the info pieces your document needs&lt;/li&gt;&lt;li&gt;Creating a &#39;modern template&#39; in SharePoint, where you upload your branded document and insert placeholders in the right locations for each piece of data to be dropped in&lt;/li&gt;&lt;/ul&gt;For full details of on this approach, see my article &lt;a href=&quot;https://www.sharepointnutsandbolts.com/2022/05/Syntex-Content-Assembly.html&quot;&gt;Automate creation of new documents with Syntex Content Assembly&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;For my agent, the piece which does the magic is this item -  the &#39;Generate document using Microsoft Syntex&#39; action available in Power Automate and therefore agent flows. Individual blocks of text like the client name, requirement summary, proposed approach etc. are passed into this action for them to be dropped into the document:&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;span&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&amp;nbsp;&lt;/div&gt;
  &lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;span&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjufQ39NbOn5eJvNkiPb63_T_Wr6Yr9m2uNTlMM6lLjPDb9fk2N42jVxxPDp4AjsnaKIjNmfnBHTlLfZHxZXmcWDSIAySaOGzXMjZP9ZD43wo_zqROxRCQCmEAErf0ug6yERaYm9SV_X2Zsd2B6t3-mVvP0S9nuU94Y8hjvKwcjUp-Nb8SThZ5aMnHeWIGV/s890/Agent%20flows%20-%20create%20proposal%20flow%20-%203.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;798&quot; data-original-width=&quot;890&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjufQ39NbOn5eJvNkiPb63_T_Wr6Yr9m2uNTlMM6lLjPDb9fk2N42jVxxPDp4AjsnaKIjNmfnBHTlLfZHxZXmcWDSIAySaOGzXMjZP9ZD43wo_zqROxRCQCmEAErf0ug6yERaYm9SV_X2Zsd2B6t3-mVvP0S9nuU94Y8hjvKwcjUp-Nb8SThZ5aMnHeWIGV/s16000/Agent%20flows%20-%20create%20proposal%20flow%20-%203.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
   &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/span&gt;What&#39;s happening here is that these pieces of data are being retrieved from a SharePoint list item and then passed into this action, and therefore the document. But that needs something to create the list item in the first place, and that&#39;s our agent itself - and specifically, it&#39;s my other agent flow which does that step. Let&#39;s look at that now.&lt;span&gt;
  
  &lt;h5 style=&quot;font-size: 14.3px;&quot;&gt;Agent flow to create SharePoint list item with agent&#39;s output&lt;/h5&gt;
  &lt;/span&gt;To show what&#39;s happening here, let&#39;s start with the actual list that stores this data - here&#39;s a partial view of it:&lt;br /&gt;&lt;span&gt;
    &lt;br /&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip2xwTP_mw-1DANS-nLbKmB82YRYOyef9CrTnPFlaVZx3OWENx0Ik-0RjLGNVYrR6-kZfcNYBp50c9HkSVDdhL9PrUkkSvRUP_4P0HawQuQSBV4Uut0STuozz4cZaBU1POD7mIWsnJC6nOkZpN1LLCDID2s0JA7eZAygHZvYc-bel-GqBoWjiHKEERgVOx/s851/Agent%20flows%20-%20create%20proposal%20flow%20-%205.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;480&quot; data-original-width=&quot;851&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip2xwTP_mw-1DANS-nLbKmB82YRYOyef9CrTnPFlaVZx3OWENx0Ik-0RjLGNVYrR6-kZfcNYBp50c9HkSVDdhL9PrUkkSvRUP_4P0HawQuQSBV4Uut0STuozz4cZaBU1POD7mIWsnJC6nOkZpN1LLCDID2s0JA7eZAygHZvYc-bel-GqBoWjiHKEERgVOx/s16000/Agent%20flows%20-%20create%20proposal%20flow%20-%205.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px;&quot;&gt;The full list of columns is:&lt;/div&gt;&lt;br /&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI0LWpWVmlckbrikP3q1JZVR3tzlwlJRB9N8_DKzTV2R1msHvITjf6fP9HkwgriB9tszWuPy9MT_H9tdMMPr2B5c197hlX3PYHHuSHrfCtftch6r2hiYyl1yNJqeCJt94qcITApHuy5I2GLBOHoUJ0Ya70KPaTD3dA1RBSv-vL_vQsJq-VxoiKCw9_oSP7/s397/Agent%20flows%20-%20create%20proposal%20flow%20-%206.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;194&quot; data-original-width=&quot;397&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI0LWpWVmlckbrikP3q1JZVR3tzlwlJRB9N8_DKzTV2R1msHvITjf6fP9HkwgriB9tszWuPy9MT_H9tdMMPr2B5c197hlX3PYHHuSHrfCtftch6r2hiYyl1yNJqeCJt94qcITApHuy5I2GLBOHoUJ0Ya70KPaTD3dA1RBSv-vL_vQsJq-VxoiKCw9_oSP7/s16000/Agent%20flows%20-%20create%20proposal%20flow%20-%206.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
  &lt;/span&gt;
     &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;All of those items are dropped in by the agent. This is where we come to the important support that agent flows give in simplifying all this - &quot;proactive slot filling&quot;. Because my agent flow has three clear input parameters, I can simply ask the agent to work out what to pass in from their names - and again, this is a place where descriptive naming and rich descriptions are absolutely critical for AI and agents, I named them carefully. To do this, in the Tools &amp;gt; Inputs area of my agent I use the &quot;dynamically fill with AI&quot; option for each parameter:&lt;/div&gt;&lt;span&gt;&lt;br /&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphgRikKeRlsQNMsy26OP6GO9i_DHypC0vcNYPTO-Z_aHfvYJY1kwerc5f1y1yBTJxZTc-kJTzRFYLV-RkAk6AL6sVEEbRYEHwz732zHChYM4-VQfKewtLKodGCLikZwHnGCpX7oVOUyHjvqQCM1B6ADOiof4YVtOAFCfxDG4GjIDO7Rw1HQAmeuE5YT2f/s797/Agent%20flows%20-%20create%20proposal%20flow%20-%207.1.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;797&quot; data-original-width=&quot;776&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgphgRikKeRlsQNMsy26OP6GO9i_DHypC0vcNYPTO-Z_aHfvYJY1kwerc5f1y1yBTJxZTc-kJTzRFYLV-RkAk6AL6sVEEbRYEHwz732zHChYM4-VQfKewtLKodGCLikZwHnGCpX7oVOUyHjvqQCM1B6ADOiof4YVtOAFCfxDG4GjIDO7Rw1HQAmeuE5YT2f/s16000/Agent%20flows%20-%20create%20proposal%20flow%20-%207.1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
 
    &lt;/span&gt;
     &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;With the &#39;dynamically fill with AI&#39; approach, the agent itself works out what to pass into each parameter based on their name and pieces of information it&#39;s already determined from the conversation. There&#39;s quite a bit to what&#39;s possible here and Microsoft document it at &lt;a href=&quot;https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/slot-filling-best-practices&quot;&gt;Implement slot-filling best practices&lt;/a&gt; - it&#39;s essentially NLU working with some pre-determined entities and the ability to define your own. What this means is you don&#39;t need to do the work of parsing out individual pieces of information from either the agent&#39;s earlier output or queries and prompts supplied by the end-user - this is AI running over the user/agent conversation so far and extracting what it thinks the right answers are likely to be. The alternative would be you doing this hard work and then passing in &#39;hard-coded&#39; values to your flow parameters. Of course, the dynamic AI approach won&#39;t always work perfectly and it&#39;s an area of agent development that needs careful scenario testing using different types of data - and to say it one more time, good naming is critical of course or the AI has no chance.&lt;/div&gt;&lt;span&gt;&lt;div style=&quot;font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;So that covers how data gets passed in, and from there it&#39;s down to whatever steps you implement in your flow using all the standard Power Automate capabilities. As you can imagine, to create our SharePoint list item which then drives the proposal document creation I simply use the SharePoint connector&#39;s Create Item action:&lt;span&gt;&lt;div style=&quot;font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRIswvlJK1zHzOIeUZY2JuF5nUyAVMv-TZjQjWQa4LLAxYmRNBthE7yoCvKDBD2iwAEW-QVRHQUjQ3cA9Gm7s3nCTALNpwKcjNoMldGOLiXezV15LLlSq7T403OURHK102Avf21933n438NRjAT0jZ0IS7p_TiC4nUnY0h6AYgXdG2RUKHjAUfW4CjyuAy/s882/Agent%20flows%20-%20create%20list%20item.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;826&quot; data-original-width=&quot;882&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRIswvlJK1zHzOIeUZY2JuF5nUyAVMv-TZjQjWQa4LLAxYmRNBthE7yoCvKDBD2iwAEW-QVRHQUjQ3cA9Gm7s3nCTALNpwKcjNoMldGOLiXezV15LLlSq7T403OURHK102Avf21933n438NRjAT0jZ0IS7p_TiC4nUnY0h6AYgXdG2RUKHjAUfW4CjyuAy/s16000/Agent%20flows%20-%20create%20list%20item.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px;&quot;&gt;Thus, we now have our automation chain of:&lt;/div&gt;&lt;/span&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Architect asks the agent for a proposal on how the client&#39;s use case should be addressed&lt;/li&gt;&lt;li&gt;Agent uses it&#39;s data sources and reasoning to derive an approach that makes sense for this client (based on stated needs, technologies in play or suitable to adopt, licensing etc.)&lt;/li&gt;&lt;li&gt;Agent provides it&#39;s response&lt;/li&gt;&lt;li&gt;Agent calls tool (agent flow 1) to add SharePoint list item containing key elements of the response&lt;/li&gt;&lt;li&gt;Agent calls tool (agent flow 2) to create the Word proposal document on the Advania branded template using the SharePoint list item&lt;/li&gt;&lt;li&gt;Agent notifies user that it&#39;s done&lt;/li&gt;&lt;/ol&gt;We now have a fully working agent doing it&#39;s advanced reasoning and creating the draft proposal document for our architect to enhance and take forward to the client. &lt;span&gt;&lt;div style=&quot;font-size: 14.3px;&quot;&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;The result&lt;/h3&gt;&lt;/div&gt;&lt;/span&gt;Now that we codified exactly where and how to create proposal document (via the agent flows), we now have a document successfully dropped into my chosen SharePoint library: &lt;span&gt;&lt;div style=&quot;font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNppd5rkNLEdoCZg8IHn0RWWVLA1dKTyoF8jgxnyEp00wj-AZrOhiCKSYmVz41nW68rkc24ucyqkBvY13rsu2Mg66xKiSwjru-R3W5wrE2xIfr08Rhxol1mD9AA13cC_K3MmuvKP126WVDiQ-wTB4N6PfQtBkUHnfdmOxnsRgEMD3FE22Xkp5TnQAyUOWd/s602/Agent%20flows%20-%20final%20proposal%20document%20-%200.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;339&quot; data-original-width=&quot;602&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNppd5rkNLEdoCZg8IHn0RWWVLA1dKTyoF8jgxnyEp00wj-AZrOhiCKSYmVz41nW68rkc24ucyqkBvY13rsu2Mg66xKiSwjru-R3W5wrE2xIfr08Rhxol1mD9AA13cC_K3MmuvKP126WVDiQ-wTB4N6PfQtBkUHnfdmOxnsRgEMD3FE22Xkp5TnQAyUOWd/s16000/Agent%20flows%20-%20final%20proposal%20document%20-%200.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;
    &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;The draft proposal has all the details of the agent&#39;s output and was created on our organisational template:&lt;/div&gt;&lt;/div&gt;&lt;span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCGb3iMFtHsKCUOQLaJzx5Nb7sJdErcUiHJ4WF5NV5N_G7d3LeJB1EHnntvgWR86GDbUInDGmkLGGkCTRKdllJ-He9cVIFlzfDe1HNN_SW1WVoaRPwzqA0-T3jb-GHZEsxHvA61UCuqoq_ybzMTj6Mp6naJ9Nh_O45kzCc7Kn1CxKjKAvphMrle5rI9Pc3/s850/Agent%20flows%20-%20final%20proposal%20document%20-%20850.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;655&quot; data-original-width=&quot;850&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCGb3iMFtHsKCUOQLaJzx5Nb7sJdErcUiHJ4WF5NV5N_G7d3LeJB1EHnntvgWR86GDbUInDGmkLGGkCTRKdllJ-He9cVIFlzfDe1HNN_SW1WVoaRPwzqA0-T3jb-GHZEsxHvA61UCuqoq_ybzMTj6Mp6naJ9Nh_O45kzCc7Kn1CxKjKAvphMrle5rI9Pc3/s16000/Agent%20flows%20-%20final%20proposal%20document%20-%20850.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;
     &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;The next step is to start analysing and enhancing the agent&#39;s output - checking the reasoning, architectural and licensing guidance, and turning this into a polished client-ready proposal. But the heavy lifting of contemplating the requirement, embarking upon the research, considering different options, ensuring each granular requirement specified by the client is met, deriving any licensing considerations and uplifts, then structuring a draft proposal - all this is done.&lt;/div&gt;&lt;span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-size: 14.3px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;A word on Express Mode for agent flows&lt;/h3&gt;A final thing to understand about agent flows is express mode. In Microsoft&#39;s framework, agent flows fail if they take longer than two minutes to execute - express mode is a way of opting-in to model giving faster execution times with some limitations, and it&#39;s for agent flows only rather than extending to Power Automate flows too. There are no additional costs or licensing implications, but the limitations need to be understood - more on this at&amp;nbsp;&lt;a href=&quot;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-flow-express-mode&quot; target=&quot;_blank&quot;&gt;https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-flow-express-mode&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;h3 style=&quot;clear: both; text-align: left;&quot;&gt;Summary&lt;/h3&gt;In this article, we focused on one of the most important ingredients for building dependable agents - giving them the right tools to perform precise, repeatable actions. In the Copilot Studio world, this is agent flows. While agents excel at reasoning and orchestrating conversations, they simply can’t execute structured operations (like updating systems, creating documents, or logging data) reliably without clearly defined, deterministic steps. I don&#39;t see this changing too much even as models and agent frameworks evolve over the next few years.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;We explored how agent flows act as the “hands” of your agent, wrapping complex processes into reliable Power Automate cloud flows. You get predictable execution, premium connector access, consistent handling of structured data, and better monitoring and governance.&amp;nbsp;Using the architect proposal scenario, we walked through how two agent flows - one to log outputs into SharePoint and another to generate a branded proposal document - take the agent from being a conversational assistant&amp;nbsp; to providing real automation of the process. We also looked at how dynamic slot filling removes the need for brittle manual parsing, allowing the agent to intelligently map conversation data into flow inputs.&lt;br /&gt;&lt;br /&gt;The result is an agent that not only reasons about a problem but also creates the tangible output - in this case, a ready‑to‑review customer proposal based on our branded Advania template. created from a SharePoint‑based template.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;One aspect we didn’t dive into here is billing and capacity consumption, which becomes increasingly important as your agent ecosystem grows. That topic deserves its own space, and we’ll cover it in detail in the final article in this series.&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Next article (coming soon)&lt;/h3&gt;
  &lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Segoe UI, serif; font-size: 14.3px;&quot;&gt;Technique 4 - Leveraging Power Platform and Microsoft 365 capabilities in your agents&lt;/span&gt;&lt;/blockquote&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/posts/default/2473437871415318533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4126985520350746834/posts/default/2473437871415318533'/><link rel='alternate' type='text/html' href='http://www.sharepointnutsandbolts.com/2026/02/Copilot-Studio-Agent-Flows.html' title='Autonomous agents - Technique 3: Provide tools for steps your agent can&#39;t easily handle (like Agent Flows)'/><author><name>Chris O&#39;Brien</name><uri>http://www.blogger.com/profile/10022906552670607366</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlM9GXd8VuRw-0tP2zT6NJR41XHRMVq2yhEaQ_i2VP0tgk74lta7Ug4Ekk0jkYPpS8rCxh4nEax-CnH-_kwmKdKjMMJjAcx_3i2xJFlDl_xE31TWtPZ22nv2iRIBfV1iR9sDXosJO28ZR4DnEvDTT-XntanHhk-sMgZRKp7-tLzKdBqg/s1600/Chris-OBrien-AdvaniaUK-1000.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6QrUxqHUZrUgRt0i4U8IZ2wADlrAtbxwKlrsgZhcO-zAo3x2pEMTaaJ1_YQIK4jfipdaMm8aPWoEJYqwC1sJQNhY5JvOYn0Gek509NJmntHUTqtTl9PdeMG57CmREstxmPdQq3D1LG2cA0Sy_H00x6Ea87UptqlRQFcm6e5B4A2BbaMIbe_AYeEjPCE_/s72-c/Agent%20flows%20-%20two%20flows%20used%20by%20architect%20agent.png" height="72" width="72"/></entry></feed>