Skip to content

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.

Uday Gajavalli Uday Gajavalli · · 9 min read
Connect Chekin to ChatGPT: Manage housings, rooms and police reports

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.

  1. Log into Truto and navigate to your connected Chekin Integrated Account page.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Select your desired configuration. You can filter by methods (e.g., only read operations) or apply tags.
  5. 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

  1. Copy the MCP server URL you generated in the previous step.
  2. Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
  3. Ensure Developer mode is toggled on.
  4. Under MCP servers / Custom connectors, click add.
  5. Name the connector (e.g., "Chekin Integration").
  6. 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:

  1. list_all_chekin_housings: The agent searches for "Riverside" to find the correct housing_id.
  2. list_all_chekin_reservations: The agent queries upcoming reservations for that housing_id to get the target reservation_id.
  3. chekin_ocr_analyze_image: Submits the passport scan to the OCR engine and receives a data_id.
  4. chekin_ocr_get_analysis: Polls the status using the data_id until the extracted MRZ data (name, document number, birth date) is ready.
  5. 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 registered

Scenario 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:

  1. get_single_chekin_reservation_by_id: The agent retrieves the reservation to find the associated guest_id.
  2. update_a_chekin_guest_by_id: The agent updates the specific guest record, setting residence_country to FRA.
  3. 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 the create_a_chekin_guest and chekin_reservations_resend_police_check_in tools 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.

More from our Blog