Check Checkfront availability and rates, and manage booking sessions, bookings, customers and notes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a note to a booking, logged under the staff account the API acts on behalf of. Checkfront: POST /api/3.0/booking/{booking_id}/note.
The note text, up to 3000 characters.
The booking code identifying the booking, e.g. CFPP-290317.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Add a note to a booking, logged under the staff account the API acts on behalf of. Checkfront: POST /api/3.0/booking/{booking_id}/note.
| Argument | Type | Description |
|---|---|---|
| body* | string | The note text, up to 3000 characters. |
| booking_id* | string | The booking code identifying the booking, e.g. CFPP-290317. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"booking_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 3000,
"minLength": 1,
"description": "The note text, up to 3000 characters."
},
"booking_id": {
"type": "string",
"minLength": 1,
"description": "The booking code identifying the booking, e.g. CFPP-290317."
}
}
}Start or modify a booking session: add one or more SLIPs (from a rated checkfront_get_item / checkfront_list_items call), replace a line with a new SLIP (line_id + slip), or alter lines (quantity, 'remove', 'optin'/'optout' for package add-ons). Holds the inventory while the session is open; NOTHING is booked until checkfront_create_booking. Returns the session_id to reuse. Checkfront: POST /api/3.0/booking/session.
| Argument | Type | Description |
|---|---|---|
| slip | array | One or more SLIP strings to add, e.g. ["18.20171005X1-adults.1-children.0"]. |
| alter | object | Changes keyed by line_id, e.g. {"3": 5, "2.1": "optin", "1": "remove"} (a number sets the quantity). |
| line_id | string | With a single slip: the session line to REPLACE with it (to change a regular item's options). |
| session_id | string | Existing session to modify. Omit to start a new session. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slip": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "One or more SLIP strings to add, e.g. [\"18.20171005X1-adults.1-children.0\"]."
},
"alter": {
"type": "object",
"description": "Changes keyed by line_id, e.g. {\"3\": 5, \"2.1\": \"optin\", \"1\": \"remove\"} (a number sets the quantity).",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"enum": [
"remove",
"optin",
"optout"
],
"type": "string"
}
]
}
},
"line_id": {
"type": "string",
"description": "With a single slip: the session line to REPLACE with it (to change a regular item's options)."
},
"session_id": {
"type": "string",
"description": "Existing session to modify. Omit to start a new session."
}
}
}Mark a guest as arrived (check in) or departed (check out). Checkfront adds a note under the acting account. VOID and cancelled bookings cannot be checked in or out. Checkfront: POST /api/3.0/booking/{booking_id}/checkin or /checkout.
| Argument | Type | Description |
|---|---|---|
| action | string | 'checkin' (default) or 'checkout'. |
| booking_id* | string | The booking code identifying the booking, e.g. CFPP-290317. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"booking_id"
],
"properties": {
"action": {
"enum": [
"checkin",
"checkout"
],
"type": "string",
"description": "'checkin' (default) or 'checkout'."
},
"booking_id": {
"type": "string",
"minLength": 1,
"description": "The booking code identifying the booking, e.g. CFPP-290317."
}
}
}Commit a booking: from a session_id (built with checkfront_add_to_booking_session) or directly from SLIPs, plus the customer form fields (see checkfront_get_booking_form for which are required — typically customer_name and customer_email). Creates a real reservation that consumes inventory and may notify the customer; change it later with checkfront_update_booking_status. Returns the new booking's ids and any invoice/payment URL. Checkfront: POST /api/3.0/booking/create.
| Argument | Type | Description |
|---|---|---|
| form* | object | Customer form fields, e.g. {"customer_name": "John Smith", "customer_email": "[email protected]"}. Sent as form[customer_name]=…. |
| slip | array | Instead of a session: SLIP strings to book directly. |
| session_id | string | The session holding the items to book. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form"
],
"properties": {
"form": {
"type": "object",
"description": "Customer form fields, e.g. {\"customer_name\": \"John Smith\", \"customer_email\": \"[email protected]\"}. Sent as form[customer_name]=….",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
},
"slip": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Instead of a session: SLIP strings to book directly."
},
"session_id": {
"type": "string",
"description": "The session holding the items to book."
}
}
}Abandon a booking session: 'clear' empties its items, 'end' closes it. Releases the inventory it was holding; no booking is affected. Checkfront: POST /api/3.0/booking/session/clear or /booking/session/end.
| Argument | Type | Description |
|---|---|---|
| action | string | 'end' (default) closes the session; 'clear' empties it. |
| session_id* | string | The session to clear or end. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"action": {
"enum": [
"clear",
"end"
],
"type": "string",
"description": "'end' (default) closes the session; 'clear' empties it."
},
"session_id": {
"type": "string",
"minLength": 1,
"description": "The session to clear or end."
}
}
}Day-by-day available inventory over a date range — for one item (item_ids with a single id), several items, or a whole category. Use it to answer 'which days next month still have space?'. Checkfront: GET /api/3.0/item/{item_id}/cal or GET /api/3.0/item/cal.
| Argument | Type | Description |
|---|---|---|
| end_date | string | Range end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| item_ids | array | Item ids. One id queries that item's calendar; several query them together. |
| start_date | string | Range start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| category_id | integer | Instead of item ids, a category of items. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"end_date": {
"type": "string",
"description": "Range end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"item_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Item ids. One id queries that item's calendar; several query them together."
},
"start_date": {
"type": "string",
"description": "Range start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"category_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Instead of item ids, a category of items."
}
}
}Fetch extended information on one booking — status, dates, customer, form fields, line items and totals. Checkfront: GET /api/3.0/booking/{booking_id}.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking code identifying the booking, e.g. CFPP-290317. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"minLength": 1,
"description": "The booking code identifying the booking, e.g. CFPP-290317."
}
}
}Fetch the customer-details form for a booking (booking_form_ui): every field id (customer_name, customer_email, …), its label, type and whether it is required. Call this before checkfront_create_booking to know which `form` fields to send. Checkfront: GET /api/3.0/booking/form.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Read a booking session — the in-progress 'cart' — with its line items (keyed by line_id), dates, sub_total, tax, total and amount due. Checkfront: GET /api/3.0/booking/session.
| Argument | Type | Description |
|---|---|---|
| session_id* | string | The session_id returned by checkfront_add_to_booking_session. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string",
"minLength": 1,
"description": "The session_id returned by checkfront_add_to_booking_session."
}
}
}Fetch the connected Checkfront account's company configuration — name, URL, plan, currency, timezone, locale and date/time formats. A cheap way to confirm the host and credentials work. Checkfront: GET /api/3.0/company.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch one customer's contact details and their bookings (codes with created dates). Checkfront: GET /api/3.0/customer/{customer_id}.
| Argument | Type | Description |
|---|---|---|
| customer_id* | string | The customer id (e.g. 25) or customer code. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id (e.g. 25) or customer code."
}
}
}Fetch one inventory item's details. Pass start_date / end_date and param quantities (e.g. {"adults": 2}) for a RATED response with availability (rate.status, rate.available), the price breakdown and the SLIP used to book it. For parent/child grouped items, rate the CHILD item. Checkfront: GET /api/3.0/item/{item_id}.
| Argument | Type | Description |
|---|---|---|
| date | string | (rated) Alias of start_date for same-day bookings — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| param | object | Booking parameters (quantities) keyed by the parameter ids configured in your account, e.g. {"adults": 2, "children": 1}. Sent as param[adults]=2. |
| rules | string | 'soft' avoids date-based rule errors; 'off' disables rule checking. |
| item_id* | integer | The item id. |
| end_date | string | (rated) Booking end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| end_time | string | (rated) End time, for hourly bookings. |
| packages | boolean | Include package options. |
| start_date |
List the notes left on bookings across the account (default: the past 30 days), each with its booking code, author account id (0 = customer), date, body and whether it is private. Checkfront: GET /api/3.0/booking/notes.
| Argument | Type | Description |
|---|---|---|
| date | string | Filter by a day (YYYY-MM-DD or ISO-8601) or a whole month (e.g. "2026-09"). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"description": "Filter by a day (YYYY-MM-DD or ISO-8601) or a whole month (e.g. \"2026-09\")."
}
}
}List bookings, newest filters first — by status, customer, dates, item or partner. Each row has the booking code, status, totals (total, tax_total, paid_total), customer name/email, summary and date_desc. Paged (default 100/page); the response's request.pages tells you how many pages exist. Checkfront: GET /api/3.0/booking/index.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| limit | integer | Bookings per page, 1-100 (default 100). |
| item_id | integer | Only bookings containing this item. |
| end_date | string | Booking end (check-out) date. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. ">2026-01-01"). |
| status_id | string | Booking status code, e.g. PEND, HOLD, PART, PAID, WAIT, STOP, VOID. |
| partner_id | string | Only bookings attributed to this partner account. |
| start_date | string | Booking start (check-in) date. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. ">2026-01-01"). |
| customer_id |
List the inventory categories (e.g. Tours, Rentals, Accommodations) with their ids, names, display order and item counts. Checkfront: GET /api/3.0/category.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the date-based events that change price or availability — seasonal rates (SE), specials (SP), discounts (DC), closures (status U) — with their dates, recurrence, pricing rule and the items/categories they apply to. Checkfront: GET /api/3.0/event.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the enabled inventory items (tours, activities, rentals, rooms). With NO dates this is the plain catalogue. Pass start_date (and end_date / param quantities) to get a RATED response: per-item availability, pricing and a SLIP token — the SLIP is what checkfront_add_to_booking_session needs to book the item. Checkfront: GET /api/3.0/item.
| Argument | Type | Description |
|---|---|---|
| date | string | (rated) Alias of start_date for same-day bookings — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| param | object | Booking parameters (quantities) keyed by the parameter ids configured in your account, e.g. {"adults": 2, "children": 1}. Sent as param[adults]=2. |
| rules | string | 'soft' avoids date-based rule errors; 'off' disables rule checking. |
| item_id | string | Comma-separated list of item ids to filter to, e.g. 17,18. |
| keyword | string | Only items whose name contains this keyword. |
| end_date | string | (rated) Booking end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| end_time | string | (rated) End time, for hourly bookings. |
List the staff (and partner) accounts on the Checkfront account — ids, names, emails, login ids and whether enabled. The account_id is what CHECKFRONT_ON_BEHALF takes. Checkfront: GET /api/3.0/account.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Look up customers by exact email, full name or phone number (exact matches; non-unique fields such as name can return several). Results are in the `customers` object. Checkfront: GET /api/3.0/customer.
| Argument | Type | Description |
|---|---|---|
| customer_id | string | Customer code/id. |
| customer_name | string | Exact full name. |
| customer_email | string | Exact customer email address. |
| customer_phone | string | Exact phone number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"customer_id": {
"type": "string",
"description": "Customer code/id."
},
"customer_name": {
"type": "string",
"description": "Exact full name."
},
"customer_email": {
"type": "string",
"description": "Exact customer email address."
},
"customer_phone": {
"type": "string",
"description": "Exact phone number."
}
}
}Set a booking's status — e.g. confirm a pending booking (PAID/PART), put it on HOLD or WAIT(list), or cancel it (VOID/STOP). Reversible: set it back to the previous status the same way. Does NOT record a payment. Optionally triggers the account's customer notifications. Checkfront: POST /api/3.0/booking/{booking_id}/update.
| Argument | Type | Description |
|---|---|---|
| notify | boolean | Send the account's notifications for this change (default false). |
| status_id* | string | The new status code. Defaults: PEND, HOLD, PART, PAID, WAIT, STOP, VOID (plus any custom statuses in Manage > Layout > Statuses). |
| booking_id* | string | The booking code identifying the booking, e.g. CFPP-290317. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"booking_id",
"status_id"
],
"properties": {
"notify": {
"type": "boolean",
"description": "Send the account's notifications for this change (default false)."
},
"status_id": {
"type": "string",
"minLength": 1,
"description": "The new status code. Defaults: PEND, HOLD, PART, PAID, WAIT, STOP, VOID (plus any custom statuses in Manage > Layout > Statuses)."
},
"booking_id": {
"type": "string",
"minLength": 1,
"description": "The booking code identifying the booking, e.g. CFPP-290317."
}
}
}| string |
| (rated) Booking start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| start_time | string | (rated) Start time, for hourly bookings. |
| discount_code | string | (rated) Discount code to apply to the price. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"item_id"
],
"properties": {
"date": {
"type": "string",
"description": "(rated) Alias of start_date for same-day bookings — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"param": {
"type": "object",
"description": "Booking parameters (quantities) keyed by the parameter ids configured in your account, e.g. {\"adults\": 2, \"children\": 1}. Sent as param[adults]=2.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"rules": {
"enum": [
"soft",
"off"
],
"type": "string",
"description": "'soft' avoids date-based rule errors; 'off' disables rule checking."
},
"item_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The item id."
},
"end_date": {
"type": "string",
"description": "(rated) Booking end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"end_time": {
"type": "string",
"description": "(rated) End time, for hourly bookings."
},
"packages": {
"type": "boolean",
"description": "Include package options."
},
"start_date": {
"type": "string",
"description": "(rated) Booking start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"start_time": {
"type": "string",
"description": "(rated) Start time, for hourly bookings."
},
"discount_code": {
"type": "string",
"description": "(rated) Discount code to apply to the price."
}
}
}| integer |
| Only bookings for this customer id. |
| created_date | string | Date the booking was created. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. ">2026-01-01"). |
| last_modified | string | Date the booking last changed — useful for 'changed since' syncs. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. ">2026-01-01"). |
| customer_email | string | Only bookings for this customer email. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Bookings per page, 1-100 (default 100)."
},
"item_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only bookings containing this item."
},
"end_date": {
"type": "string",
"description": "Booking end (check-out) date. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. \">2026-01-01\")."
},
"status_id": {
"type": "string",
"description": "Booking status code, e.g. PEND, HOLD, PART, PAID, WAIT, STOP, VOID."
},
"partner_id": {
"type": "string",
"description": "Only bookings attributed to this partner account."
},
"start_date": {
"type": "string",
"description": "Booking start (check-in) date. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. \">2026-01-01\")."
},
"customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only bookings for this customer id."
},
"created_date": {
"type": "string",
"description": "Date the booking was created. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. \">2026-01-01\")."
},
"last_modified": {
"type": "string",
"description": "Date the booking last changed — useful for 'changed since' syncs. A date string or unix timestamp; prefix with '<' or '>' for before/after (e.g. \">2026-01-01\")."
},
"customer_email": {
"type": "string",
"description": "Only bookings for this customer email."
}
}
}| packages |
| boolean |
| Include package options. |
| available | integer | (rated) Only items with at least this many left in stock. |
| start_date | string | (rated) Booking start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as "today". |
| start_time | string | (rated) Start time, for hourly bookings. |
| category_id | integer | Only items in this category. |
| discount_code | string | (rated) Discount code to apply to the price. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"description": "(rated) Alias of start_date for same-day bookings — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"param": {
"type": "object",
"description": "Booking parameters (quantities) keyed by the parameter ids configured in your account, e.g. {\"adults\": 2, \"children\": 1}. Sent as param[adults]=2.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
},
"rules": {
"enum": [
"soft",
"off"
],
"type": "string",
"description": "'soft' avoids date-based rule errors; 'off' disables rule checking."
},
"item_id": {
"type": "string",
"description": "Comma-separated list of item ids to filter to, e.g. 17,18."
},
"keyword": {
"type": "string",
"description": "Only items whose name contains this keyword."
},
"end_date": {
"type": "string",
"description": "(rated) Booking end date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"end_time": {
"type": "string",
"description": "(rated) End time, for hourly bookings."
},
"packages": {
"type": "boolean",
"description": "Include package options."
},
"available": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "(rated) Only items with at least this many left in stock."
},
"start_date": {
"type": "string",
"description": "(rated) Booking start date — YYYYMMDD, YYYY-MM-DD, or a relative date such as \"today\"."
},
"start_time": {
"type": "string",
"description": "(rated) Start time, for hourly bookings."
},
"category_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only items in this category."
},
"discount_code": {
"type": "string",
"description": "(rated) Discount code to apply to the price."
}
}
}