Outlook connector
OAuth 2.0 communicationConnect to Microsoft Outlook. Manage emails, calendar events, contacts, and tasks
Outlook connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Outlook credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
Register your Scalekit environment with the Outlook connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:
-
Create the Outlook connection in Scalekit
-
In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Search for Outlook and click Create.

-
In the Configure Outlook Connection dialog, copy the Redirect URI. You will need this when registering your app in Azure.

-
-
Register an application in Azure
-
Sign into portal.azure.com and go to Microsoft Entra ID → App registrations.

-
Click New registration. Enter a name for your app (for example, “Scalekit Outlook Connector”).
-
Under Supported account types, select Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts.
-
Under Redirect URI, select Web and paste the redirect URI you copied from the Scalekit dashboard. Click Register.

-
-
Get your client credentials
-
From the app’s Overview page, copy the Application (client) ID.

-
Go to Certificates & secrets in the left sidebar, then click + New client secret.

-
Enter a description (for example, “Secret for Scalekit Agent Actions”), set an expiry period, and click Add. Copy the secret Value immediately — it is only shown once.

-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to AgentKit > Connections and open the Outlook connection you created.
-
Enter your credentials:
- Client ID — the Application (client) ID from the Azure app overview
- Client Secret — the secret value from Certificates & secrets
- Scopes — select the permissions your app needs (for example,
Calendars.Read,Calendars.ReadWrite,Mail.Read,Mail.ReadWrite,Mail.Send,Contacts.Read,Contacts.ReadWrite,User.Read,offline_access). See Microsoft Graph permissions reference for the full list.
-
Click Save.
-
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'outlook'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Outlook:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'outlook_list_calendar_events',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "outlook"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Outlook:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="outlook_list_calendar_events",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update todo checklist items, todo tasks, todo lists — Update a checklist item (subtask) in a Microsoft To Do task
- List todo checklist items, todo tasks, todo lists — List all checklist items (subtasks) for a specific task in a Microsoft To Do task list
- Get todo checklist items, todo tasks, todo lists — Get a specific checklist item (subtask) from a task in a Microsoft To Do task list
- Delete todo checklist items, todo tasks, todo lists — Permanently delete a checklist item (subtask) from a task in a Microsoft To Do task list
- Create todo checklist items, todo tasks, todo lists — Add a checklist item (subtask) to a specific task in a Microsoft To Do task list
- Message reply to — Reply to an existing email message
Common workflows
Section titled “Common workflows”Proxy API call
const result = await actions.request({ connectionName: 'outlook', identifier: 'user_123', path: '/v1.0/me/messages', method: 'GET',});console.log(result);result = actions.request( connection_name='outlook', identifier='user_123', path="/v1.0/me/messages", method="GET")print(result)Execute a tool
const result = await actions.executeTool({ connector: 'outlook', identifier: 'user_123', toolName: 'outlook_create_calendar_event', toolInput: {},});console.log(result);result = actions.execute_tool( connection_name='outlook', identifier='user_123', tool_name='outlook_create_calendar_event', tool_input={},)print(result)Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
outlook_create_calendar_event
#
Create a new calendar event in the user's Outlook calendar. Supports attendees, recurrence, reminders, online meetings, multiple locations, and event properties. 28 params
Create a new calendar event in the user's Outlook calendar. Supports attendees, recurrence, reminders, online meetings, multiple locations, and event properties.
end_datetime string required No description. end_timezone string required No description. start_datetime string required No description. start_timezone string required No description. subject string required No description. attendees_optional string optional Array of email addresses for optional attendees attendees_required string optional Array of email addresses for required attendees attendees_resource string optional Array of email addresses for resources (meeting rooms, equipment) body_content string optional No description. body_contentType string optional No description. hideAttendees boolean optional When true, each attendee only sees themselves importance string optional Event importance level isAllDay boolean optional Mark as all-day event isOnlineMeeting boolean optional Create an online meeting (Teams/Skype) isReminderOn boolean optional Enable or disable reminder location string optional No description. locations string optional JSON array of location objects with displayName, address, coordinates onlineMeetingProvider string optional Online meeting provider recurrence_days_of_week string optional Days of week for weekly recurrence (comma-separated) recurrence_end_date string optional End date for recurrence (YYYY-MM-DD), required if range_type is endDate recurrence_interval integer optional How often the event recurs (e.g., every 2 weeks = 2) recurrence_occurrences integer optional Number of occurrences, required if range_type is numbered recurrence_range_type string optional How the recurrence ends recurrence_start_date string optional Start date for recurrence (YYYY-MM-DD) recurrence_type string optional Recurrence pattern type reminderMinutesBeforeStart integer optional Minutes before event start to show reminder sensitivity string optional Event sensitivity/privacy level showAs string optional Free/busy status outlook_create_contact
#
Create a new contact in the user's mailbox with name, email addresses, and phone numbers. 7 params
Create a new contact in the user's mailbox with name, email addresses, and phone numbers.
givenName string required First name of the contact surname string required Last name of the contact businessPhones array optional Array of business phone numbers companyName string optional Company name emailAddresses array optional Array of email address objects with 'address' and optional 'name' fields jobTitle string optional Job title mobilePhone string optional Mobile phone number outlook_delete_calendar_event
#
Delete a calendar event by ID. 1 param
Delete a calendar event by ID.
event_id string required No description. outlook_get_attachment
#
Download a specific attachment from an Outlook email message by attachment ID. Returns the full attachment including base64-encoded file content in the contentBytes field. Use List Attachments to get the attachment ID first. 2 params
Download a specific attachment from an Outlook email message by attachment ID. Returns the full attachment including base64-encoded file content in the contentBytes field. Use List Attachments to get the attachment ID first.
attachment_id string required The ID of the attachment to download. message_id string required The ID of the message containing the attachment. outlook_get_calendar_event
#
Retrieve an existing calendar event by ID from the user's Outlook calendar. 1 param
Retrieve an existing calendar event by ID from the user's Outlook calendar.
event_id string required No description. outlook_get_message
#
Retrieve a specific email message by ID from the user's Outlook mailbox, including full body content, sender, recipients, attachments info, and metadata. 1 param
Retrieve a specific email message by ID from the user's Outlook mailbox, including full body content, sender, recipients, attachments info, and metadata.
message_id string required The ID of the message to retrieve. outlook_list_attachments
#
List all attachments on a specific Outlook email message. Returns attachment metadata including ID, name, size, and content type. Use the attachment ID with Get Attachment to download the file content. 1 param
List all attachments on a specific Outlook email message. Returns attachment metadata including ID, name, size, and content type. Use the attachment ID with Get Attachment to download the file content.
message_id string required The ID of the message to list attachments for. outlook_list_calendar_events
#
List calendar events from the user's Outlook calendar with filtering, sorting, pagination, and field selection. 5 params
List calendar events from the user's Outlook calendar with filtering, sorting, pagination, and field selection.
filter string optional OData filter expression to filter events (e.g., startsWith(subject,'All')) orderby string optional OData orderby expression to sort events (e.g., start/dateTime desc) select string optional Comma-separated list of properties to include in the response skip number optional Number of events to skip for pagination top number optional Maximum number of events to return outlook_list_contacts
#
List all contacts in the user's mailbox with support for filtering, pagination, and field selection. 5 params
List all contacts in the user's mailbox with support for filtering, pagination, and field selection.
$filter string optional Filter expression to narrow results (e.g., "emailAddresses/any(a:a/address eq 'user@example.com')") $orderby string optional Property to sort by (e.g., "displayName") $select string optional Comma-separated list of properties to return (e.g., "displayName,emailAddresses,phoneNumbers") $skip integer optional Number of contacts to skip for pagination $top integer optional Number of contacts to return (default: 10) outlook_list_messages
#
List all messages in the user's mailbox with support for filtering, pagination, and field selection. Returns 10 messages by default. 5 params
List all messages in the user's mailbox with support for filtering, pagination, and field selection. Returns 10 messages by default.
$filter string optional Filter expression to narrow results (e.g., "from/emailAddress/address eq 'user@example.com'") $orderby string optional Property to sort by (e.g., "receivedDateTime desc") $select string optional Comma-separated list of properties to return (e.g., "subject,from,receivedDateTime") $skip integer optional Number of messages to skip for pagination $top integer optional Number of messages to return (1-1000, default: 10) outlook_mailbox_settings_get
#
Retrieve the mailbox settings for the signed-in user. Returns automatic replies (out-of-office) configuration, language, timezone, working hours, date/time format, and delegate meeting message delivery preferences. 0 params
Retrieve the mailbox settings for the signed-in user. Returns automatic replies (out-of-office) configuration, language, timezone, working hours, date/time format, and delegate meeting message delivery preferences.
outlook_mailbox_settings_update
#
Update mailbox settings for the signed-in user. Supports configuring automatic replies (out-of-office), language, timezone, working hours, date/time format, and delegate meeting message delivery preferences. Only fields provided will be updated. 7 params
Update mailbox settings for the signed-in user. Supports configuring automatic replies (out-of-office), language, timezone, working hours, date/time format, and delegate meeting message delivery preferences. Only fields provided will be updated.
automaticRepliesSetting object optional Configuration for automatic replies (out-of-office). Set status, internal/external reply messages, and optional scheduled time window. dateFormat string optional Preferred date format string for the mailbox (e.g., 'MM/dd/yyyy', 'dd/MM/yyyy', 'yyyy-MM-dd'). delegateMeetingMessageDeliveryOptions string optional Controls how meeting messages are delivered when a delegate is configured. language object optional Language and locale for the mailbox. Object with locale (e.g., 'en-US') and displayName. timeFormat string optional Preferred time format string for the mailbox (e.g., 'hh:mm tt' for 12-hour, 'HH:mm' for 24-hour). timeZone string optional Preferred time zone for the mailbox (e.g., 'UTC', 'Pacific Standard Time', 'Eastern Standard Time'). workingHours object optional Working hours configuration including days of week, start/end times, and time zone. outlook_reply_to_message
#
Reply to an existing email message. The reply is automatically sent to the original sender and saved in the Sent Items folder. 2 params
Reply to an existing email message. The reply is automatically sent to the original sender and saved in the Sent Items folder.
comment string required Reply message content messageId string required The unique identifier of the message to reply to outlook_search_messages
#
Search messages by keywords across subject, body, sender, and other fields. Returns matching messages with support for pagination. 4 params
Search messages by keywords across subject, body, sender, and other fields. Returns matching messages with support for pagination.
query string required Search query string (searches across subject, body, from, to) $select string optional Comma-separated list of properties to return (e.g., "subject,from,receivedDateTime") $skip integer optional Number of messages to skip for pagination $top integer optional Number of messages to return (1-1000, default: 10) outlook_send_message
#
Send an email message using Microsoft Graph API. The message is saved in the Sent Items folder by default. 7 params
Send an email message using Microsoft Graph API. The message is saved in the Sent Items folder by default.
body string required Body content of the email subject string required Subject line of the email toRecipients array required Array of email addresses to send to bccRecipients array optional Array of email addresses to BCC bodyType string optional Content type of the body (Text or HTML) ccRecipients array optional Array of email addresses to CC saveToSentItems boolean optional Save the message in Sent Items folder (default: true) outlook_todo_checklist_items_create
#
Add a checklist item (subtask) to a specific task in a Microsoft To Do task list. 4 params
Add a checklist item (subtask) to a specific task in a Microsoft To Do task list.
display_name string required The display name of the checklist item. list_id string required The ID of the task list. task_id string required The ID of the task to add the checklist item to. is_checked boolean optional Whether the checklist item is already checked/completed. outlook_todo_checklist_items_delete
#
Permanently delete a checklist item (subtask) from a task in a Microsoft To Do task list. 3 params
Permanently delete a checklist item (subtask) from a task in a Microsoft To Do task list.
checklist_item_id string required The ID of the checklist item to delete. list_id string required The ID of the task list. task_id string required The ID of the task. outlook_todo_checklist_items_get
#
Get a specific checklist item (subtask) from a task in a Microsoft To Do task list. 3 params
Get a specific checklist item (subtask) from a task in a Microsoft To Do task list.
checklist_item_id string required The ID of the checklist item. list_id string required The ID of the task list. task_id string required The ID of the task. outlook_todo_checklist_items_list
#
List all checklist items (subtasks) for a specific task in a Microsoft To Do task list. 2 params
List all checklist items (subtasks) for a specific task in a Microsoft To Do task list.
list_id string required The ID of the task list. task_id string required The ID of the task. outlook_todo_checklist_items_update
#
Update a checklist item (subtask) in a Microsoft To Do task. Only provided fields are changed. 5 params
Update a checklist item (subtask) in a Microsoft To Do task. Only provided fields are changed.
checklist_item_id string required The ID of the checklist item to update. list_id string required The ID of the task list. task_id string required The ID of the task. display_name string optional New display name for the checklist item. is_checked boolean optional Whether the checklist item is checked/completed. outlook_todo_lists_create
#
Create a new Microsoft To Do task list. 1 param
Create a new Microsoft To Do task list.
display_name string required The name of the task list. outlook_todo_lists_delete
#
Permanently delete a Microsoft To Do task list and all its tasks. 1 param
Permanently delete a Microsoft To Do task list and all its tasks.
list_id string required The ID of the task list to delete. outlook_todo_lists_get
#
Get a specific Microsoft To Do task list by ID. 1 param
Get a specific Microsoft To Do task list by ID.
list_id string required The ID of the task list. outlook_todo_lists_list
#
List all Microsoft To Do task lists for the current user. 0 params
List all Microsoft To Do task lists for the current user.
outlook_todo_lists_update
#
Rename a Microsoft To Do task list. 2 params
Rename a Microsoft To Do task list.
display_name string required The new name for the task list. list_id string required The ID of the task list to update. outlook_todo_tasks_create
#
Create a new task in a Microsoft To Do task list with optional body, due date, importance, and reminder. 10 params
Create a new task in a Microsoft To Do task list with optional body, due date, importance, and reminder.
list_id string required The ID of the task list to add the task to. title string required The title of the task. body string optional The body/notes of the task (plain text). categories array optional Array of category names to assign to the task. due_date string optional Due date in YYYY-MM-DD format (e.g. "2026-04-15"). due_time_zone string optional Time zone for the due date (e.g. "UTC", "America/New_York"). Defaults to UTC. importance string optional The importance of the task: low, normal, or high. reminder_date_time string optional Reminder date and time in ISO 8601 format (e.g. "2026-04-15T09:00:00"). reminder_time_zone string optional Time zone for the reminder (e.g. "UTC"). Defaults to UTC. status string optional The status of the task: notStarted, inProgress, completed, waitingOnOthers, or deferred. outlook_todo_tasks_delete
#
Permanently delete a task from a Microsoft To Do task list. 2 params
Permanently delete a task from a Microsoft To Do task list.
list_id string required The ID of the task list. task_id string required The ID of the task to delete. outlook_todo_tasks_get
#
Get a specific task from a Microsoft To Do task list. 2 params
Get a specific task from a Microsoft To Do task list.
list_id string required The ID of the task list. task_id string required The ID of the task. outlook_todo_tasks_list
#
List all tasks in a Microsoft To Do task list with optional filtering and pagination. 5 params
List all tasks in a Microsoft To Do task list with optional filtering and pagination.
list_id string required The ID of the task list. $filter string optional OData filter expression (e.g. "status eq 'notStarted'"). $orderby string optional Property to sort by (e.g. "createdDateTime desc"). $skip integer optional Number of tasks to skip for pagination. $top integer optional Number of tasks to return (default: 10). outlook_todo_tasks_update
#
Update a task in a Microsoft To Do task list. Only provided fields are changed. 9 params
Update a task in a Microsoft To Do task list. Only provided fields are changed.
list_id string required The ID of the task list. task_id string required The ID of the task to update. body string optional New body/notes for the task (plain text). categories array optional Array of category names to assign to the task. due_date string optional Due date in YYYY-MM-DD format. due_time_zone string optional Time zone for the due date. Defaults to UTC. importance string optional The importance: low, normal, or high. status string optional The status: notStarted, inProgress, completed, waitingOnOthers, or deferred. title string optional New title for the task. outlook_update_calendar_event
#
Update an existing Outlook calendar event. Only provided fields will be updated. Supports time, attendees, location, reminders, online meetings, recurrence, and event properties. 30 params
Update an existing Outlook calendar event. Only provided fields will be updated. Supports time, attendees, location, reminders, online meetings, recurrence, and event properties.
event_id string required The ID of the calendar event to update attendees_optional string optional Comma-separated optional attendee emails attendees_required string optional Comma-separated required attendee emails attendees_resource string optional Comma-separated resource emails (meeting rooms, equipment) body_content string optional Event description/body body_contentType string optional Content type of body categories string optional Comma-separated categories end_datetime string optional Event end time in RFC3339 format end_timezone string optional Timezone for end time hideAttendees boolean optional When true, each attendee only sees themselves importance string optional Event importance level isAllDay boolean optional Mark as all-day event isOnlineMeeting boolean optional Create an online meeting (Teams/Skype) isReminderOn boolean optional Enable or disable reminder location string optional Physical or virtual location locations string optional JSON array of location objects with displayName, address, coordinates onlineMeetingProvider string optional Online meeting provider recurrence_days_of_week string optional Days of week for weekly recurrence (comma-separated) recurrence_end_date string optional End date for recurrence (YYYY-MM-DD) recurrence_interval integer optional How often the event recurs (e.g., every 2 weeks = 2) recurrence_occurrences integer optional Number of occurrences recurrence_range_type string optional How the recurrence ends recurrence_start_date string optional Start date for recurrence (YYYY-MM-DD) recurrence_type string optional Recurrence pattern type reminderMinutesBeforeStart integer optional Minutes before event start to show reminder sensitivity string optional Event sensitivity/privacy level showAs string optional Free/busy status start_datetime string optional Event start time in RFC3339 format start_timezone string optional Timezone for start time subject string optional Event title/summary