CONNECT APP
Build with Microsoft Outlook Calendar
Productivity
- OAuth
MCP
Give your agent Microsoft Outlook Calendar tools
Every Microsoft Outlook Calendar action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Microsoft Outlook Calendar account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "microsoft_outlook_calendar",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Accept Event:
const result = await mcp.callTool({
name: "microsoft_outlook_calendar-accept-event",
arguments: {
eventId: "Event ID",
comment: "Comment",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "microsoft_outlook_calendar",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Accept Event:
result = await session.call_tool("microsoft_outlook_calendar-accept-event", {
"eventId": "Event ID",
"comment": "Comment",
})API PROXY
Call the Microsoft Outlook Calendar API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Microsoft Outlook Calendar API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://graph.microsoft.com/v1.0/me",
})
// Any allowed Microsoft Outlook Calendar endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://graph.microsoft.com/v1.0/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tL3YxLjAvbWU?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Microsoft Outlook Calendar actions from your backend
Connect a user's Microsoft Outlook Calendar account once, then run Accept Event on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "microsoft_outlook_calendar-accept-event",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
microsoft_outlook_calendar: { authProvisionId: "apn_xxxxxxx" },
eventId: "Event ID",
comment: "Comment",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="microsoft_outlook_calendar-accept-event",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"microsoft_outlook_calendar": {"authProvisionId": "apn_xxxxxxx"},
"eventId": "Event ID",
"comment": "Comment",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "microsoft_outlook_calendar-accept-event",
"configured_props": {
"microsoft_outlook_calendar": { "authProvisionId": "apn_xxxxxxx" },
"eventId": "Event ID",
"comment": "Comment"
}
}'TOOLS
Microsoft Outlook Calendar actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Accept Event
actionAccept a calendar event invitation and optionally send a response to the organizer. Use List Events or Get Event to find the event ID. See the documentationWritev0.0.2 -
Create Calendar Event
actionCreate an event in the user's default calendar. Supports one-time and recurring events. See the documentation and recurring event example.Writev0.0.16 -
Decline Event
actionDecline a calendar event invitation and optionally propose an alternate time. Use List Events or Get Event to find the event ID. To propose a new time, passproposedNewTimeas a JSON string withstartandendobjects (each withdateTimein ISO 8601 format andtimeZoneas a Windows timezone name, e.g."Pacific Standard Time"). Alternate-time proposals are only valid when the event hasallowNewTimeProposals: trueandsendResponseistrue. See the documentationWritev0.0.2 -
Delete Calendar Event
actionDelete an event in the user's default calendar. See the documentationWritev0.0.11 -
Delete Recurring Event Instance
actionDelete an individual instance of a recurring event in the user's default calendar. See the documentationWritev0.0.8 -
Find Meeting Times
actionSuggest meeting times and locations based on organizer and attendee availability. See the documentationRead-onlyv0.0.3 -
Get Current User
actionReturns the authenticated Microsoft user's ID, display name, email, and principal name via Microsoft Graph. Call this first when the user says 'my calendar', 'my events', or needs to identify themselves as organizer/attendee. Useidormailto filter results from List Events or set the organizer in Create Calendar Event. See the documentation.Read-onlyv0.0.5 -
Get Event
actionRetrieve a calendar event by its Microsoft Graph event ID. Pass theidfrom List Events when you need full details (for examplebody,attendees, orrecurrence) that list responses may omit or truncate. See the documentationRead-onlyv0.0.4 -
Get Free/Busy Schedule
actionGet the free/busy availability information for a collection of users, distributions lists, or resources (rooms or equipment) for a specified time period. See the documentationRead-onlyv0.0.13 -
List Events
actionGet a list of event objects in the user's mailbox. See the documentationRead-onlyv0.1.2 -
List Time Zone Options
actionRetrieves available options for the Time Zone field.Read-onlyv0.0.2 -
Search Contacts
actionSearch for contacts by name from your saved contacts list and retrieve their email addresses. See the documentationRead-onlyv0.0.7 -
Search People
actionRetrieve a collection of person objects ordered by their relevance to the user, based on communication and collaboration patterns and business relationships. See the documentationRead-onlyv0.0.8 -
Tentatively Accept Event
actionTentatively accept a calendar event invitation and optionally propose an alternate time. Use List Events or Get Event to find the event ID. To propose a new time, passproposedNewTimeas a JSON string withstartandendobjects (each withdateTimein ISO 8601 format andtimeZoneas a Windows timezone name, e.g."Pacific Standard Time"). Alternate-time proposals are only valid when the event hasallowNewTimeProposals: trueandsendResponseistrue. See the documentationWritev0.0.2 -
Update Calendar Event
actionUpdate an event in the user's default calendar. See the documentationWritev0.0.11 -
Update Recurring Event Instance
actionUpdate an individual instance of a recurring event in the user's default calendar. See the documentationWritev0.0.8
EVENTS
Microsoft Outlook Calendar triggers
Event sources your backend can deploy for users and receive through a webhook.
-
Calendar Event Deleted (Instant)
triggerEmit new event when a Microsoft Outlook Calendar event is deleted. Because deleted events cannot be re-fetched from the Outlook API after deletion, this trigger emits notification metadata only (not the full event object). The emitted payload includes the deleted event identifier (eventId),changeType,subscriptionId,tenantId, andnotificationTimestamp. Downstream processors must rely solely on this metadata. See the documentationv0.0.1 -
New Calendar Event (Instant)
triggerEmit new event when a new Calendar event is createdv0.0.16 -
New Calendar Event Update (Instant)
triggerEmit new event when a Calendar event is updatedv0.0.16 -
New Upcoming Calendar Event (Polling)
triggerEmit new event based on a time interval before an upcoming calendar event. See the documentationv0.0.9
MULTI-APP
Use Microsoft Outlook Calendar with other popular apps
Most products don't stop at one integration. Pair Microsoft Outlook Calendar with the other apps your users rely on, and ship use cases that span both.
REFERENCE
App details
Reference metadata for the Microsoft Outlook Calendar connector in the Pipedream registry.
- App slug
- microsoft_outlook_calendar
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 16
- Triggers
- 4
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Microsoft Outlook Calendar OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- User.Read
- offline_access
- openid
- profile
- Calendars.ReadWrite
- People.Read