A cloud-based service included in Microsoft 365, delivering scalable messaging and collaboration features with simplified management and automatic updates.
You can use Microsoft Copilot Studio together with Microsoft Graph, Power Automate, and Exchange Online (rather than “Copilot” by itself). The typical pattern is to create an agent that reads emails through Graph API, extracts actionable items using an AI prompt or classifier, and writes those items into a task store such as Microsoft To Do, Planner, Loop, Dataverse, or a custom list. Copilot helps you generate the agent logic, prompts, and flows, but you still configure permissions and connectors.
At a high level the agent watches for new messages or periodically scans your mailbox, filters for relevant signals like flagged messages, certain senders, deadlines, or natural-language commitments, runs AI extraction to convert email content into structured tasks, and then updates a dynamic to-do list. “Dynamic” usually means the agent updates tasks when threads change, marks tasks done when you reply or meetings occur, and reprioritizes based on due dates or keywords.
Inside Copilot Studio you would create a custom agent and connect it to Exchange Online through Microsoft Graph. You grant Mail.Read or Mail.ReadWrite delegated permissions via Entra ID, then create an action that retrieves recent emails and sends them to an AI step for task extraction. That AI step can be written as a prompt that returns JSON describing tasks, priorities, and due dates. The agent then calls a Power Automate flow or Graph Tasks endpoint to create or update items in Microsoft To Do or Planner.
A simple Graph request to fetch recent emails might look like this:
GET https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$filter=isRead eq false&$top=20
Authorization: Bearer {access_token}
An example AI extraction prompt used inside a Copilot Studio action could look like this:
Extract actionable tasks from the following email.
Return JSON with fields: title, dueDate, priority, sourceMessageId.
If no task exists return an empty array.
Email:
{{emailBody}}
A Power Automate flow step to create a task in Microsoft To Do through Graph could be represented as:
POST https://graph.microsoft.com/v1.0/me/todo/lists/{listId}/tasks
Content-Type: application/json
{
"title": "{taskTitle}",
"dueDateTime": {
"dateTime": "{dueDate}",
"timeZone": "UTC"
},
"importance": "{priority}"
}
If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.
hth
Marcin