How to integrate Outlook MCP with LlamaIndex

Connect LlamaIndex to Outlook MCP. Download latest attachments from your inbox, create new calendar for project deadlines, and more using natural language, with authentication handled for you.

Outlook logoOutlook
Oauth2S2s Oauth2

Outlook is Microsoft's email and calendaring platform for unified communications and scheduling. It helps users stay organized with powerful email, contacts, and calendar management.

314 Tools5 Triggers

Introduction

This guide walks you through connecting Outlook to LlamaIndex using the Composio tool router. By the end, you'll have a working Outlook agent that can send and reply to emails, search your inbox, schedule calendar events, find meeting times, and manage contacts through natural language commands.

This guide will help you understand how to give your LlamaIndex agent real control over a Outlook account through Composio's Outlook MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

Also integrate Outlook with

TL;DR

Here's what you'll learn:
  • Set your OpenAI and Composio API keys
  • Install LlamaIndex and Composio packages
  • Create a Composio Tool Router session for Outlook
  • Connect LlamaIndex to the Outlook MCP server
  • Build a Outlook-powered agent using LlamaIndex
  • Interact with Outlook through natural language

What is LlamaIndex?

LlamaIndex is a data framework for building LLM applications. It provides tools for connecting LLMs to external data sources and services through agents and tools.

Key features include:

  • ReAct Agent: Reasoning and acting pattern for tool-using agents
  • MCP Tools: Native support for Model Context Protocol
  • Context Management: Maintain conversation context across interactions
  • Async Support: Built for async/await patterns

What is the Outlook MCP server, and what's possible with it?

The Outlook MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Outlook account. It provides structured and secure access to your email, calendars, contacts, and tasks, so your agent can manage messages, schedule events, organize contacts, and track tasks on your behalf.

  • Email communication: Have your agent search and read messages, create drafts, send emails, write replies, forward conversations, and include attachments.
  • Inbox organization: Let the agent create email rules, move or copy messages between folders, update messages, pin chats, and monitor mailbox changes.
  • Calendar and meeting management: Direct your agent to create and search events, review your schedule, find suitable meeting times, and accept, decline, or forward invitations.
  • Contact management: Instruct your agent to create contacts, retrieve contact details, look up colleagues by email, and review your Outlook profile.
  • Task planning: Have your agent review Microsoft To Do lists, list tasks with their status and due dates, and create new tasks in the right list.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Step by step10 STEPS
1

Prerequisites

Before you begin, make sure you have:
  • Python 3.8/Node 16 or higher installed
  • A Composio account with the API key
  • An OpenAI API key
  • A Outlook account and project
  • Basic familiarity with async Python/Typescript
2

Getting API Keys for OpenAI, Composio, and Outlook

OpenAI API key (OPENAI_API_KEY)
  • Go to the OpenAI dashboard
  • Create an API key if you don't have one
  • Assign it to OPENAI_API_KEY in .env
Composio API key and user ID
  • Log into the Composio dashboard
  • Copy your API key from Settings
    • Use this as COMPOSIO_API_KEY
  • Pick a stable user identifier (email or ID)
    • Use this as COMPOSIO_USER_ID
3

Installing dependencies

npm install @composio/llamaindex @llamaindex/openai @llamaindex/tools @llamaindex/workflow dotenv

Create a new Typescript project and install the necessary dependencies:

  • @composio/llamaindex: Composio's LlamaIndex integration
  • @llamaindex/openai: OpenAI LLM integration
  • @llamaindex/tools: MCP client for LlamaIndex
  • @llamaindex/workflow: Workflow framework for LlamaIndex
  • dotenv: Environment variable management
4

Set environment variables

bash
OPENAI_API_KEY=your-openai-api-key
COMPOSIO_API_KEY=your-composio-api-key
COMPOSIO_USER_ID=your-user-id

Create a .env file in your project root:

These credentials will be used to:

  • Authenticate with OpenAI's GPT-5 model
  • Connect to Composio's Tool Router
  • Identify your Composio user session for Outlook access
5

Import modules

import "dotenv/config";
import readline from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";

import { Composio } from "@composio/core";

import { mcp } from "@llamaindex/tools";
import { agent as createAgent } from "@llamaindex/workflow";
import { openai } from "@llamaindex/openai";

dotenv.config();

Create a new file called outlook_llamaindex_agent.ts and import the required modules:

Key imports:

  • dotenv.config loads .env at runtime
  • readline gives us a simple CLI chat loop
  • Composio is the main Composio SDK client
  • mcp connects to an MCP endpoint
  • createAgent builds a LlamaIndex agent
  • openai configures the LLM backend
6

Load environment variables and initialize Composio

const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
const COMPOSIO_API_KEY = process.env.COMPOSIO_API_KEY;
const COMPOSIO_USER_ID = process.env.COMPOSIO_USER_ID;

if (!OPENAI_API_KEY) throw new Error("OPENAI_API_KEY is not set");
if (!COMPOSIO_API_KEY) throw new Error("COMPOSIO_API_KEY is not set");
if (!COMPOSIO_USER_ID) throw new Error("COMPOSIO_USER_ID is not set");

What's happening:

This ensures missing credentials cause early, clear errors before the agent attempts to initialise.

7

Create a Tool Router session and build the agent function

async function buildAgent() {

  console.log(`Initializing Composio client...${COMPOSIO_USER_ID!}...`);
  console.log(`COMPOSIO_USER_ID: ${COMPOSIO_USER_ID!}...`);

  const composio = new Composio({
    apiKey: COMPOSIO_API_KEY,
    provider: new LlamaindexProvider(),
  });

  const session = await composio.create(
    COMPOSIO_USER_ID!,
    {
      toolkits: ["outlook"],
    },
  );

  const mcpUrl = session.mcp.url;
  console.log(`Composio Tool Router MCP URL: ${mcpUrl}`);

  const server = mcp({
    url: mcpUrl,
    clientName: "composio_tool_router_with_llamaindex",
    requestInit: {
      headers: {
        "x-api-key": COMPOSIO_API_KEY!,
      },
    },
    // verbose: true,
  });

  const tools = await server.tools();

  const llm = openai({ apiKey: OPENAI_API_KEY, model: "gpt-5" });

  const agent = createAgent({
    name: "composio_tool_router_with_llamaindex",
        description : "An agent that uses Composio Tool Router MCP tools to perform actions.",
    systemPrompt:
      "You are a helpful assistant connected to Composio Tool Router."+
"Use the available tools to answer user queries and perform Outlook actions." ,
    llm,
    tools,
  });

  return agent;
}

What's happening here:

  • We create a Composio client using your API key and configure it with the LlamaIndex provider
  • We then create a tool router MCP session for your user, specifying the toolkits we want to use (in this case, outlook)
  • The session returns an MCP HTTP endpoint URL that acts as a gateway to all your configured tools
  • LlamaIndex will connect to this endpoint to dynamically discover and use the available Outlook tools.
  • The MCP tools are mapped to LlamaIndex-compatible tools and plug them into the Agent.
8

Create an interactive chat loop

async function chatLoop(agent: ReturnType<typeof createAgent>) {
  const rl = readline.createInterface({ input, output });

  console.log("Type 'quit' or 'exit' to stop.");

  while (true) {
    let userInput: string;

    try {
      userInput = (await rl.question("\nYou: ")).trim();
    } catch {
      console.log("\nAgent: Bye!");
      break;
    }

    if (!userInput) {
      continue;
    }

    const lower = userInput.toLowerCase();
    if (lower === "quit" || lower === "exit") {
      console.log("Agent: Bye!");
      break;
    }

    try {
      process.stdout.write("Agent: ");

      const stream = agent.runStream(userInput);
      let finalResult: any = null;

      for await (const event of stream) {
        // The event.data contains the streamed content
        const data: any = event.data;

        // Check for streaming delta content
        if (data?.delta) {
          process.stdout.write(data.delta);
        }

        // Store final result for fallback
        if (data?.result || data?.message) {
          finalResult = data;
        }
      }

      // If no streaming happened, show the final result
      if (finalResult) {
        const answer =
          finalResult.result ??
          finalResult.message?.content ??
          finalResult.message ??
          "";
        if (answer && typeof answer === "string" && !answer.includes("[object")) {
          process.stdout.write(answer);
        }
      }

      console.log(); // New line after streaming completes
    } catch (err: any) {
      console.error("\nAgent error:", err?.message ?? err);
    }
  }

  rl.close();
}

What's happening:

  • We're creating a direct terminal interface to chat with Outlook
  • The LLM's responses are streamed to the CLI for faster interaction.
  • The agent uses context to maintain conversation history
  • The agent processes the request, selects appropriate Outlook tools, and returns a result
  • We extract the answer from the result data structure and display it to the user
  • You can type 'quit' or 'exit' to stop the chat loop gracefully
  • Agent responses and any errors are streamed in a clear, readable format
9

Define the main entry point

async function main() {
  try {
    const agent = await buildAgent();
    await chatLoop(agent);
  } catch (err) {
    console.error("Failed to start agent:", err);
    process.exit(1);
  }
}

main();

What's happening here:

  • We're orchestrating the entire application flow
  • The agent gets built with proper error handling
  • Then we kick off the interactive chat loop so you can start talking to Outlook
10

Run the agent

npx ts-node llamaindex-agent.ts

When prompted, authenticate and authorise your agent with Outlook, then start asking questions.

Complete Code

Here's the complete code to get you started with Outlook and LlamaIndex:

import "dotenv/config";
import readline from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";

import { Composio } from "@composio/core";
import { LlamaindexProvider } from "@composio/llamaindex";

import { mcp } from "@llamaindex/tools";
import { agent as createAgent } from "@llamaindex/workflow";
import { openai } from "@llamaindex/openai";

dotenv.config();

const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
const COMPOSIO_API_KEY = process.env.COMPOSIO_API_KEY;
const COMPOSIO_USER_ID = process.env.COMPOSIO_USER_ID;

if (!OPENAI_API_KEY) {
    throw new Error("OPENAI_API_KEY is not set in the environment");
  }
if (!COMPOSIO_API_KEY) {
    throw new Error("COMPOSIO_API_KEY is not set in the environment");
  }
if (!COMPOSIO_USER_ID) {
    throw new Error("COMPOSIO_USER_ID is not set in the environment");
  }

async function buildAgent() {

  console.log(`Initializing Composio client...${COMPOSIO_USER_ID!}...`);
  console.log(`COMPOSIO_USER_ID: ${COMPOSIO_USER_ID!}...`);

  const composio = new Composio({
    apiKey: COMPOSIO_API_KEY,
    provider: new LlamaindexProvider(),
  });

  const session = await composio.create(
    COMPOSIO_USER_ID!,
    {
      toolkits: ["outlook"],
    },
  );

  const mcpUrl = session.mcp.url;
  console.log(`Composio Tool Router MCP URL: ${mcpUrl}`);

  const server = mcp({
    url: mcpUrl,
    clientName: "composio_tool_router_with_llamaindex",
    requestInit: {
      headers: {
        "x-api-key": COMPOSIO_API_KEY!,
      },
    },
    // verbose: true,
  });

  const tools = await server.tools();

  const llm = openai({ apiKey: OPENAI_API_KEY, model: "gpt-5" });

  const agent = createAgent({
    name: "composio_tool_router_with_llamaindex",
    description:
      "An agent that uses Composio Tool Router MCP tools to perform actions.",
    systemPrompt:
      "You are a helpful assistant connected to Composio Tool Router."+
"Use the available tools to answer user queries and perform Outlook actions." ,
    llm,
    tools,
  });

  return agent;
}

async function chatLoop(agent: ReturnType<typeof createAgent>) {
  const rl = readline.createInterface({ input, output });

  console.log("Type 'quit' or 'exit' to stop.");

  while (true) {
    let userInput: string;

    try {
      userInput = (await rl.question("\nYou: ")).trim();
    } catch {
      console.log("\nAgent: Bye!");
      break;
    }

    if (!userInput) {
      continue;
    }

    const lower = userInput.toLowerCase();
    if (lower === "quit" || lower === "exit") {
      console.log("Agent: Bye!");
      break;
    }

    try {
      process.stdout.write("Agent: ");

      const stream = agent.runStream(userInput);
      let finalResult: any = null;

      for await (const event of stream) {
        // The event.data contains the streamed content
        const data: any = event.data;

        // Check for streaming delta content
        if (data?.delta) {
          process.stdout.write(data.delta);
        }

        // Store final result for fallback
        if (data?.result || data?.message) {
          finalResult = data;
        }
      }

      // If no streaming happened, show the final result
      if (finalResult) {
        const answer =
          finalResult.result ??
          finalResult.message?.content ??
          finalResult.message ??
          "";
        if (answer && typeof answer === "string" && !answer.includes("[object")) {
          process.stdout.write(answer);
        }
      }

      console.log(); // New line after streaming completes
    } catch (err: any) {
      console.error("\nAgent error:", err?.message ?? err);
    }
  }

  rl.close();
}

async function main() {
  try {
    const agent = await buildAgent();
    await chatLoop(agent);
  } catch (err: any) {
    console.error("Failed to start agent:", err?.message ?? err);
    process.exit(1);
  }
}

main();

Conclusion

You've successfully connected Outlook to LlamaIndex through Composio's Tool Router MCP layer. Key takeaways:
  • Tool Router dynamically exposes Outlook tools through an MCP endpoint
  • LlamaIndex's ReActAgent handles reasoning and orchestration; Composio handles integrations
  • The agent becomes more capable without increasing prompt size
  • Async Python provides clean, efficient execution of agent workflows
You can easily extend this to other toolkits like Gmail, Notion, Stripe, GitHub, and more by adding them to the toolkits parameter.
TOOLS & TRIGGERS

Supported Tools and Triggers

Every Outlook action and event your agent gets out of the box.

Accept calendar event invite

Accepts or tentatively accepts a calendar meeting invite on behalf of a user.

Add event attachment

Adds an attachment to a specific Outlook calendar event.

Add mail attachment

Adds a small file attachment to an Outlook email message identified by its message ID, using an uploaded file or base64-encoded content.

Batch move messages

Batch-move up to 20 Outlook messages to a destination folder in a single Microsoft Graph $batch call.

Batch update messages

Batch-update up to 20 Outlook messages per call using Microsoft Graph JSON batching.

Create Calendar Event

Creates a new Outlook calendar event, ensuring `start_datetime` is chronologically before `end_datetime`.

Cancel user's calendar event

Cancels an organizer's event in a specified user's calendar and sends cancellation notifications to attendees.

Cancel user calendar group event

Tool to cancel an event in a user's calendar within a calendar group and send cancellation notifications to all attendees.

Cancel user calendar event

Cancel a calendar event for a specified user and send cancellation notifications to attendees.

Copy user's mail folder

Tool to copy a user's mail folder and its contents to another folder.

Copy child mail folder

Copies a child mail folder and its contents to a destination folder in the user's mailbox.

Copy message to folder

Tool to copy an email message to another folder within the user's mailbox.

Copy message from child folder

Tool to copy an email message from a child folder (nested folder) to another folder within the user's mailbox.

Copy user message from folder

Tool to copy a message from a specific user's mail folder to another folder.

Count messages

Count all messages, or messages matching an OData filter or KQL search, in an Outlook mailbox.

Create attachment upload session

Tool to create an upload session for large (>3 MB) message attachments.

Create attachment upload session in child folder

Tool to create an upload session for large (>3 MB) message attachments in child mail folders.

Create calendar

Creates a new calendar in the signed-in user's or a specified user's mailbox, for organizing events into a separate calendar.

Create calendar event attachment

Creates a file or item attachment on an event in a specific calendar using the authenticated user's mailbox.

Create calendar event attachment upload session

Tool to create an upload session for large calendar event attachments in a specific calendar.

Create event in specific calendar

Tool to create a new event in a specific calendar for a user.

Create calendar group

Tool to create a new calendar group for a user.

Create user calendar group event attachment

Tool to create a new attachment for an event in a calendar within a calendar group for a specific user.

Create event extension

Tool to create a new open extension on a calendar event within a specific calendar group and calendar.

Create Calendar Permission

Tool to create a calendar permission for a specific calendar in a calendar group.

Create calendar group event attachment upload session

Tool to create an upload session for large calendar group event attachments.

Create contact

Creates a new contact in a Microsoft Outlook user's contacts folder.

Create contact folder

Tool to create a new contact folder in the user's mailbox.

Create user contact folder child folder

Tool to create a child contact folder within a parent contact folder for a specific user.

Create email draft

Creates a new Outlook email draft with subject, body, recipients, and an optional attachment.

Create a draft reply

Creates a draft reply in the specified user's Outlook mailbox to an existing message (identified by a valid `message_id`), optionally including a `comment` and CC/BCC recipients.

Create Email Rule

Create email rule filter with conditions and actions

Create user calendar event attachment

Tool to create a new attachment for a user's calendar event.

Create event attachment upload session

Tool to create an upload session for large calendar event attachments.

Create user mail folder message forward draft

Tool to create a forward draft of an Outlook message for a specific user.

Create Microsoft 365 group event

Create an event in a Microsoft 365 group's default calendar using delegated access.

Create mail folder

Tool to create a new mail folder.

Create message in mail folder

Tool to create a new message in a specific mail folder.

Create mail folder message attachment

Tool to add an attachment to a message in a specific mail folder.

Create mail folder message attachment upload session

Tool to create an upload session for large (>3 MB) message attachments in a specific mail folder.

Create User Mail Folder Message Rule

Tool to create a message rule in a user's mail folder.

Create user calendar event extension

Tool to create a new open extension on a calendar event for a specific user.

Create user calendar permission

Tool to create a new calendar permission for a specific user's calendar.

Create message in user's child folder

Tool to create a new draft message in a child folder within a user's mail folder.

Create user contact in folder

Tool to create a new contact in a specific user's contact folder.

Create user contact extension

Tool to create a new open extension on a contact within a user's contact folder.

Create contact extension

Tool to create a new open extension on a contact within a child folder.

Create contact in child folder

Tool to create a new contact in a child folder within a contact folder.

Create calendar event for user

Create a new calendar event in a user's default calendar.

Create me event attachment upload session

Tool to create an upload session for large event attachments.

Create forward draft

Tool to create a draft forward of an existing message.

Create user Focused Inbox override

Tool to create a Focused Inbox override for a sender identified by SMTP address for a specific user.

Create reply-all draft for user message

Tool to create a draft reply-all to a user's message.

Create reply-all draft for child folder message

Tool to create a draft reply-all to a message in a child folder.

Create message attachment

Tool to create an attachment for a message.

Create reply-all draft in folder

Tool to create a reply-all draft for a message in a mail folder.

Create To Do task

Tool to create a new task in Microsoft To Do within a specified task list.

Create user calendar event attachment

Tool to create a new attachment for an event in a specific user's calendar.

Create calendar in user's calendar group

Tool to create a new calendar in a calendar group for a specific user.

Create user calendar group event

Tool to create a new calendar event in a specific user's calendar within a calendar group.

Create user contact extension

Tool to create a new open extension on a specific user's contact.

Create calendar permission via event

Tool to create a calendar permission via an event's calendar.

Create user message extension

Tool to create a new open extension on a message in a child mail folder for any user.

Create user mail folder message extension

Tool to create a new open extension on a message in a user's mail folder.

Create reply draft for user mail folder message

Tool to create a reply draft for a message in a user's mail folder.

Create user mail folders child folders

Tool to create a new child folder under a specified mail folder for a user.

Create user master category

Tool to create a new category in a user's master category list.

Create user message

Tool to create a new draft message in a user's mailbox.

Create user message attachment

Tool to create an attachment on a message in a user's mail folder.

Decline calendar event

Declines a calendar event invitation, optionally including a comment or proposed new time and controlling whether a response is sent.

Delete calendar

Tool to delete a calendar other than the default calendar from a user's mailbox.

Delete calendar event

Tool to delete a calendar event from a user's Outlook calendar.

Delete user calendar event attachment

Tool to delete an attachment from an event in a specific user's calendar.

Delete event from specific calendar

Tool to delete an event from a specific calendar in Outlook.

Delete user calendar group calendar

Tool to delete a calendar from a specific user's calendar group in Microsoft Outlook.

Delete calendar group

Tool to delete a calendar group other than the default calendar group.

Delete user calendar group calendar event

Tool to delete a calendar event from a specific user's calendar within a calendar group.

Delete calendar group event attachment

Tool to delete an attachment from an event in a calendar within a calendar group.

Permanently Delete Calendar Group Event

Tool to permanently delete a calendar event from a calendar within a calendar group.

Permanently Delete Calendar

Permanently deletes a calendar from a user's mailbox.

Delete User Calendar Group Calendar Permission

Tool to delete a calendar permission from a user's calendar within a calendar group.

Permanently Delete Child Contact Folder

Permanently deletes a child contact folder.

Delete Child Folder Message

Tool to delete a message from a child mail folder in Outlook.

Delete Contact

Permanently deletes an existing contact, using its `contact_id` (obtainable via 'List User Contacts' or 'Get Contact'), from the Outlook contacts of the user specified by `user_id`.

Delete contact folder

Tool to delete a contact folder from the user's mailbox.

Delete user contact folder child folder

Tool to delete a child contact folder from a parent contact folder for a specific user.

Delete Contact from Folder

Tool to permanently delete a contact from a specific contact folder.

Permanently Delete Contact Folder

Permanently deletes a contact folder.

Permanently Delete User Contact from Child Folder

Tool to permanently delete a contact from a child folder for a specific user.

Permanently Delete Contact from Folder

Permanently deletes a contact from a specific contact folder.

Permanently Delete Contact

Permanently deletes a contact.

Delete contact extension

Tool to delete a navigation property extension from a contact within a child folder.

Delete Email Rule

Delete an email rule permanently; deletion is irreversible.

Delete event attachment

Tool to delete an attachment from an Outlook calendar event.

Delete event extension

Tool to delete an open extension from a calendar event in a calendar group.

Permanently Delete Event

Permanently deletes a calendar event.

Delete mail folder

Delete a mail folder from a user's mailbox.

Delete Mail Folder Message

Tool to delete a message from a specific mail folder in Outlook.

Delete master category

Tool to delete a category from the user's master category list.

Delete User Calendars Calendar Permission

Tool to delete a calendar permission from a specific user's calendar.

Delete contact extension

Tool to delete an open extension from a contact.

Delete user contact folder contact extension

Tool to delete an extension from a contact in a user's contact folder.

Delete user event extension

Tool to delete an open extension from a user's calendar event.

Delete user event attachment

Tool to delete an attachment from a user's Outlook event.

Delete inference classification override

Tool to delete an inference classification override for a specific sender.

Delete mail folder child folder

Tool to delete a child mail folder from a parent mail folder.

Permanently Delete Child Mail Folder

Permanently deletes a child mail folder from a parent mail folder.

Delete mail folder message rule

Tool to delete a message rule from a specific mail folder.

Delete user message extension

Delete user message extension

Delete message extension

Tool to delete a navigation property extension from a message within a mail folder.

Delete Message Attachment

Tool to delete an attachment from a message.

Delete Message

Tool to permanently delete an Outlook email message by its message_id.

Delete Message Attachment

Delete an attachment from a message in a mail folder or its child folder.

Delete message extension

Tool to delete an open extension from an Outlook message.

Delete User Calendar Permission

Delete a calendar permission from a user's primary calendar to revoke calendar sharing access.

Delete To Do task

Tool to permanently delete a task from a Microsoft To Do task list.

Permanently Delete User Calendar Event

Tool to permanently delete a calendar event from a specific user's calendar.

Delete Contact from User's Child Folder

Tool to delete a contact from a child folder in a user's contact folder.

Delete User Child Folder Message Permanently

Tool to permanently delete a message from a user's child mail folder in Outlook.

Permanently Delete User Event

Tool to permanently delete a calendar event for a specified user.

Permanently Delete User Mail Folder

Permanently deletes a mail folder for a specific user.

Dismiss user calendar event reminder

Tool to dismiss a reminder for a specific event in a user's calendar.

Dismiss event reminder

Dismiss a reminder for a specific event in the signed-in user's or specified user's default calendar.

Dismiss user calendar group event reminder

Tool to dismiss a reminder for an event in a user's calendar within a calendar group.

Dismiss user event reminder

Tool to dismiss a reminder for a specific user's calendar event.

Download group post attachment

Download raw file content or item-attachment MIME content from a Microsoft 365 group conversation post.

Download Outlook attachment

Downloads a specific file attachment from an email message in a Microsoft Outlook mailbox; the attachment must contain 'contentBytes' (binary data) and not be a link or embedded item.

Download profile photo

Download the signed-in user's profile-photo bytes at a fixed size.

Find Meeting Times

Suggest meeting times based on organizer and attendee availability, time constraints, and duration requirements.

Forward message

Tool to forward a message.

Forward user calendar event

Tool to forward a calendar event from a specific user's calendar to new recipients.

Get event from calendar

Tool to retrieve a specific event from a specified calendar.

Get calendar event attachment

Tool to retrieve a specific attachment from an event within a calendar.

Get calendar from event

Tool to retrieve the parent calendar that contains a specific event.

Get calendar from calendar group

Tool to retrieve a specific calendar from a calendar group in Microsoft Outlook.

Get calendar group

Retrieve the properties of a specific Outlook calendar group by its ID, with optional property selection.

Get event extension

Retrieve an open extension's identifiers and metadata from an event in a specified calendar group and calendar.

Get User Calendar Group Schedule

Retrieve free/busy availability for specified users, distribution lists, or resources over a time period using a user's calendar within a calendar group.

Get user calendar permission

Retrieve a specific permission for a user's default calendar, including the recipient or delegate and permission level.

Get user calendar permission

Tool to retrieve a specific calendar permission from a user's calendar.

Get Calendar Schedule

Tool to get free/busy schedule information for users, distribution lists, or resources.

Get Calendar View

Get events ACTIVE during a time window (includes multi-day events).

Get child folder message

Tool to retrieve a specific email message from a child mail folder.

Get child folder message MIME content

Tool to get the MIME content of a message from a child mail folder.

Get child mail folder

Tool to retrieve a specific child mail folder from a parent mail folder.

Get contact extension

Retrieves an open extension from a contact in a specified contact folder in Microsoft Graph.

Get contact folder

Tool to retrieve a specific contact folder by ID.

List user contact folders

Tool to retrieve contact folders from a specific user's mailbox.

Get contact from folder

Tool to retrieve a specific contact from a contact folder by its ID.

Get contact photo metadata

Retrieve dimensions and optional media metadata for a contact's photo.

Get drafts mail folder

Tool to get the drafts mail folder.

Get drive item

Retrieve metadata for one file or folder from a Microsoft Graph drive.

Get calendar event

Retrieves the full details of a specific calendar event by its ID from a user's Outlook calendar, provided the event exists.

Get event attachment

Retrieve a specific attachment from an Outlook calendar event by attachment ID.

Get event calendar from calendar group

Tool to retrieve the calendar that contains a specific event within a calendar group.

Get Microsoft Graph group

Retrieve a Microsoft Graph group by ID.

Get Microsoft 365 group calendar

Retrieve metadata for a Microsoft 365 group's default calendar using delegated work or school account access.

Get Microsoft 365 group event

Retrieve one calendar event owned by a Microsoft 365 group using delegated access.

Get group post attachment

Retrieve one attachment from a Microsoft 365 group conversation post using delegated access.

Get inference classification

Tool to get inference classification settings for the authenticated user.

Get mailbox settings

Tool to retrieve mailbox settings.

Get mail delta

Retrieve incremental message changes in one mailbox folder, defaulting to Inbox.

Get mail folder

Retrieve one Outlook mail folder by opaque ID or well-known name, optionally selecting only needed metadata such as display name and item counts.

Get mail folder message

Tool to retrieve a specific message from a mail folder by its ID.

Get user mail folder message rule

Tool to retrieve a specific message rule from a user's mail folder.

Get mail tips

Tool to retrieve mail tips such as automatic replies and mailbox full status.

Get master categories

Tool to retrieve the user's master category list.

Get master category

Tool to retrieve properties of a specific category from the user's master category list.

Get user's default calendar

Retrieve properties of the default calendar for the signed-in user or a specified user.

Get user child contact folder

Tool to retrieve a specific child contact folder for a user by ID.

Get contact from child folder

Tool to retrieve a specific contact from a nested child folder within a contact folder.

Get contact photo

Tool to get the binary media content of a contact's profile photo.

Get contact

Retrieves a specific Outlook contact by its `contact_id` from the contacts of a specified `user_id` (defaults to 'me' for the authenticated user).

Get user contact extension

Retrieve the identifying metadata of a specific open extension on a user's contact.

Get user event attachment

Tool to retrieve a specific attachment from a user's calendar event.

Get event calendar

Tool to retrieve the calendar that contains a specific event.

Get message extension

Retrieve identifying details for a specific extension on a message in a user's mail folder.

Get message MIME content

Tool to get the MIME content of a message.

Get user outlook

Tool to retrieve the outlookUser object for a specified user.

Get email message

Retrieve a message by immutable ID from the specified Outlook mailbox.

Get user message extension

Retrieve the identifying metadata of a specific extension on a user's message.

Get attachment from nested folder message

Tool to retrieve a specific attachment from a message located in a nested mail folder structure.

Get Planner plan

Retrieve one Microsoft Planner plan by ID.

Get Outlook profile

Retrieves the Microsoft Outlook profile for a specified user.

Get schedule

Retrieves free/busy schedule information for specified email addresses within a defined time window.

Get supported languages

Tool to retrieve supported languages in the user's mailbox.

Get supported time zones

Get the time zones supported for a user as configured on their mailbox server, using delegated authentication.

Get user by email

Retrieves user details from Microsoft Graph by email address (userPrincipalName).

Get user's calendar

Retrieves properties of a specific user's calendar by calendar ID, with optional property selection.

Get allowed calendar sharing roles for user calendar

Tool to retrieve allowed calendar sharing roles for a specific user on a given calendar.

Get user calendar event

Tool to retrieve a specific calendar event from a user's primary calendar.

Get user calendar group calendar permission

Tool to retrieve a specific calendar permission for a user's calendar within a calendar group.

Get user calendar group event

Tool to retrieve a specific event from a user's calendar within a calendar group.

Get user calendar group event attachment

Tool to retrieve a specific attachment from an event within a calendar group for a user.

Get message from child folder

Tool to retrieve a specific message from a child folder within a user's mail folder hierarchy.

Get event extension

Tool to retrieve a specific open type extension from a user's calendar event by its extension ID or name.

Get user message attachment

Tool to retrieve a specific attachment from a message in a mail folder hierarchy.

List assigned Planner tasks

List Microsoft Planner tasks assigned to the signed-in user.

List user calendar event attachments

Tool to list attachments for a calendar event within a specific calendar for a user.

List user calendar group calendar events

Tool to list events from a specific calendar within a calendar group for a user.

List calendars in calendar group

Tool to retrieve calendars belonging to a specific calendar group.

List user calendar group event attachments

Tool to list attachments for a calendar event within a specific calendar group for a user.

List Outlook calendar groups

List calendar groups in the signed-in user's or a specified user's mailbox, with optional OData queries.

List calendar permissions

Tool to list calendar permissions for a specific calendar within a calendar group.

List Outlook calendars

List calendars in the signed-in user's or a specified user's mailbox, with optional OData queries.

List calendar view delta

Retrieve calendar-view delta events for a specified time range, including changes since a prior sync.

List chat messages

Tool to list messages in a Teams chat.

List Teams chats

Tool to list Teams chats.

List user child folder contacts

Tool to retrieve contacts from a user's child contact folder.

List child folder messages

Tool to list messages from a child folder within a parent mail folder.

List child mail folders

List a mail folder's immediate child folders, with property projection and paging controls.

List contact folder child folders

Tool to list child folders under a specified contact folder.

List contact folders delta

Tool to get contact folders that have been added, deleted, or updated.

List contacts delta

Retrieve incremental changes to contacts in a specified folder for synchronization.

List direct group memberships

List Microsoft Entra groups the signed-in user directly belongs to.

List Email Rules

List inbox email rules for the authenticated or specified user.

List event attachments

Tool to list attachments for a specific Outlook calendar event.

List event calendar permissions

Tool to list calendar permissions for the calendar containing a specific event.

List event instances

Tool to retrieve individual occurrences of a recurring calendar event within a specified time range.

List events

Retrieves events from a user's Outlook calendar via Microsoft Graph API.

List Microsoft 365 group calendar view

List occurrences, exceptions, and single events from a Microsoft 365 group's default calendar in a time window.

List group conversations

List conversation summaries in a Microsoft 365 group.

List group conversation threads

List threads contained in one Microsoft 365 group conversation.

List group thread posts

List posts in one Microsoft 365 group conversation thread.

List Outlook group threads

List conversation threads in a Microsoft 365 group with OData controls.

List Inference Classification Overrides

Tool to list inference classification overrides that control Focused Inbox sender rules.

List license details

List the authenticated user's assigned Microsoft product licenses and service plans.

List mail folder message attachments

Tool to get attachments from a message in a specific mail folder.

List mail folder message rules

Tool to list message rules for a specific mail folder.

List mail folder messages

Compatibility action that lists messages directly contained in one specified mail folder.

List mail folders

List a user's top-level Outlook mail folders with property projection, hidden-folder control, and paging.

List mail folders delta

Retrieve incremental mail-folder changes for a mailbox using delta or continuation tokens.

List user calendar permissions

List sharing permissions and permission levels for a specific user's default calendar.

List message attachments from child folder

Tool to list attachments from a message in a nested child mail folder.

List Messages

List or query Outlook messages in one folder (Inbox by default) or across the mailbox, with filters, search, field selection, sorting, and pagination.

List notification subscriptions

List Microsoft Graph webhook subscriptions visible to the caller.

List organizations

List the connected Microsoft Entra tenant's organization profile.

List Outlook attachments

List attachments for one Outlook email message.

List places

Retrieves a collection of place objects defined in a tenant by type.

List Planner plan buckets

List one page of buckets belonging to a Microsoft Planner basic plan.

List primary calendar permissions

Tool to list calendar permissions from a user's primary calendar.

List event reminders

Tool to retrieve reminders for events occurring within a specified time range.

List sent items messages

List a page of messages in the SentItems folder of the signed-in user or a specified user's mailbox, with optional filtering and sorting.

List To Do task lists

List Microsoft To Do task lists for the signed-in user or a specified user.

List tasks from a To Do list

Tool to list tasks within a specified Microsoft To Do task list, including status and due dates.

List calendar event instances

Tool to retrieve instances (occurrences) of a recurring event from a specific calendar within a date range.

List user calendar event attachments

List a page of attachments for a specific event in a user's calendar.

List event instances

Tool to list instances (occurrences) of a recurring event within a specified date range from a user's calendar in a calendar group.

Get Calendar View from User Calendar Group

Tool to get calendar view from a specific calendar within a calendar group for a user.

List user calendar permissions

Tool to list calendar permissions for a specific user's specific calendar.

List user calendars events

Tool to retrieve events from a specific calendar for a user.

Get calendar view from user's calendar

Tool to get calendar view from a specific user's calendar.

List user contacts

Tool to retrieve contacts from a specific user's mailbox.

List users

List or search Microsoft Entra ID users by plain display name, exact email, or account-property filters.

Move mail folder

Tool to move a mail folder and its contents to another mail folder.

Move child mail folder

Tool to move a child mail folder to a different parent folder.

Move message to folder

Move a message to another folder within the specified user's mailbox.

Move message from child folder

Tool to move a message from a child folder to another destination folder.

Move message from folder

Tool to move a message from a specific mail folder to another destination folder.

Permanently Delete Message

Permanently deletes an Outlook message by moving it to the Purges folder in the dumpster.

Pin message

Tool to pin a message in an Outlook chat.

Query Emails

Query one Outlook mail folder using a validated OData filter, with field selection, sorting, offset, and continuation-token pagination.

Reply all

Send a reply to every recipient selected by Outlook's reply-all semantics.

Reply to Email

Sends a reply to an Outlook email message with optional HTML formatting, attachments, CC, and BCC recipients.

Report message

Report a message as unknown, junk, not junk, or phishing.

Search calendar events

Searches for calendar events in the authenticated user's primary calendar.

Search Outlook messages

Search Outlook messages using KQL syntax.

Search Outlook people

List relevant people, optionally searching by fuzzy name or alias.

Search SharePoint sites

Search the connected Microsoft 365 tenant for SharePoint sites.

Send draft

Tool to send an existing draft message.

Send email

Sends an email with subject, body, recipients, and optional attachments via Microsoft Graph API.

Snooze user calendar group event reminder

Tool to snooze a reminder for a user's calendar event within a calendar group to a new time.

Snooze event reminder

Tool to postpone an event reminder until a new time.

Snooze user calendar event reminder

Tool to snooze a reminder for a calendar event in a specific user calendar to a new time.

Snooze user event reminder

Snoozes a reminder for an event in a user's default calendar to a new time.

Translate Exchange IDs

Translate Outlook resource IDs between supported Exchange ID formats.

Update calendar event

Updates specified fields of an existing Outlook calendar event, including subject, time, attendees, location, categories, and recurrence.

Update event in specific calendar

Tool to update an event in a specific Outlook calendar.

Update calendar group

Tool to update the properties of a calendar group object.

Update Calendar Group Calendar Permission

Tool to update a calendar permission within a calendar group.

Update user calendar in calendar group

Tool to update a calendar within a calendar group in a user's mailbox.

Update user calendar group event

Tool to update an event in a calendar within a calendar group for a specific user.

Update calendar permission

Tool to update calendar permission levels for share recipients or delegates.

Update child folder contact

Tool to update a contact in a child contact folder within a parent contact folder.

Update Contact

Updates an existing Outlook contact, identified by `contact_id` for the specified `user_id`, requiring at least one other field to be modified.

Update user contact folder

Tool to update the properties of a contact folder for a specific user.

Update user contact folder child folder

Tool to update a child folder within a contact folder for a specific user.

Update contact in folder

Tool to update a contact within a specific contact folder.

Update email message

Updates specified properties of an existing email message; `message_id` must identify a valid message within the specified `user_id`'s mailbox.

Update Email Rule

Update an existing email rule

Update event extension

Tool to update an open extension on a calendar event in Microsoft Graph.

Update event extension in calendar group

Tool to update an open extension on a calendar event within a calendar group.

Update Inference Classification

Request an update to a user's Focused Inbox inference classification resource.

Update mailbox settings

Updates mailbox settings for the signed-in user or a specified user, including automatic replies, default time zone, language, and working hours.

Update mail folder

Tool to update the display name of a mail folder.

Update master category

Tool to update the color of a category in the user's master category list.

Update contact extension

Tool to update an open extension on a contact in a contact folder.

Update To Do task

Updates an existing Microsoft To Do task's title, status, importance, due date, reminder, body, completion date, or categories.

Update user calendar

Update the name or color of a user's default calendar.

Update user calendar event

Tool to update an event in a specific user's calendar.

Update user calendar permission

Tool to update calendar permission levels for a specific user's calendar.

Update user calendar by ID

Tool to update properties of a specific calendar by ID for a specific user.

Update user child folder message

Tool to update a message in a child folder within a user's mailbox.

Update user contact extension

Tool to update an open extension on a contact in a user's contact folder.

Update user contact extension

Updates an open extension on a contact in a child folder of a user's contact folder, including its custom properties.

Update user contact extension (v3)

Tool to update an open extension on a contact directly under a user's contacts collection.

Update user events extensions

Tool to update an open extension on a user's calendar event.

Update User Inference Classification Override

Tool to update the classification of messages from a specific sender in a user's Focused Inbox.

Update user mail folder message

Tool to update properties of a message in a specific mail folder for a user.

Update user message extension

Tool to update an open extension on a message within a specific user's mail folder.

Update user mail folder message rule

Tool to update a message rule in a user's mail folder.

Update user mail folder child folder

Tool to update a child folder within a mail folder for a specific user.

Update user message extension

Tool to update an open extension on a user's message.

Who Am I

Return the identity (email, name) of the connected Outlook account.

FAQ

Frequently asked questions

Start with Outlook.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Outlook tool your agent needs.Free to start.

Start building