Make.com Rizerve Automations

Coming Soon

Rizerve WordPress Plugin

Coming Soon

Travel Payouts

Travel Payouts

Rizerve MCP Server

Install

git clone https://github.com/panoskiriakopoulos-sys/rizerve-mcp-server.git
cd rizerve-mcp-server
npm install && npm run build

The Rizerve MCP Server gives AI assistants direct, operational access to the Rizerve direct booking platform through natural language. Built on the Model Context Protocol (MCP) — the open standard that allows AI models to connect to external tools and data sources — this server exposes 19 tools covering properties, bookings, availability, iCal sync, analytics, webhooks, and guest management. It works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.

Key Takeaways

What You Can Do With the Rizerve MCP Server

Once connected, an MCP-enabled AI assistant can manage a Rizerve account entirely through conversation — no dashboard required for routine operations. The server translates natural language requests into Rizerve API calls and returns structured results the model can read, summarize, or act on.

Practical examples of what a connected assistant can handle:

Quick Start

Requirements

Node.js 18 or higher is required. A Rizerve account and API key are required — the key is available in the Rizerve Dashboard under Integrations → API Access and follows the format rz_xxxxxxxxxxxxxxxx.

Installation

git clone https://github.com/panoskiriakopoulos-sys/rizerve-mcp-server.git
cd rizerve-mcp-server
npm install
npm run build

Set the API Key and Run

# Set your API key
export RIZERVE_API_KEY="rz_xxxxxxxxxxxxxxxx"

# Run via stdio (for Claude Desktop, Cursor, Windsurf)
npm start

# Or run as an HTTP server for remote MCP clients
TRANSPORT=http PORT=3000 npm start

Client Configuration

Claude Desktop

Add the following to your claude_desktop_config.json file, replacing the path and API key with your own values:

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["/path/to/rizerve-mcp-server/dist/index.js"],
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Once saved and Claude Desktop is restarted, the Rizerve tools appear automatically in the tool list. No further configuration is needed.

Cursor, Windsurf, and Other MCP Clients

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/rizerve-mcp-server",
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Remote HTTP Transport

For MCP clients that connect over HTTP rather than stdio — useful for shared team environments or hosted deployments — start the server with the HTTP transport flag:

TRANSPORT=http PORT=3000 npm start

The server will listen on the specified port and accept standard MCP-over-HTTP requests.

Environment Variables

VariableDefaultDescription
RIZERVE_API_KEYrequiredAPI key from Rizerve Dashboard → Integrations → API Access
RIZERVE_API_URLhttps://api.rizerve.io/v1API base URL — override for staging or local testing
TRANSPORTstdioUse stdio for local MCP clients, http for remote access
PORT3000HTTP port when running in HTTP transport mode

Full Tool Reference

The server exposes 19 tools across six functional areas. All tools return raw JSON from the Rizerve API v1, transparently wrapped for MCP tool compatibility. All prices are in the property’s configured currency as face-value numbers, not cents.

Properties — 5 Tools

ToolKey ArgumentsDescription
rizerve_list_propertiespage, limit, published_onlyList all properties with full details, pricing, and amenities
rizerve_get_propertyslugGet a single property by its public slug
rizerve_create_propertyname*, price_per_night*, location, bedrooms, amenitiesCreate a new property listing
rizerve_update_propertyslug, then any field to changePartial update — only supplied fields are changed
rizerve_delete_propertyslugPermanently deletes property and all related data ⚠️

Bookings — 4 Tools

ToolKey ArgumentsDescription
rizerve_list_bookingsstatus, property_slug, check_in_from, check_in_to, page, limitList bookings with date and status filters
rizerve_get_bookingidGet a single booking by UUID
rizerve_create_bookingproperty_id*, guest_name*, check_in*, check_out*, total_price*, guest_email, guests, notesCreate a booking — minimum stay rules are automatically enforced
rizerve_update_booking_statusid, statusTransition status: pending → confirmed / cancelled, confirmed → cancelled / completed

Availability — 3 Tools

ToolKey ArgumentsDescription
rizerve_get_availabilityslug, check_in, check_outCheck whether a property is available for a given date range
rizerve_block_dateslug, date, available, reasonBlock or unblock a single date with an optional reason label
rizerve_batch_set_availabilityranges[] with property_id, date_from, date_to, available, reasonBulk block or unblock up to 50 date ranges in a single call

iCal Feeds — 4 Tools

ToolKey ArgumentsDescription
rizerve_list_ical_feedsslugList all imported calendar feeds (Airbnb, Booking.com, VRBO)
rizerve_import_ical_feedslug, url, sourceImport an external iCal feed — syncs automatically within minutes
rizerve_export_icalslugGet the public iCal URL to share with OTAs for outbound calendar sync
rizerve_delete_ical_feedslug, feed_idRemove an imported feed and its blocked dates ⚠️

Analytics — 3 Tools

ToolKey ArgumentsDescription
rizerve_get_property_statsslug, periodPage views, booking count, conversion rate, revenue, and occupancy for a property
rizerve_get_revenue_reportperiod, group_byRevenue breakdown by day, week, month, or property
rizerve_get_occupancy_reportperiod, property_slugOccupancy rates across one or all properties for a given period

Webhooks and Guest Lookup — 4 Tools

ToolKey ArgumentsDescription
rizerve_create_webhookurl, events[]Register a webhook endpoint for booking.created, booking.status_changed, or availability.updated
rizerve_list_webhooksList all registered webhooks with failure statistics
rizerve_delete_webhookidRemove a registered webhook
rizerve_lookup_guestemailFind all bookings associated with a guest’s email address

Project Structure

The server is written in TypeScript and organized by functional domain. Each tool group has its own file under src/tools/, with matching Zod validation schemas under src/schemas/. The API client in src/services/api-client.ts handles HTTP communication, response wrapping, and error normalization. The entry point at src/index.ts registers all tools with the MCP server instance.

src/
├── index.ts               # MCP server entry, registers all tools
├── constants.ts           # API URL, response formats, valid values
├── types.ts               # TypeScript interfaces matching v1 API responses
├── services/
│   └── api-client.ts      # HTTP client, response wrapping, error handling
├── tools/
│   ├── properties.ts
│   ├── bookings.ts
│   ├── availability.ts
│   ├── ical.ts
│   └── analytics.ts
└── schemas/
    ├── common.ts
    ├── properties.ts
    ├── bookings.ts
    ├── availability.ts
    ├── ical.ts
    └── analytics.ts

Development

# Install dependencies
npm install

# Build TypeScript to dist/
npm run build

# Watch mode for active development
npm run dev

# Run with debug logging
DEBUG=* npm start

API Compatibility and Response Format

This server targets Rizerve API v1. All responses are raw JSON arrays or objects from the API, transparently wrapped for MCP tool compatibility — the model receives the same data structure a direct API call would return. The full API reference is available in the repository at rizerve-api-docs.md.

The source code and issue tracker are on GitHub at github.com/panoskiriakopoulos-sys/rizerve-mcp-server. Licensed MIT. To get started, generate an API key from the Rizerve Dashboard under Integrations → API Access, clone the repository, and add the server config to your MCP client — the 19 tools will be available in your next session.

Setup

Get your API key from Rizerve Dashboard → Integrations → API Access.

Claude Desktop

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["/path/to/rizerve-mcp-server/dist/index.js"],
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Cursor / Windsurf

{
  "mcpServers": {
    "rizerve": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/rizerve-mcp-server",
      "env": {
        "RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

What You Can Ask

Connect to any MCP-compatible client and ask:


Tool Reference

Properties (5 tools)

ToolArgumentsDescription
rizerve_list_propertiespagelimitpublished_onlyList all properties with full details, prices, amenities
rizerve_get_propertyslugGet single property by its public slug
rizerve_create_propertyname*, price_per_night*, locationbedroomsamenities, …Create a new property listing
rizerve_update_propertyslug, then any field to changeUpdate property fields (partial update)
rizerve_delete_propertyslugPermanently delete property + all related data ⚠️

Bookings (4 tools)

ToolArgumentsDescription
rizerve_list_bookingsstatusproperty_slugcheck_in_fromcheck_in_topagelimitList bookings with filters
rizerve_get_bookingidGet single booking by UUID
rizerve_create_bookingproperty_id*, guest_name*, check_in*, check_out*, total_price*, guest_emailguest_phoneguestsnotesCreate a new booking — auto-enforces minimum stay
rizerve_update_booking_statusidstatusTransition: pending→confirmed/cancelled, confirmed→cancelled/completed

Availability (3 tools)

ToolArgumentsDescription
rizerve_get_availabilityslugcheck_incheck_outCheck if a property is available for a date range
rizerve_block_dateslugdateavailablereasonBlock or unblock a single date
rizerve_batch_set_availabilityranges[] (property_iddate_fromdate_toavailablereason)Bulk block/unblock up to 50 date ranges

iCal Feeds (4 tools)

ToolArgumentsDescription
rizerve_list_ical_feedsslugList imported calendar feeds (Airbnb, Booking.com, VRBO)
rizerve_import_ical_feedslugurlsourceImport external iCal feed — auto-syncs within minutes
rizerve_export_icalslugGet the public iCal URL to share with OTAs
rizerve_delete_ical_feedslugfeed_idRemove imported feed and its dates ⚠️

Analytics (3 tools)

ToolArgumentsDescription
rizerve_get_property_statsslugperiodPage views, bookings, conversion, revenue, occupancy
rizerve_get_revenue_reportperiodgroup_byRevenue breakdown by day/week/month/property
rizerve_get_occupancy_reportperiodproperty_slugOccupancy rates across properties

Webhooks & Guests (3 tools)

ToolArgumentsDescription
rizerve_create_webhookurlevents[]Register webhook for booking.createdbooking.status_changedavailability.updated
rizerve_list_webhooksList registered webhooks with failure stats
rizerve_delete_webhookidRemove webhook
rizerve_lookup_guestemailFind all bookings for a guest by email

19 tools total — full CRUD across properties, bookings, availability, iCal, analytics, webhooks, and guest history.


Configuration

Env VarDefaultDescription
RIZERVE_API_KEYrequiredAPI key from Rizerve Dashboard → Integrations → API Access
RIZERVE_API_URLhttps://api.rizerve.io/v1API base URL (change for staging/testing)
TRANSPORTstdiostdio for local MCP clients, http for remote access
PORT3000HTTP port when TRANSPORT=http

API Compatibility

This server targets Rizerve API v1. All prices are in the property’s configured currency (face value, not cents). Response format is raw JSON arrays/objects — the MCP server transparently wraps them for tool compatibility.

Full API reference: rizerve-api-docs.md


Development

# Install
npm install

# Build
npm run build

# Watch mode
npm run dev

# Run with debug logging
DEBUG=* npm start

Project Structure

src/
├── index.ts           # MCP server entry, registers all tools
├── constants.ts       # API URL, response formats, valid values
├── types.ts           # TypeScript interfaces matching v1 API responses
├── services/
│   └── api-client.ts  # HTTP client, response wrapping, error handling
├── tools/
│   ├── properties.ts  # Property CRUD tools
│   ├── bookings.ts    # Booking CRUD + status machine tools
│   ├── availability.ts # Date blocking + batch tools
│   ├── ical.ts        # iCal import/export tools
│   └── analytics.ts   # Revenue, occupancy, stats tools
└── schemas/
    ├── common.ts      # Shared Zod schemas (pagination, response format)
    ├── properties.ts  # Property input validation
    ├── bookings.ts    # Booking input validation
    ├── availability.ts # Availability input validation
    ├── ical.ts        # iCal input validation
    └── analytics.ts   # Analytics input validation

Stripe

When a guest pays for a direct booking, two things need to happen reliably: the money needs to reach the host’s bank account without the booking platform touching it, and the host needs to control when that payment is collected — instantly on confirmation, or after they’ve personally approved the reservation. This article explains how Stripe Connect handles both scenarios for hosts taking direct bookings, and what the practical difference between the two payment modes means for a host’s cash flow and booking management.

Key Takeaways

Why Stripe Connect Is Used for Direct Booking Payments

Stripe Connect is a version of Stripe designed specifically for platforms and marketplaces where money flows between end users — in this case, between a guest and a host — rather than into the platform’s own account. This distinction matters: when a host connects their own Stripe account through a direct booking tool, they are the merchant of record on every transaction. Guest payments settle directly into the host’s bank account on Stripe’s standard payout schedule.

This is materially different from how platforms like Airbnb handle payments. On Airbnb, the platform collects the guest’s payment, holds it, and releases a portion to the host after the stay begins — deducting service fees in the process. With Stripe Connect on a direct booking page, there is no intermediary holding period and no platform service fee deducted from the transaction itself.

What Is the Difference Between Instant Book and Request to Book Payments?

Both modes use Stripe to process guest card payments securely, but they differ in when the charge is triggered and how much control the host has before money changes hands. The right choice depends on how a host prefers to manage their calendar and how much vetting they want to do before confirming a reservation.

Instant Book: Payment at the Moment of Confirmation

With Instant Book, the guest selects their dates, fills in their details, and pays in one uninterrupted flow — similar to booking any other online service. The moment the guest completes checkout, the payment is captured by Stripe and the booking is confirmed. The host’s calendar blocks automatically and the host receives a notification that a confirmed, paid reservation has been made.

This mode is designed for hosts who prioritize low-friction bookings and don’t need to screen guests manually before accepting. It works particularly well for returning guests who’ve already stayed and are rebooking directly, or for properties with straightforward house rules that don’t require case-by-case evaluation. Cash flow is immediate — there’s no waiting period between a guest expressing interest and a confirmed, charged reservation.

Request to Book: Payment After Host Approval

Request to Book separates the reservation request from the payment trigger. A guest submits their details and requested dates, but their card is not charged immediately — the booking is held in a pending state while the host reviews it. The host can see the guest’s information, check the dates against their calendar, and decide whether to accept.

When the host approves the request, Stripe sends the guest a secure payment link by email. The guest follows that link to complete payment, at which point the booking is confirmed and the calendar updates. If the host declines, the guest receives a notification and no payment is ever attempted.

This mode is better suited for hosts who want to vet guests before committing — particularly useful for premium properties, longer stays, or hosts who’ve had difficult experiences with last-minute bookings or mismatched guests. It also effectively eliminates double-booking risk, since no booking is confirmed until the host has actively approved it and the guest has completed payment.

How Does the Money Actually Reach the Host’s Bank Account?

Once a payment is captured through Stripe — either at the moment of Instant Book confirmation or after a guest completes payment following a Request to Book approval — Stripe handles the transfer to the host’s connected bank account on its standard payout schedule. For most hosts in supported countries, this means funds are paid out on a rolling basis, typically within two to seven business days depending on the host’s country and Stripe account settings.

According to Stripe’s official documentation on direct charges with Connect, in a direct charge model the platform never holds the funds — the charge is processed directly against the connected account, meaning the host’s Stripe balance is updated immediately on payment capture. The booking platform does not appear as an intermediary on the guest’s bank statement for the main transaction.

What Does the Guest Experience Look Like?

From a guest’s perspective, paying through a Stripe-powered direct booking page is indistinguishable from paying through any other modern, trusted online checkout. They enter card details on a standard Stripe-hosted form with SSL encryption, see a clear summary of what they’re paying and for which dates, and receive an email confirmation. The host’s property name or business name appears on the payment receipt, not the booking tool’s name.

For Request to Book, the experience includes one extra step: after submitting the request, the guest waits for the host’s approval email, then follows the Stripe payment link to complete the booking. This two-step flow takes a little longer than an instant checkout, but it gives the guest confidence that a real person has reviewed and accepted their reservation before any money is taken.

Setting Up Stripe for a Direct Booking Page

Hosts connecting Stripe to a direct booking tool like Rizerve go through a standard Stripe Connect onboarding process. This involves creating a Stripe account (or connecting an existing one), verifying identity as required by Stripe’s Know Your Customer compliance standards, and linking a bank account for payouts. For most hosts, this takes under five minutes. Stripe supports hosts across most of Europe, the UK, the US, Australia, and dozens of other countries — a full list is available in Stripe’s documentation.

Once connected, the host doesn’t need to log into Stripe to manage individual bookings — payments are triggered automatically through the booking platform based on which mode (Instant Book or Request to Book) the host has selected. Stripe’s dashboard remains available for viewing transaction history, managing payouts, and handling any disputes.

What Happens if a Guest Needs a Refund?

Refunds on direct bookings are handled differently from Airbnb refunds, where the platform mediates disputes and can issue refunds from its own balance independently of the host. On a direct booking, the host controls the cancellation and refund policy — whatever terms are stated on the booking page at the time of reservation govern the transaction. If a refund is issued, it’s processed back to the guest’s card through Stripe from the host’s connected account, and Stripe’s standard refund processing time applies (typically five to ten business days for the amount to reappear on the guest’s statement).

Which Payment Mode Is Right for a Given Property?

Instant Book suits hosts who are confident in their guest mix, have straightforward house rules, and want maximum booking velocity with zero manual steps. Request to Book suits hosts who want a human checkpoint before any money moves — particularly valuable for unique or high-value properties, long-stay bookings, or hosts building a direct channel from scratch where the incoming guest profile is less predictable than a returning guest pool. Both modes are available within the same booking page setup, meaning a host can switch between them as their preferences or seasonal situation changes without rebuilding anything.

The practical takeaway is that Stripe Connect gives a host the financial infrastructure of a professional booking business — direct payment processing, automatic confirmation, and bank-account-level payouts — without requiring any technical setup beyond a standard Stripe account. The choice between Instant Book and Request to Book is less about technology and more about how hands-on a host wants to be at the moment a guest decides to book.

Integrations

Coming soon