Add this first. This tool needs an access token, so add Get Microsoft Graph Access Token to the same bot. The bot calls it first and passes the token in.
What the model is told
Get a Microsoft Graph access token first if you do not already have one. Check when the mailbox is free before offering or booking a meeting. Times are in UTC and use the format 2026-03-14T09:00:00. In availabilityView each character is a 30 minute slot: 0 free, 1 tentative, 2 busy, 3 out of office, 4 working elsewhere. Only tell the customer which times are free, never what the busy slots are.
Request
POSThttps://graph.microsoft.com/v1.0/users/YOUR_MAILBOX/calendar/getSchedule
Headers
Content-Typeapplication/jsonAuthorizationBearer {{accessToken}}
Body
{
"schedules": [
"YOUR_MAILBOX"
],
"startTime": {
"dateTime": "{{startDateTime}}",
"timeZone": "UTC"
},
"endTime": {
"dateTime": "{{endDateTime}}",
"timeZone": "UTC"
},
"availabilityViewInterval": 30
}Parameters
startDateTime stringStart of the period in UTC, like 2026-03-14T09:00:00.endDateTime stringEnd of the period in UTC, like 2026-03-14T17:00:00.accessToken stringThe access_token value returned by Get Microsoft Graph Access Token. Reuse it for the rest of the conversation.
Engage payload
{
"source": "VOICE_AI",
"tool": {
"id": "4420ddef-c097-4660-914a-827150d807f0",
"type": "HTTP_REQUEST",
"label": "Check Outlook Free/Busy",
"name": "check_outlook_free_busy",
"customName": false,
"description": "Get a Microsoft Graph access token first if you do not already have one. Check when the mailbox is free before offering or booking a meeting. Times are in UTC and use the format 2026-03-14T09:00:00. In availabilityView each character is a 30 minute slot: 0 free, 1 tentative, 2 busy, 3 out of office, 4 working elsewhere. Only tell the customer which times are free, never what the busy slots are.",
"parameters": [
{
"name": "startDateTime",
"type": "string",
"description": "Start of the period in UTC, like 2026-03-14T09:00:00."
},
{
"name": "endDateTime",
"type": "string",
"description": "End of the period in UTC, like 2026-03-14T17:00:00."
},
{
"name": "accessToken",
"type": "string",
"description": "The access_token value returned by Get Microsoft Graph Access Token. Reuse it for the rest of the conversation."
}
],
"config": {
"endpoint": {
"method": "POST",
"url": "https://graph.microsoft.com/v1.0/users/YOUR_MAILBOX/calendar/getSchedule"
},
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"body": "{\n \"schedules\": [\n \"YOUR_MAILBOX\"\n ],\n \"startTime\": {\n \"dateTime\": \"{{startDateTime}}\",\n \"timeZone\": \"UTC\"\n },\n \"endTime\": {\n \"dateTime\": \"{{endDateTime}}\",\n \"timeZone\": \"UTC\"\n },\n \"availabilityViewInterval\": 30\n}",
"timeout": null
}
}
}IDs are regenerated on every copy.