Skip to Content
ResourcesIntegrationsProductivity & DocsMicrosoft Outlook Calendar

Microsoft Outlook Calendar

Service domainCALENDAR
Microsoft Outlook Calendar icon
Arcade Optimized

Arcade.dev LLM tools for Outlook Calendar

Author:Arcade
Version:6.2.2
Auth:User authorization via the Microsoft auth provider
26tools

Microsoft Outlook Calendar Toolkit

The Microsoft Outlook Calendar toolkit gives LLMs access to Outlook Calendar via the Microsoft Graph API, enabling agents to read, create, edit, and manage calendars, events, scheduling, and work locations on behalf of a user.

Capabilities

  • Calendar management: Create, rename, recolor, delete, share, and revoke access to calendars; list all accessible calendars; inspect per-person sharing permissions.
  • Event lifecycle: Create one-off or recurring events with full recurrence rules, update events in place (attendees, time, location, body, categories, scope), cancel meetings with automatic invitee notification, delete or remove events without notification, and respond to invitations (accept / tentative / decline).
  • Scheduling and availability: Find meeting times for a group (ListMeetingTimes), check free/busy status for one or more people over a window (GetSchedule), and list all recurring series instances.
  • Discovery and search: List events over a time range across one or all calendars, search events by content or property (attendee, organizer, importance, online status), retrieve detailed single-event data including full HTML body and online meeting URL, and track calendar changes since a timestamp or checkpoint.
  • Forwarding and invitations: Forward a meeting invitation to new attendees for meetings you organize or were invited to.
  • Work location and identity: Set or clear your daily office/remote work location, list work locations over a range, and retrieve current user and mailbox environment details (timezone, locale, working hours).

OAuth

This toolkit uses OAuth 2.0 via the Microsoft provider. See the Arcade Microsoft auth provider docs for setup details.

Available tools(26)

26 of 26 tools
Operations
Behavior
Tool nameDescriptionSecrets
Cancel a meeting you organize and email a cancellation to every invitee. Irreversible. Invitees keep a cancelled copy. Refused when nobody else is invited. A date already called off is reported as already cancelled, and nothing is sent for that date. this_and_future ends the series the day before the given date, so invitees get an updated invitation instead, with no note. Use is_organizer, attendees, event_type and series_master_id from an earlier read to choose this tool and scope. Only events in your own mailbox, not shared or delegated calendars.
Create a new calendar in your mailbox, a container you can later add events to; to put a meeting or appointment on a calendar, create an event instead. Returns the new calendar.
Create an event in the user's default calendar, or in another calendar they can edit when calendar_id is given. Each attendee is sent a meeting invitation as soon as the event is created. Pass calendar_id only when the user names a calendar, never matched from the subject; otherwise the event goes on the default calendar. With calendar_id, the result echoes it. On a calendar someone else owns, organizer_note names that person as organizer. Set recurrence for a repeating series: start and end are the first date's, and it needs exactly one of recurrence.end_date, recurrence.occurrence_count or recurrence.never_ends. When the request names no end, ask the user before creating anything. If start_date_time is not a day the pattern produces, the series starts on the first day it does, and first_date_note says so. Every weekday is weekly on monday to friday. A step in working days, such as every third business day, cannot be expressed: tell the user instead of creating a nearby pattern. Book only at a time the user gave or picked, never one you chose. If no time was given, propose times and let the user pick first. body is stored as plain text unless body_format says html, in which case it is stored as markup and rendered rather than shown literally. Copying a description from an event that was read means passing that event's body_html as body with body_format html. Its body field is the same description with the markup stripped, so an agenda copied from there arrives with its links, lists and emphasis gone. Any timezone offset in start_date_time and end_date_time is ignored. The returned start and end are in the mailbox's timezone, and event_time_zone names the zone the event runs in.
Delete one of your own calendars and every event on it. Irreversible: the calendar and its events cannot be recovered. Refused for your main calendar and for calendars someone else owns; to stop seeing someone else's calendar, remove it from your list instead. Returns the calendar as it was before deletion.
Send a meeting invitation to someone who is not invited yet; they join the attendee list and the organizer is told. Works on a meeting you organize or one you were invited to. The attendee list can be edited only on a meeting you organize, so for someone else's meeting this is the way to bring another person in. One date's event_id invites them to that date only; the series' own event_id (a date's series_master_id) invites them to every date. Any bounce goes to the organizer. Refused for a cancelled meeting and an event nobody else is invited to. Name the meeting by event_id or by event_subject. Only events in your own mailbox, and a subject is looked up in your default calendar only.
Read one calendar and what you can do on it: its owner, and whether you can edit its events, share it, and see its private events. Call this before answering whether you can share or edit a calendar; neither a calendar listing nor owning it settles that. A calendar that does not exist and one not shared with you look the same, so not finding it means either. Read-only.
Get one event from any of the user's calendars, with the calendar it is on. event carries the subject, full body, times and the zone the event runs in, location, organizer, attendees, categories, privacy and reminder, plus change_key (the token identifying which version of the event this is), event_type and series_master_id (which together say whether this is a one-off event, one date of a recurring series, or the series itself), and online_meeting_join_url (the link that joins the online meeting, distinct from web_link, which opens the event in Outlook). Both forms of the description come back: body is the plain text with markup stripped, and body_html is the stored markup, whole, which a listing row does not carry at all. Take body_html when the formatting, links or lists matter, and supply it as the body of a new event with body_format set to html, or it is stored as literal text. An event with no description still returns a non-empty body_html, because Outlook stores an empty scaffold; body being empty is what says there is no agenda. Use this to read an event in full, or after a listing to see a body the listing only summarised. start, end, organizer and response_status always come back, with their own fields empty when Microsoft Graph returned no underlying object. An empty start is a value the event is missing, not an event that is missing.
Get free/busy and calendar items in a time window for one or more people. Use it to check a specific time. It does not propose or rank slots across a range, nor count who is free per slot. Times are in time_zone, the user's mailbox zone, which may be a Windows zone name (<Region> Standard Time) rather than an IANA name. On time_zone_source "mailbox_utc" or "fallback", treat times as unconfirmed and check the intended zone before acting. availability_view has one digit per interval from start_date_time: 0 = free or working elsewhere, 1 = tentative, 2 = busy, 3 = out of office. schedule_items can extend past the window. working_hours are on each person's own clock. visibility is "readable" (an item overlaps the window), "free_on_primary_calendar" (no events on the primary calendar; secondary calendars are not visible, so not proof of free), "denied" (no permission), or "error" (see the row's error). Subject, location and is_private appear only when shared with you.
List who can see one of your calendars and at what level, including the level everyone in your organization gets on your main calendar. Only for calendars you own. Returns one row per person, not what you yourself can do on it: everyone in your organization first, then people by address. Not needed before sharing with or removing someone; those return the person's access.
List all calendars the user has access to. Returns the user's own calendars plus any shared or delegated calendars. A coworker's calendar missing from this list may still be shared with you; read it by their address. Use a calendar_id from the results to target a specific calendar in other calendar tools. To find which calendar an event is on, read the event instead.
List attachment metadata for a calendar event. Returns metadata only (name, size, type, etc.). Attachment content is not included. Use this tool when the user wants to know what files are attached to a calendar event or meeting. Works for an event on any of the user's calendars, including shared ones.
Get the events created, changed, cancelled or deleted on one Outlook calendar by when they changed, not when they happen, since a moment or a checkpoint an earlier read returned. Changes to events on any date are included; for what is on the calendar during some days, list its events instead. Rows come most recently changed first, deletions last. Pass since to answer what changed since a day or time; to start keeping track now, pass now, never the current time, and later read with the checkpoint the result returns. A since read cannot see deleted events: only a checkpoint read reports them, by id. Cancelled meetings are left out unless include_cancelled is true. The last page of every read returns a checkpoint, which reading never uses up; a pagination_token means more changes follow, so read on before summarizing. Each event appears once, as it is now, not as a record of what changed: it can appear because only a guest replied, so say only what the row shows. A repeating series appears once, with the dates that now differ from it, moved or cancelled; times are in the mailbox time zone.
List the dates one recurring series falls on between two times. Dates come back earliest first, a date moved on its own at its new time. To see everything on the calendar over a stretch of time, list the calendar for that window instead. An event that does not repeat is refused. Cancelled dates are left out unless include_cancelled is true; pass it to say which weeks are skipped. A date moved outside the window is not in it. A non-empty pagination_token means more dates remain in the window; pass it back to read them, and read every page before saying which dates are skipped. On the last page, message names the series' next date after the window, or says the series has ended.
List everything on the user's calendars between two times. Use this when the request is about a stretch of the calendar -- what is on today, this week, between two clock times -- rather than about a property of one particular event, which a filtered search answers better. Reads the default calendar unless calendar_scope is all (every calendar in the list, shared ones included) or listed. The same meeting can appear once per calendar it sits on. A pagination_token means more of the window remains; pass it for the next page. With none, the window was read in full on searched_calendars, and an empty list means nothing is scheduled there, not on calendars left out: check skipped_calendars or use calendar_scope all before saying the user is free. An empty page reached through a token means the earlier pages held every event. Times are read in the mailbox time zone, or UTC when none is set.
Propose times when a group could meet. Books nothing. Use it to find a time, and to set up or schedule a meeting when no time is given: offer the slots and let the user pick one. Returns up to max_candidates slots, best first. Each slot counts how many attendees are free and names those whose availability is unknown, so it answers per-slot who can make it. Times are in time_zone, the user's mailbox zone. On time_zone_source "mailbox_utc" or "fallback", confirm the zone before stating times. A slot can include busy or out-of-office attendees; say a time works for everyone only when availability_count shows all free. Working elsewhere counts as free. No suggestions is not an error; empty_reason and note explain it.
List where you work each day in a window, oldest day first, from your Outlook work hours and location: office, remote, no_location_chosen (a working day with no place picked) or no_entry. Use it for where you are working on given days; it covers only you, not other people. no_entry means Outlook has no work-plan entry for that day, which happens on non-working days and also when the plan was never set up, so on its own it does not mean you are off. time_off listed on a day means you are off for those hours; a multi-day absence is listed on each day it covers.
Remove a calendar someone else owns from your calendar list. Their calendar, its events and your access stay as they are, and nobody is notified; only your list changes. Refused for your own calendars. To stop someone seeing your calendar, revoke their access instead. Returns the calendar as it was before removal.
Take an event off your calendar without emailing anyone. For a meeting someone else organizes, or your own appointment with no invitees. Other attendees keep their copies. An organizer in your organization sees you declined; one outside it is not told. Refused for a meeting you organize with invitees. Irreversible. For your own repeating appointment, scope this_and_future removes the date given and every later one; earlier dates stay. Use is_organizer, attendees, event_type and series_master_id from an earlier read to choose this tool and scope. A cancelled meeting stays on your calendar with is_cancelled true, and listings hide it unless asked. Only events in your own mailbox, not shared or delegated calendars.
Accept, decline or tentatively accept a meeting someone else invited you to, and tell the organizer. Declining takes the meeting off your calendar unless Show declined events is turned on in Outlook, and once it is gone it cannot be answered again from here. To answer every date of a repeating meeting, pass the series' own event_id (a date's series_master_id) with scope series; declining the series removes every date from your calendar, including dates already accepted. Answering from one date onward is not supported. Refused for a meeting you organize and a cancelled meeting. Name the meeting by event_id or by event_subject. Only events in your own mailbox, and a subject is looked up in your default calendar only.
Remove a person's access to one of your calendars; removing someone from your calendar means this. The result says what everyone in your organization can still see. Only for calendars you own; the access everyone in your organization gets can't be removed here. Returns the access the person had.
Find calendar events by what is true about them: words in them, who attends or organizes them, importance, or whether they are online, including when the next or last such event is. Use this when the request names a property of the event, even within a single day; for a stretch of the calendar with no such property, such as this week, read the time range instead. Set direction to upcoming for a next event and to past for a last one, so the answer is never on the wrong side of now. Without dates, upcoming reaches three months ahead and past six months back; with dates, only events starting inside them are searched. Search the fewest, most distinctive words of query. Searches the default calendar unless calendar_scope says otherwise, and the same meeting can appear once per calendar. A pagination_token means more of the search remains: read it before saying there are no others. When nothing matches, message says how far the search reached; tell the user that and offer other dates or words, never that no such event exists.
Set your Outlook work location to office or remote for one day or a range of days, or clear it back to no location chosen. It changes only where you work each day, not your hours or your calendar. Only working days with a work-plan entry can be set; days without one, such as weekends, are left as they are and reported as not changed. Time off is never changed; a working day that has time off is still set. Returns each day with its outcome; a failed day can be retried on its own.
Share one of your calendars with a person. Sending someone your calendar means sharing it. Every new share or level change emails them; sharing again at the same level sends nothing. Only for calendars you own. Returns the person's access before and after, so there is no need to look it up first.
Rename or recolor one of your calendars. On a calendar someone else owns, this changes only how it appears in your list; the owner's calendar stays as it is. To change who can see a calendar, share it instead. Returns the calendar after the change.
Change one event in the user's calendar, in place. Returns an UpdateEventResult: the updated event in full, plus changed and fields_changed (what was actually written, which is nothing when the event already said what was asked for), change_key, concurrency_checked, applied_scope, online_meeting_preserved, attendees_not_found, and the record of how the event was resolved. Everyone invited is mailed an updated invitation for any change this writes. The exception is an edit that only changes categories or who is optional or required: Outlook applies it without mailing anyone, and notification_note names who was re-typed. Every input left out leaves that part of the event alone, so this changes only what is named and never cancels, deletes or re-creates the event. Editing the description or location keeps the event's online meeting. When asked to remove an online meeting, change nothing and tell the user to remove it in Outlook. Adding or dropping a guest is merged over the people already invited rather than replacing them; set_attendee_emails states the whole invitation list and replaces it. Categories change only this calendar's copy of the event; guests' copies keep their own. For a repeating meeting, scope is required; series takes series_master_id. There is no scope for this date and later. Changing a series' time, time zone, all-day setting or how often it repeats resets every date changed on its own and brings back its cancelled dates, so it is refused while an upcoming date is cancelled; changing only when it ends keeps those dates. recurrence changes only the parts of the repeat rule it names. A meeting that does not repeat takes no scope; there recurrence makes it repeat, keeping its event_id, and needs recurrence.frequency and an end.
Page 1 of 2(25 of 26)
Last updated on