Microsoft Outlook Calendar
Microsoft Outlook Calendar is a scheduling and time management service that's part of Microsoft 365. This connector enables AI assistants to create, manage, and query calendar events, check availability, find meeting times, and manage multiple calendars through the Microsoft Graph API.
Authentication Types
Microsoft Outlook Calendar supports OAuth 2.0 authentication via the Microsoft identity platform:
- OAuth - Standard OAuth 2.0 authorization flow with PKCE
- Pros: Secure delegated access, per-user calendar access, supports shared calendars, automatic token refresh
- Cons: Requires Azure app registration, user consent needed
- Best for: Production applications, scheduling automation, calendar management
Setting up OAuth
1. Register an Application in Azure Portal
-
Go to Azure Portal
-
Navigate to Microsoft Entra ID (formerly Azure Active Directory)
-
In the left sidebar, click App registrations
-
Click New registration
-
Fill in the application details:
- Name: Choose a descriptive name (e.g., "Webrix Outlook Calendar Integration")
- Supported account types: Select the appropriate option:
- "Accounts in this organizational directory only" for single-tenant apps
- "Accounts in any organizational directory" for multi-tenant apps
- "Accounts in any organizational directory and personal Microsoft accounts" for the widest support
- Redirect URI: Select "Web" and enter:
- For SaaS deployments:
https://{org}.mcp-s.com/{org}/api/auth/callback - For On-Premise deployments:
{connectUrl}/{org}/api/auth/callback
- For SaaS deployments:
-
Click Register
2. Configure API Permissions
-
In your app registration, click API permissions in the left sidebar
-
Click Add a permission
-
Select Microsoft Graph
-
Choose Delegated permissions
-
Add the following permissions based on your needs:
Essential permissions:
User.Read- Sign in and read user profileCalendars.Read- Read user calendars and eventsoffline_access- Maintain access to data (enables refresh tokens)
For creating and managing events:
Calendars.ReadWrite- Create, update, and delete events and calendars
For accessing shared calendars:
Calendars.Read.Shared- Read shared calendarsCalendars.ReadWrite.Shared- Manage shared calendars
-
Click Add permissions
-
Important: Click Grant admin consent for [Your Organization] if you have admin rights.
The Calendars.Read.Shared and Calendars.ReadWrite.Shared permissions allow access to calendars that other users have shared with the authenticated user. These are useful for executive assistants or team scheduling scenarios.
3. Create Client Secret
-
In your app registration, click Certificates & secrets in the left sidebar
-
Under Client secrets, click New client secret
-
Add a description (e.g., "Calendar Connector Secret")
-
Choose an expiration period (recommended: 12 months or 24 months)
-
Click Add
-
Important: Copy the secret Value immediately - it will only be shown once!
Store the client secret securely. If you lose it, you'll need to create a new one.
4. Get Your Credentials
You'll need these values to configure the connector:
- Application (client) ID: Found on the app registration Overview page
- Client Secret: The value you copied in the previous step
5. Configure in Webrix
-
In Webrix, paste the Client ID and Client Secret
-
Select the scopes you need:
- At minimum:
User.Read,Calendars.Read,offline_access - For creating/managing events: Add
Calendars.ReadWrite - For shared calendars: Add
Calendars.Read.Sharedand/orCalendars.ReadWrite.Shared
- At minimum:
-
Click Save Changes
-
Click Connect to authorize the integration
Available Scopes
Read Operations
- User.Read - Required for authentication; reads user profile information
- Calendars.Read - Read-only access to the user's calendars and events
- Calendars.Read.Shared - Read-only access to calendars shared with the user
Write Operations
- Calendars.ReadWrite - Full read/write access to calendars, events, and meeting responses
- Calendars.ReadWrite.Shared - Full read/write access to shared calendars
Essential
- offline_access - Enables refresh tokens to maintain long-term access without re-authentication
Common Use Cases
View Upcoming Schedule
- List events in a date range using calendar view (expands recurring events)
- Get event details including attendees, location, and Teams meeting links
- View events across multiple calendars
Schedule Meetings
- Create events with attendees, location, and Teams online meeting links
- Use "Find Meeting Times" to discover when all attendees are available
- Check free/busy availability with "Get Schedule"
- Set reminders and show-as status (busy, tentative, free)
Manage Events
- Update event details (time, location, attendees)
- RSVP to meeting invitations (accept, tentatively accept, decline)
- Cancel/delete events with automatic attendee notifications
- Reschedule events by updating start/end times
Calendar Organization
- List all user calendars (default, shared, group)
- Create separate calendars for different purposes (work, personal, projects)
- Delete calendars that are no longer needed
Availability Checking
- Check free/busy status for multiple users before scheduling
- Find available time slots across a group of attendees
- View schedule availability in configurable time intervals (15, 30, or 60 minutes)
Working with Time Zones
Calendar events use time zones extensively. When creating or querying events:
- Always specify time zones when creating events using IANA time zone names (e.g.,
America/New_York,Europe/London,Asia/Tokyo) - Calendar View requires UTC timestamps for the
startDateTimeandendDateTimeparameters - All-day events use date-only values without time components
- The connector defaults to
UTCif no time zone is specified
Troubleshooting
Insufficient Privileges Error
Cause: The application doesn't have the required calendar permissions.
Solution:
- Verify that you've added
Calendars.ReadorCalendars.ReadWritepermissions - Grant admin consent if required
- For shared calendars, ensure
Calendars.Read.SharedorCalendars.ReadWrite.Sharedis added
Cannot Create Events
Cause: Missing Calendars.ReadWrite permission or the target calendar is read-only.
Solution:
- Ensure the app has the
Calendars.ReadWritepermission - Verify the user has a licensed Exchange Online mailbox
- Check if the target calendar allows write access (shared calendars may be read-only)
Find Meeting Times Returns No Results
Cause: All potential time slots conflict with attendee schedules, or the search window is too narrow.
Solution:
- Expand the search window (use a wider date range)
- Reduce the required meeting duration
- Make some attendees optional instead of required
- Check that attendee email addresses are correct and within your organization
Recurring Events Not Showing
Cause: Using "List Events" instead of "List Calendar View" which doesn't expand recurring events.
Solution:
- Use the List Calendar View tool instead of List Events — it expands recurring event series into individual occurrences within the specified date range
Access Token Has Expired
Cause: The OAuth access token has expired (typically after 1 hour).
Solution:
- Ensure
offline_accessscope is included to enable automatic token refresh - The connector should automatically refresh tokens using the refresh token
Best Practices
Permissions
- Principle of Least Privilege: Start with
Calendars.Readand addCalendars.ReadWriteonly when needed - Only request shared calendar permissions if your use case requires them
- Use delegated permissions (not application permissions) for user-context operations
Scheduling
- Always use Find Meeting Times or Get Schedule before creating meetings with multiple attendees
- Include time zones in all event creation requests to avoid confusion
- Set appropriate reminders (default: 15 minutes before)
- Use
isOnlineMeeting: trueto automatically generate Teams meeting links
Rate Limits
- Microsoft Graph has throttling limits; implement retry logic for 429 responses
- Use
$selectto request only needed fields when listing events - Use calendar view with date range filters rather than listing all events
Security
- Never expose client secrets in client-side code or version control
- Store tokens securely and rotate client secrets regularly
- Audit application access periodically
API Reference
This connector uses Microsoft Graph API v1.0 to interact with Outlook Calendar. The base URL is https://graph.microsoft.com/v1.0.
Key endpoints used:
/me/events- Event operations/me/calendarView- Calendar view (recurring event expansion)/me/calendars- Calendar management/me/findMeetingTimes- Meeting time suggestions/me/calendar/getSchedule- Free/busy availability
For more information, see the Microsoft Graph Calendar API documentation.
Limitations
- Recurring Events: Creating recurring events with complex patterns is not yet supported through the connector
- Calendar Sharing: Creating new calendar sharing permissions is not supported; only accessing already-shared calendars
- Attachment Support: Adding attachments to calendar events is not yet supported
- Rate Limiting: Microsoft Graph API has throttling limits; the connector does not currently implement retry logic for 429 responses
- Room Booking: Room/resource calendar booking requires additional configuration
Additional Resources
- Microsoft Graph Calendar API
- Outlook Calendar Concepts
- Microsoft Graph Permissions Reference
- Microsoft Graph Explorer - Test API calls interactively