# get_business_calendar

OWNER ONLY. Read booking allocations, resources and calendar blocks overlapping an explicit window of at most 93 days. Timestamps must include UTC offsets. Requires business ownership. Calendar feed tokens and connection credentials are never returned.

Canonical: https://bookwise.live/docs/tools/get_business_calendar

Version: 1.1.0
Scope: Directory + business
Authentication: Owner session
Category: Owner operations

## Parameters

- **businessId** (string; required): Published business ID from search_businesses, or the business's booking-page slug (e.g. "studio-nine"); owner calls may also use the business ID shown in the dashboard.
- **from** (string; required): Window start inclusive, with UTC offset.
- **to** (string; required): Window end exclusive, with UTC offset. Maximum 93 days.

## Example MCP call

Replace placeholders with returned IDs and saved credentials. Example dates must be replaced with the customer's future dates.

```json
{
  "name": "get_business_calendar",
  "arguments": {
    "businessId": "<businessId>",
    "from": "2026-11-14T00:00:00+05:30",
    "to": "2026-11-21T00:00:00+05:30"
  }
}
```

## Input JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "businessId": {
      "type": "string",
      "minLength": 1,
      "description": "Published business ID from search_businesses, or the business's booking-page slug (e.g. \"studio-nine\"); owner calls may also use the business ID shown in the dashboard."
    },
    "from": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "description": "Window start inclusive, with UTC offset."
    },
    "to": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "description": "Window end exclusive, with UTC offset. Maximum 93 days."
    }
  },
  "required": [
    "businessId",
    "from",
    "to"
  ]
}
```

## Output JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "businessId": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "kind",
          "active"
        ],
        "additionalProperties": false
      }
    },
    "bookings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "parentBookingId": {
            "type": [
              "string",
              "null"
            ]
          },
          "resourceId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "held",
              "pending_verification",
              "pending_payment",
              "pending_approval",
              "confirmed",
              "cancelled",
              "expired",
              "no_show",
              "completed"
            ]
          },
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "holderName": {
            "type": [
              "string",
              "null"
            ]
          },
          "offeringName": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "parentBookingId",
          "resourceId",
          "status",
          "start",
          "end",
          "holderName",
          "offeringName"
        ],
        "additionalProperties": false
      }
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "resourceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "resourceId",
          "start",
          "end",
          "note"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "businessId",
    "timezone",
    "resources",
    "bookings",
    "blocks"
  ],
  "additionalProperties": false
}
```

## Annotations

```json
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
```

On failure, inspect isError and content; domain errors may include structuredContent.code, retryable, details.fields or alternatives. Annotations are behavior hints, not authorization.
