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.
Scope & access
Follow the credential fields below. Public discovery does not require a login; private booking operations require the indicated token.
This tool advertises idempotent behavior. If an idempotencyKey is specified, reuse it with identical arguments only when retrying that same intended action.
Parameters
These are the directory endpoint parameters. Business endpoints scope public discovery to the published business; owner calls still require businessId. Inspect tools/list on your endpoint for the exact schema.
offeringIdOptionalOffering ID from list_offerings, belonging to this business.
fromDateRequiredFirst local date, inclusive, YYYY-MM-DD.
toDateRequiredLast local date, inclusive, at most 30 days after fromDate.
nightsOptionalHotel stay length for each candidate check-in date; ignored for other verticals.
paramsRequiredNon-date parameters such as adults, partySize/time, or salon offeringId/staffId. Calendar dates replace date/checkIn/checkOut.
businessIdRequiredPublished 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 call
Pass this object to the MCP client's callTool method. Replace placeholders with returned IDs, saved credentials and the customer's details; use future dates appropriate to their request.
{
"name": "get_availability_calendar",
"arguments": {
"fromDate": "2026-11-14",
"toDate": "2026-11-20",
"params": {
"adults": 2
},
"businessId": "<businessId>"
}
}JSON schemas
Nested fields, formats, enums and constraints are included in the complete schemas. Successful data is returned in structuredContent. SDK input validation and domain errors use different error shapes.
Input schemaJSON Schema
{
"$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 schemaJSON Schema
{
"$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
}Behavior annotationsMCP
{
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}Errors & next steps
Check isError before reading a success response. Follow nextStep where supplied, and never treat a pending booking as confirmed. See Errors and retries and the booking lifecycle for recovery paths.
Back to all tools