{"openapi":"3.1.0","info":{"title":"Checkfront (BYOK) API","version":"0.1.0","description":"Checkfront (BYOK) lets an AI assistant read your own Checkfront data through the Checkfront API with a key you supply (Checkfront API key (the HTTP Basic username)). Read-only: 11 tools (list_bookings, get_booking, list_booking_notes, list_customers, list_products, get_product, list_categories, list_taxes, list_transactions, list_product_inventory, get_company). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-checkfront.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-checkfront/docs"},"termsOfService":"https://connectorbay.com/byok-checkfront/terms"},"servers":[{"url":"https://byok-checkfront.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-checkfront/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_bookings":{"post":{"operationId":"list_bookings","summary":"List bookings with code, dates, guest name and email, totals in cents, status and item summary. Filter by start, end or ","description":"List bookings with code, dates, guest name and email, totals in cents, status and item summary. Filter by start, end or creation time, customer, status or free text. Paged. Use for \"Which Checkfront bookings start next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"start_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only bookings starting after this ISO 8601 time.","title":"Start Min"},"start_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only bookings starting before this ISO 8601 time.","title":"Start Max"},"created_min":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only bookings created after this ISO 8601 time.","title":"Created Min"},"created_max":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only bookings created before this ISO 8601 time.","title":"Created Max"},"customer_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this customer's bookings.","title":"Customer Id"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only bookings with this status ID, for example PAID, PART, PEND, HOLD, VOID.","title":"Status"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text search across bookings.","title":"Search"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return per page.","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"required":["company"],"title":"list_bookingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_booking":{"post":{"operationId":"get_booking","summary":"Get one booking by code with dates, guest name and email, totals in cents, status and item summary. Use for \"Show Checkf","description":"Get one booking by code with dates, guest name and email, totals in cents, status and item summary. Use for \"Show Checkfront booking AXNH-110220\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"booking_code":{"description":"Booking code, for example 'AXNH-110220'.","maxLength":200,"title":"Booking Code","type":"string"}},"required":["company","booking_code"],"title":"get_bookingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_booking_notes":{"post":{"operationId":"list_booking_notes","summary":"List the notes on one booking with date, text and whether it is public. Use for \"What notes are on Checkfront booking AX","description":"List the notes on one booking with date, text and whether it is public. Use for \"What notes are on Checkfront booking AXNH-110220\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"booking_code":{"description":"Booking code, for example 'AXNH-110220'.","maxLength":200,"title":"Booking Code","type":"string"}},"required":["company","booking_code"],"title":"list_booking_notesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_customers":{"post":{"operationId":"list_customers","summary":"List customers with name, email, status and booking stats. Filter by email, phone, name or status. Paged. Use for \"Find ","description":"List customers with name, email, status and booking stats. Filter by email, phone, name or status. Paged. Use for \"Find the Checkfront customer with email jane@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers with this email address.","title":"Email"},"first_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers with this first name.","title":"First Name"},"last_name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers with this last name.","title":"Last Name"},"status":{"anyOf":[{"enum":["active","archived","blocked"],"type":"string"},{"type":"null"}],"default":"active","description":"Customer status.","title":"Status"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return per page.","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"required":["company"],"title":"list_customersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List bookable products with name, SKU, category, type, status, pricing type and summary. Paged. Use for \"Which Checkfron","description":"List bookable products with name, SKU, category, type, status, pricing type and summary. Paged. Use for \"Which Checkfront products are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"status":{"anyOf":[{"enum":["active","draft","archived","unarchived","all"],"type":"string"},{"type":"null"}],"default":"active","description":"Product status.","title":"Status"},"type":{"anyOf":[{"enum":["product","bundle","all","giftcard"],"type":"string"},{"type":"null"}],"default":"product","description":"Product type.","title":"Type"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text search in product names.","title":"Search"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return per page.","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"required":["company"],"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product":{"post":{"operationId":"get_product","summary":"Get one product by ID with details, pricing type, taxes, deposit settings and guest types. Use for \"Show Checkfront prod","description":"Get one product by ID with details, pricing type, taxes, deposit settings and guest types. Use for \"Show Checkfront product 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"product_id":{"description":"Product ID from list_products.","title":"Product Id","type":"integer"}},"required":["company","product_id"],"title":"get_productArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_categories":{"post":{"operationId":"list_categories","summary":"List product categories with name, status and item count. Use for \"Which categories does my Checkfront account have\".","description":"List product categories with name, status and item count. Use for \"Which categories does my Checkfront account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"populated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to list only categories that contain products.","title":"Populated"}},"required":["company"],"title":"list_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_taxes":{"post":{"operationId":"list_taxes","summary":"List configured taxes with rate, type, inclusive flag and enabled state. Use for \"What taxes are set up in Checkfront\".","description":"List configured taxes with rate, type, inclusive flag and enabled state. Use for \"What taxes are set up in Checkfront\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"enabled":{"anyOf":[{"enum":["0","1","all"],"type":"string"},{"type":"null"}],"default":"1","description":"Which taxes: 1 for enabled, 0 for disabled, all for both.","title":"Enabled"}},"required":["company"],"title":"list_taxesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transactions":{"post":{"operationId":"list_transactions","summary":"List payment transactions with booking code, date, amount and fee in cents, type, payment name and status. Filter by sta","description":"List payment transactions with booking code, date, amount and fee in cents, type, payment name and status. Filter by start and end time. Use for \"What payments did Checkfront take last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions after this ISO 8601 time.","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions before this ISO 8601 time.","title":"End"},"type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this transaction type.","title":"Type"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return per page.","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"required":["company"],"title":"list_transactionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_inventory":{"post":{"operationId":"list_product_inventory","summary":"List availability for all products between two dates (inventory per day). Use for \"How much availability do my Checkfron","description":"List availability for all products between two dates (inventory per day). Use for \"How much availability do my Checkfront products have next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"},"start_date":{"description":"First date to check (YYYY-MM-DD).","maxLength":200,"title":"Start Date","type":"string"},"end_date":{"description":"Last date to check (YYYY-MM-DD).","maxLength":200,"title":"End Date","type":"string"}},"required":["company","start_date","end_date"],"title":"list_product_inventoryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_company":{"post":{"operationId":"get_company","summary":"Show the company settings: name, plan, website, locale and currency. Use for \"Which Checkfront account and plan am I on\"","description":"Show the company settings: name, plan, website, locale and currency. Use for \"Which Checkfront account and plan am I on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Your Checkfront account subdomain: the part before .checkfront.com, for example 'mycompany' for mycompany.checkfront.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Company","type":"string"}},"required":["company"],"title":"get_companyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}