Microsoft

Check Outlook Free/Busy

Shows when a calendar is free or busy between two times.

Unverified

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/json
  • AuthorizationBearer {{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.