Skip to content

Connect GuestPoint to ChatGPT: Search Availability and Book Rooms

Learn how to connect GuestPoint to ChatGPT using Truto's managed MCP server. Execute complex availability searches and automate two-step booking flows.

Uday Gajavalli Uday Gajavalli · · 9 min read
Connect GuestPoint to ChatGPT: Search Availability and Book Rooms

If you are building autonomous support agents or AI-driven hospitality tools, you eventually have to connect GuestPoint to ChatGPT. Your agents need to read real-time property availability, validate rate plans, and write confirmed reservations back to the Property Management System (PMS). If your team uses Claude, check out our guide on connecting GuestPoint to Claude or explore our broader architectural overview on connecting GuestPoint to AI Agents.

Giving a Large Language Model (LLM) read and write access to a legacy hospitality PMS is a serious engineering challenge. You must map deeply nested XML or JSON property data to specific tool definitions, handle two-step booking validation processes, and securely pass authentication payloads. You either spend months building and maintaining a custom Model Context Protocol (MCP) server, or you use a managed infrastructure layer to handle the boilerplate for you.

This guide details exactly how to use Truto to generate a secure, managed MCP server for GuestPoint, connect it natively to ChatGPT, and execute complex hospitality workflows using natural language.

The Engineering Reality of the GuestPoint API

A custom MCP server is a self-hosted translation layer between an LLM's function calls and REST API requests. While the open MCP standard provides a predictable interface for ChatGPT to discover tools, implementing it against PMS APIs is notoriously painful. If you decide to build a custom MCP server for GuestPoint, you own the entire integration lifecycle.

Here are the specific integration challenges that break standard CRUD assumptions when working with the GuestPoint API:

Nested Availability Matrices

Querying availability is not a simple boolean check. When an LLM asks for room availability, the GuestPoint API returns an intensely nested payload. A single property object contains multiple room types. Each room type contains an array of Availabilities per night, UrgencyMessages, and RatePlans. Each rate plan contains its own SellRate and StrikeOutRate. If your MCP server simply dumps this raw nested array into the LLM context window, ChatGPT will rapidly consume its token limit and hallucinate pricing combinations. You must carefully define the query schemas to restrict the date ranges.

Two-Step Reservation Validation

You cannot simply fire a POST request to book a room. GuestPoint requires a strict two-step reservation flow. First, you must submit the proposed booking payload to validate availability and calculate final pricing. Only if this succeeds does the API return a VerificationCode. This code must then be passed into the final reservation creation request. If your custom server fails to instruct the LLM on this required operational sequence, every booking attempt will fail.

Strict Rate Limiting Realities

GuestPoint enforces rate limits, particularly on resource-intensive availability searches spanning wide date ranges. When building a custom integration, developers often mistakenly assume their middleware will absorb these errors. Note this carefully: Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream GuestPoint API returns an HTTP 429 Too Many Requests, Truto passes that exact error directly to the caller.

What Truto does provide is normalization. Truto maps the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) conforming strictly to the IETF specification. The caller - whether that is your custom agent framework or ChatGPT itself - is entirely responsible for reading these headers and executing its own exponential backoff.

The Managed MCP Approach

Instead of building a bespoke server to handle these quirks, Truto provides a dynamic, documentation-driven MCP implementation. When you connect a GuestPoint account, Truto inspects the integration's resource definitions and dynamically derives MCP tools.

A tool only appears in the server if it has a corresponding documentation record in Truto defining the query and body schemas. This acts as a strict quality gate, ensuring ChatGPT only sees endpoints that are fully typed and AI-ready. Every MCP server is scoped to a single integrated account, identified by a cryptographically hashed token in the URL.

Step 1: Generate the GuestPoint MCP Server

You can generate the MCP server URL for GuestPoint using either the Truto dashboard or programmatically via the REST API.

Method A: Via the Truto UI

  1. Navigate to the Integrated Accounts page in your Truto dashboard and select your connected GuestPoint instance.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Select your desired configuration. You can filter the server to only allow read operations, or restrict it to specific tags (e.g., "reservations", "availability").
  5. Copy the generated MCP server URL (it will look like https://api.truto.one/mcp/a1b2c3d4...).

Method B: Via the API

For development teams managing hundreds of connected accounts, you can generate this server programmatically. The API validates the configuration, generates a secure token stored in edge KV infrastructure, and returns the endpoint.

Make an authenticated POST request to /integrated-account/:id/mcp:

curl -X POST https://api.truto.one/integrated-account/<your_integrated_account_id>/mcp \
  -H "Authorization: Bearer <your_truto_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "GuestPoint Booking Assistant",
    "config": {
      "methods": ["read", "write"],
      "tags": ["availability", "reservations"]
    }
  }'

The response contains the secure URL ChatGPT needs to access the tools:

{
  "id": "mcp_12345",
  "name": "GuestPoint Booking Assistant",
  "config": { "methods": ["read", "write"], "tags": ["availability", "reservations"] },
  "expires_at": null,
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f67890"
}

Step 2: Connect the MCP Server to ChatGPT

Once you have the URL, you need to register it as a tool provider for your LLM. ChatGPT uses JSON-RPC 2.0 messages over HTTP POST to communicate with the server.

Method A: Via the ChatGPT UI

If you are using ChatGPT Plus, Team, or Enterprise, you can connect the server directly through the interface:

  1. Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
  2. Toggle Developer mode on (custom connectors require this feature flag).
  3. Under the Custom Connectors or MCP servers section, click Add a new server.
  4. Enter a recognizable name, such as "GuestPoint PMS".
  5. Paste the Truto MCP URL into the Server URL field and click Save.

ChatGPT will immediately ping the /initialize endpoint, read the tool schemas, and make them available to your agent.

Method B: Via Manual Config File

If you are running a local development environment, testing an agent framework, or using the Claude Desktop application as an alternative testing ground, you can connect using a standard JSON configuration file invoking Server-Sent Events (SSE).

Create an mcp_config.json file in your working directory:

{
  "mcpServers": {
    "guestpoint_truto": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "--url",
        "https://api.truto.one/mcp/a1b2c3d4e5f67890"
      ]
    }
  }
}

Your MCP client uses this configuration to route function calls securely through Truto's proxy API handlers, normalizing pagination and headers before reaching GuestPoint.

Security and Access Control

Exposing your core property management system to a non-deterministic AI model requires strict governance. Truto provides several mechanisms to lock down the MCP server payload:

  • Method Filtering: The config.methods array allows you to restrict the server to specific operational categories. Setting methods: ["read"] ensures ChatGPT can query availability but cannot accidentally mutate reservations.
  • Tag Filtering: Use config.tags to limit the server to specific functional domains. If you tag your availability endpoints with "search", setting tags: ["search"] strips all unrelated tools from the LLM's context window.
  • Expiration Policies: You can define a strict time-to-live by providing an ISO datetime string to expires_at. The underlying token is automatically purged from edge storage once the timestamp passes.
  • Secondary Authentication: Setting require_api_token_auth: true mandates that the caller provides a valid Truto API token in the Authorization header. Possession of the URL alone is no longer sufficient to execute tool calls.

GuestPoint Hero Tools for ChatGPT

Truto automatically translates GuestPoint's raw endpoints into descriptive, snake_case tools that an LLM can easily invoke. Here are the highest-leverage tools available for hospitality workflows.

list_all_guest_point_properties_availabilities

This is the core search tool. It retrieves availability and rate data for a specific property across designated dates. It returns deeply nested RatePlans, night-by-night SellRate data, and current Availabilities for every room type.

"Check room availability at property ID 9081 for this coming weekend for 2 adults. Break down the nightly sell rates for the cheapest room type."

list_all_guest_point_properties_bestavailablerates

Instead of parsing the massive matrix returned by the full availability endpoint, this tool optimizes for price queries. It returns only the single cheapest available rate for each day across a specified date range.

"Find the best available rates at the downtown property for the first week of next month. Output a simple table of dates and prices."

create_a_guest_point_properties_extra

This endpoint retrieves eligible extras, addons, and upsells (like late checkout, breakfast packages, or parking) that are available for a specific date range and room combination.

"The guest is looking to add a breakfast package to their stay from May 10th to May 12th. What extras are available for room type ID 45?"

update_a_guest_point_properties_reservation_by_id

In GuestPoint, making a booking requires a validation step. This tool acts as the validation mechanism. You pass the proposed reservation details, and it returns final pricing calculations, confirms inventory, and generates a critical VerificationCode required for the final booking.

"Validate a reservation for a Queen Room (ID 12) for 2 adults next Friday night. Make sure to capture the VerificationCode from the response."

create_a_guest_point_properties_reservation

This is the final execution step. It submits the validated payload, including the VerificationCode, the RoomStays array, and guest details, to officially create the reservation in GuestPoint. It returns the confirmation number.

"Using the VerificationCode we just received, finalize the reservation for John Doe in the Queen Room. Give me the final confirmation number."

For a complete list of endpoints, required parameters, and JSON schemas, view the full inventory on the GuestPoint integration page.

Workflows in Action

Once connected, ChatGPT can sequence these tools to orchestrate complex hospitality operations without human intervention. Here are two technical workflows demonstrating how an LLM handles PMS interactions.

Workflow 1: The Booking Validation Loop

When a guest attempts to finalize a reservation via a chat interface, the agent must check live inventory, calculate final pricing, and secure the booking.

"I want to book a King Suite for two adults arriving on October 12th and departing October 14th at property ID 102. If it's available, book it under the name Sarah Connor."

  1. ChatGPT calls list_all_guest_point_properties_availabilities to verify the King Suite is open on Oct 12 and 13.
  2. Confirming availability, the LLM constructs the booking payload and calls update_a_guest_point_properties_reservation_by_id to validate the pricing matrix.
  3. The GuestPoint API returns the total cost, tax breakdown, and the temporary VerificationCode.
  4. ChatGPT maps that VerificationCode into the final payload and calls create_a_guest_point_properties_reservation to commit the booking to the ledger, returning the ConfNum to the user.
sequenceDiagram
    participant User as Guest
    participant ChatGPT as ChatGPT
    participant MCP as Truto MCP
    participant GuestPoint as GuestPoint API
    
    User->>ChatGPT: "Book a King Suite for Oct 12-14..."
    ChatGPT->>MCP: Call list_all_guest_point_properties_availabilities
    MCP->>GuestPoint: GET /availability<br>?startDate=...&endDate=...
    GuestPoint-->>MCP: Availability and RatePlans
    MCP-->>ChatGPT: JSON data
    ChatGPT->>MCP: Call update_a_guest_point_properties_reservation_by_id
    MCP->>GuestPoint: PUT /reservation (Validation Request)
    GuestPoint-->>MCP: Returns VerificationCode
    MCP-->>ChatGPT: VerificationCode
    ChatGPT->>MCP: Call create_a_guest_point_properties_reservation
    MCP->>GuestPoint: POST /reservation<br>with VerificationCode
    GuestPoint-->>MCP: ConfNum: 88472
    MCP-->>ChatGPT: Confirmation ID
    ChatGPT-->>User: "You are confirmed! Confirmation #88472."

Workflow 2: Automated Upselling and Rate Retrieval

Front desk or sales teams often need rapid access to the cheapest rates across properties to answer customer inquiries quickly.

"A corporate group is asking for our cheapest rates next week at the seaside property. Also, tell me if we can offer them discounted parking as an extra."

  1. ChatGPT calls list_all_guest_point_properties_bestavailablerates passing the requested date range, pulling the absolute floor price for each day.
  2. The LLM then calls create_a_guest_point_properties_extra targeting the specific dates to pull the list of eligible add-ons.
  3. ChatGPT synthesizes the JSON arrays into a formatted pricing table and a list of available extras (like parking), saving the sales team from clicking through complex PMS screens.

Final Thoughts on Connecting GuestPoint to AI Agents

Writing the boilerplate code to handle GuestPoint's nested availability arrays, rate limit headers, and strict two-step validation logic drains engineering time. By treating integrations as dynamic configurations rather than custom code, you can move significantly faster.

Truto abstracts away the infrastructure burden of hosting an MCP server, normalizing the protocol layer so your team can focus on agent reasoning and prompt design.

FAQ

How do I handle GuestPoint rate limits when an LLM searches availability?
Truto does not retry or apply backoff on rate limit errors. When GuestPoint returns an HTTP 429, Truto passes the error back with standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your application or LLM framework must implement its own exponential backoff logic.
Can I prevent ChatGPT from accidentally making reservations?
Yes. When creating the Truto MCP server, you can apply method filtering by setting config.methods to ["read"]. This restricts the server to GET operations like availability searches, preventing the agent from executing write operations.
Why does GuestPoint require two steps to book a room?
GuestPoint requires a reservation validation step. First, you submit the booking details to validate pricing and availability, which returns a VerificationCode. You must then pass this VerificationCode in the final reservation creation request to complete the booking.
How do I require authentication for the MCP server URL?
Set require_api_token_auth to true when generating the MCP server in Truto. This forces the MCP client to pass a valid Truto API token in the Authorization header, adding a second layer of security beyond the hashed URL token.

More from our Blog