Connect Chekin to ChatGPT: Manage housings, rooms and police reports
Learn how to connect ChatGPT to Chekin using a managed MCP server. Automate guest registration, OCR analysis, and police reports without custom integration code.
If your team uses Claude, check out our guide on connecting Chekin to Claude and connecting Chekin to AI Agents.
Automating short-term rental compliance and guest registration is not a simple CRUD operation. Managing properties via Chekin means handling strict government reporting deadlines, asynchronous identity verification, and dynamic legal requirements based on a guest's nationality. Giving a Large Language Model (LLM) read and write access to your Chekin instance requires translating these complex constraints into predictable, callable functions.
You either spend weeks building, hosting, and maintaining a custom Model Context Protocol (MCP) server, or you use a managed integration layer that handles the boilerplate for you. This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Chekin, connect it natively to ChatGPT, and execute complex property management workflows using natural language.
The Engineering Reality of the Chekin API
A custom MCP server is a self-hosted integration layer that translates an LLM's tool calls into REST API requests. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against Chekin's API is challenging. Every time you expose these operations to an LLM, your infrastructure must account for domain-specific logic.
Dynamic Guest Schemas Based on Nationality
You cannot hardcode a guest creation form. Depending on the location of the housing and the nationality of the guest, local police authorities require different data fields. An Italian citizen staying in Spain requires different identity document parameters than a US citizen. If your AI agent assumes a static JSON schema for guest creation, the API will reject the payload. Your MCP implementation must expose the chekin_guests_get_schema endpoint so the LLM can dynamically interrogate the required fields before attempting to create the guest record.
Asynchronous OCR and Facial Recognition
Identity verification in Chekin is an asynchronous state machine. When you submit an ID document to Chekin's OCR service, you do not get the parsed data back immediately. Instead, you receive a request ID. Your system (or the LLM) must then poll the API to retrieve the parsed Machine Readable Zone (MRZ) data and validity flags. If your custom server does not handle this asynchronous delay, the LLM will hallucinate the result of the identity scan.
Strict Police Reporting Endpoints
Sending guest data to local authorities is not a generic webhook. Chekin maintains specific, localized endpoints for police and statistical accounts. Triggering a resend of a police check-in requires calling specialized RPC-style endpoints like chekin_reservations_resend_police_check_in. If an LLM tries to update the guest record assuming that triggers a report, you will fall out of compliance.
Factual Note on Rate Limits and 429 Errors
Chekin enforces rate limits on its API. It is critical to understand that Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream Chekin API returns an HTTP 429 (Too Many Requests), Truto passes that error directly to the caller.
Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller (in this case, your AI agent framework or ChatGPT's internal retry logic) is entirely responsible for implementing backoff and retry mechanisms.
How to Generate a Managed MCP Server for Chekin
Instead of building your own proxy to handle Chekin's dynamic schemas and asynchronous jobs, you can use Truto to generate a secure MCP server URL. This server is derived dynamically from the integration's OpenAPI resources and documentation records.
You can generate the MCP server via the Truto UI or programmatically via the API.
Method 1: Via the Truto UI
For teams who want to spin up an MCP server instantly without writing code, the Truto dashboard provides a point-and-click interface.
- Log into Truto and navigate to your connected Chekin Integrated Account page.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can filter by methods (e.g., only
readoperations) or apply tags. - Copy the generated MCP server URL (it will look like
https://api.truto.one/mcp/a1b2c3d4e5f6...).
Method 2: Via the Truto API
If you are provisioning AI workspaces programmatically for your own tenants, you can generate MCP servers via a single API call. This creates a secure token stored in KV infrastructure and returns a ready-to-use endpoint.
// POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp
const response = await fetch(`https://api.truto.one/integrated-account/ab12-cd34-ef56/mcp`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TRUTO_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "Chekin Compliance Agent",
config: {
methods: ["read", "write", "custom"]
},
expires_at: "2026-12-31T23:59:59Z"
})
});
const data = await response.json();
console.log(data.url);
// Returns: "https://api.truto.one/mcp/a1b2c3d4e5f6..."This URL contains a cryptographically hashed token that securely scopes all incoming requests strictly to this specific Chekin tenant.
How to Connect the Chekin MCP Server to ChatGPT
Once you have your MCP server URL, you need to register it with your LLM client. ChatGPT supports MCP natively via its Custom Connectors feature.
Method A: Via the ChatGPT UI
- Copy the MCP server URL you generated in the previous step.
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Ensure Developer mode is toggled on.
- Under MCP servers / Custom connectors, click add.
- Name the connector (e.g., "Chekin Integration").
- Paste your Truto MCP URL into the Server URL field and click Save.
ChatGPT will immediately connect, perform an initialization handshake, and discover all the Chekin tools you authorized.
Method B: Via Manual Config File (SSE Transport)
If you are running a custom agent framework (like LangGraph or CrewAI) or prefer configuration files, you can connect using the Server-Sent Events (SSE) transport wrapper.
Create an mcp.json file in your project root:
{
"mcpServers": {
"chekin_truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/a1b2c3d4e5f6..."
]
}
}
}Your MCP client will execute this command to establish a persistent JSON-RPC 2.0 connection with the Truto infrastructure.
Chekin Hero Tools
Truto automatically generates precise JSON schemas for Chekin's API endpoints. Here are the highest-leverage operations your AI agent can now execute.
list_all_chekin_housings
Retrieves the core property records. Housings dictate the physical location, registration flags, and identity verification settings that cascade down to rooms and reservations.
"Fetch all housings in our Chekin account and tell me which ones currently have identity verification enabled."
chekin_guests_get_schema
This is a critical custom tool. It fetches the dynamic form field definitions required for a specific reservation and guest nationality, ensuring the LLM knows exactly what data to collect.
"Check the dynamic guest schema for reservation ID 88392 assuming the guest is from Germany. What exact ID fields does the local police require?"
create_a_chekin_guest
Creates the actual guest record attached to a reservation. The schema required for this payload depends entirely on the output of the schema tool above.
"Create a new guest record for reservation 88392. The guest's name is Klaus Müller, born 1985-04-12, nationality is DEU, and his passport number is D938472X."
chekin_ocr_analyze_image
Submits an identity document image to Chekin's OCR service. This detects the Machine Readable Zone (MRZ) and begins the background job for identity extraction.
"Submit this passport image file URL to the Chekin OCR analysis tool and give me the tracking ID so we can poll for the MRZ data."
create_a_chekin_reservation
Creates a booking record that ties guests to housings and rooms. This defines the check-in and check-out dates and establishes the default leader for the group.
"Create a reservation at housing ID 'H-102' for next weekend. The primary contact is Sarah Connor, arriving Friday and leaving Sunday."
chekin_reservations_resend_police_check_in
A compliance-critical tool. Forces the API to re-transmit the check-in report to the local authorities if a previous transmission failed or was amended.
"Force resend the police check-in report for reservation ID 44021. The guest updated their passport details this morning and we need to push the new data to the authorities."
Workflows in Action
When you give an AI agent access to these tools, it can chain them together to automate multi-step compliance operations.
Scenario 1: Automated OCR and Guest Registration
If a property manager receives a guest's passport scan via email, the AI agent can fully automate the data extraction and registration process.
"I just got a passport scan for the upcoming booking at the Riverside property. Please submit it for OCR, wait for the result, and create the guest record for that reservation."
Tool Execution Sequence:
list_all_chekin_housings: The agent searches for "Riverside" to find the correcthousing_id.list_all_chekin_reservations: The agent queries upcoming reservations for thathousing_idto get the targetreservation_id.chekin_ocr_analyze_image: Submits the passport scan to the OCR engine and receives adata_id.chekin_ocr_get_analysis: Polls the status using thedata_iduntil the extracted MRZ data (name, document number, birth date) is ready.create_a_chekin_guest: Uses the extracted OCR data to create the official guest record attached to the reservation.
sequenceDiagram
participant AI as ChatGPT
participant Truto as Truto MCP
participant Chekin as Chekin API
AI->>Truto: Call list_all_chekin_housings
Truto->>Chekin: GET /housings
Chekin-->>Truto: Return housing list
Truto-->>AI: Return housing list
AI->>Truto: Call chekin_ocr_analyze_image
Truto->>Chekin: POST /ocr/analyze
Chekin-->>Truto: Return data_id
Truto-->>AI: Return data_id
AI->>Truto: Call chekin_ocr_get_analysis(data_id)
Truto->>Chekin: GET /ocr/analysis/{data_id}
Chekin-->>Truto: Return MRZ parsed data
Truto-->>AI: Return MRZ parsed data
AI->>Truto: Call create_a_chekin_guest
Truto->>Chekin: POST /guests
Chekin-->>Truto: 201 Created
Truto-->>AI: Guest successfully registeredScenario 2: Rectifying Police Compliance Failures
If a property manager gets an alert that a local authority rejected a check-in report because of missing data, the agent can resolve the issue conversationally.
"The police integration for reservation 99382 failed because the guest's residence country was empty. Update the guest record to show they reside in France (FRA), then force resend the police check-in report."
Tool Execution Sequence:
get_single_chekin_reservation_by_id: The agent retrieves the reservation to find the associatedguest_id.update_a_chekin_guest_by_id: The agent updates the specific guest record, settingresidence_countrytoFRA.chekin_reservations_resend_police_check_in: The agent calls the specific compliance endpoint, triggering Chekin to re-transmit the corrected payload to the authorities.
The user receives a confirmation that the data was patched and the compliance payload was successfully pushed out - a process that would normally require clicking through multiple settings panels in the UI.
Security and Access Control
Handing an LLM the ability to read passports and submit legal police reports requires strict access boundaries. Truto provides several mechanisms to lock down your MCP servers:
- Method Filtering: By defining
config.methods: ["read"], you can create a read-only server. The LLM can view housings and reservation statuses, but thecreate_a_chekin_guestandchekin_reservations_resend_police_check_intools will be stripped from the server entirely. - Tag Filtering: You can restrict the server to specific functional domains. Passing
tags: ["compliance"]ensures the LLM only has access to police and statistical account tools, ignoring standard CRM functionality. - Dual Authentication (
require_api_token_auth): By default, possessing the MCP URL is enough to connect. Enabling this flag forces the client to also pass a valid Truto API token in the Authorization header, preventing unauthorized access if the URL is leaked in a log file. - Time-to-Live (
expires_at): You can generate ephemeral MCP servers for temporary agent workflows. Once the ISO timestamp is reached, the underlying infrastructure automatically purges the token and severs access.
Ship Chekin Workflows Without Custom Code
Connecting ChatGPT to Chekin shouldn't require your engineering team to build custom pagination logic, handle asynchronous OCR loops, or write hundreds of lines of JSON schema mapping for identity endpoints. By leveraging a managed MCP infrastructure, you abstract away the API layer entirely.
Your AI agents get instant, native access to property management and compliance workflows. Your engineering team avoids managing OAuth tokens, and you get to market faster.
FAQ
- Does Truto automatically handle API rate limits from Chekin?
- No. Truto passes upstream HTTP 429 errors directly to the caller. Truto normalizes the rate limit information into standard IETF headers, but your AI agent framework or ChatGPT is responsible for implementing retry and exponential backoff logic.
- How do AI agents know what data is required to create a guest?
- Chekin requires different guest fields based on the housing location and guest nationality. The MCP server exposes the `chekin_guests_get_schema` tool, which the LLM uses to dynamically discover required fields before attempting guest creation.
- Can I prevent the AI agent from submitting police reports?
- Yes. When generating the MCP server via the Truto API or UI, you can apply method filtering (e.g., read-only) or tag filtering to strictly exclude compliance tools like `chekin_reservations_resend_police_check_in`.
- How do I connect the Truto MCP server to ChatGPT?
- In ChatGPT, navigate to Settings > Apps > Advanced settings, enable Developer mode, and add a Custom Connector. Paste the MCP URL provided by Truto, and ChatGPT will automatically discover the Chekin tools.