# get_availability_calendar

Compare available options and starting prices across an inclusive range of up to 31 local dates. Supply non-date booking params; each day replaces date/checkIn/checkOut. For hotels nights is the stay length. For restaurants supply time and partySize; for salons supply offeringId.

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

Version: 1.1.0
Scope: Directory + business
Authentication: As specified in parameters
Category: Discovery & availability

## Parameters

- **offeringId** (string; optional): Offering ID from list_offerings, belonging to this business.
- **fromDate** (string; required): First local date, inclusive, YYYY-MM-DD.
- **toDate** (string; required): Last local date, inclusive, at most 30 days after fromDate.
- **nights** (integer; optional): Hotel stay length for each candidate check-in date; ignored for other verticals.
- **params** (object; required): Non-date parameters such as adults, partySize/time, or salon offeringId/staffId. Calendar dates replace date/checkIn/checkOut.
- **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.

## 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_availability_calendar",
  "arguments": {
    "fromDate": "2026-11-14",
    "toDate": "2026-11-20",
    "params": {
      "adults": 2
    },
    "businessId": "<businessId>"
  }
}
```

## Input JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "offeringId": {
      "type": "string",
      "minLength": 1,
      "description": "Offering ID from list_offerings, belonging to this business."
    },
    "fromDate": {
      "type": "string",
      "format": "date",
      "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])))$",
      "description": "First local date, inclusive, YYYY-MM-DD."
    },
    "toDate": {
      "type": "string",
      "format": "date",
      "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])))$",
      "description": "Last local date, inclusive, at most 30 days after fromDate."
    },
    "nights": {
      "default": 1,
      "description": "Hotel stay length for each candidate check-in date; ignored for other verticals.",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "params": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Non-date parameters such as adults, partySize/time, or salon offeringId/staffId. Calendar dates replace date/checkIn/checkOut."
    },
    "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."
    }
  },
  "required": [
    "fromDate",
    "toDate",
    "params",
    "businessId"
  ]
}
```

## Output JSON Schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "businessId": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "days": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "available": {
            "type": "boolean"
          },
          "priceFrom": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "amountMinor": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "currency": {
                    "type": "string"
                  },
                  "formatted": {
                    "type": "string"
                  }
                },
                "required": [
                  "amountMinor",
                  "currency",
                  "formatted"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "optionId": {
                  "type": "string"
                },
                "offeringId": {
                  "type": "string"
                },
                "offeringName": {
                  "type": "string"
                },
                "start": {
                  "type": "string"
                },
                "end": {
                  "type": "string"
                },
                "params": {
                  "type": "object",
                  "propertyNames": {
                    "type": "string"
                  },
                  "additionalProperties": {}
                },
                "total": {
                  "type": "object",
                  "properties": {
                    "amountMinor": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    "currency": {
                      "type": "string"
                    },
                    "formatted": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "amountMinor",
                    "currency",
                    "formatted"
                  ],
                  "additionalProperties": false
                },
                "priceIsFrom": {
                  "type": "boolean"
                },
                "bookingPageUrl": {
                  "type": "string"
                }
              },
              "required": [
                "optionId",
                "offeringId",
                "offeringName",
                "start",
                "end",
                "params",
                "total",
                "priceIsFrom",
                "bookingPageUrl"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "date",
          "available",
          "priceFrom",
          "options"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "businessId",
    "timezone",
    "days"
  ],
  "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.
