Make.com Rizerve Automations
Coming Soon
Coming Soon
Coming Soon
Travel Payouts
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.
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:
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.
git clone https://github.com/panoskiriakopoulos-sys/rizerve-mcp-server.git
cd rizerve-mcp-server
npm install
npm run build
# 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
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.
{
"mcpServers": {
"rizerve": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/rizerve-mcp-server",
"env": {
"RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
}
}
}
}
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.
| Variable | Default | Description |
|---|---|---|
RIZERVE_API_KEY | required | API key from Rizerve Dashboard → Integrations → API Access |
RIZERVE_API_URL | https://api.rizerve.io/v1 | API base URL — override for staging or local testing |
TRANSPORT | stdio | Use stdio for local MCP clients, http for remote access |
PORT | 3000 | HTTP port when running in HTTP transport mode |
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.
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_list_properties | page, limit, published_only | List all properties with full details, pricing, and amenities |
rizerve_get_property | slug | Get a single property by its public slug |
rizerve_create_property | name*, price_per_night*, location, bedrooms, amenities | Create a new property listing |
rizerve_update_property | slug, then any field to change | Partial update — only supplied fields are changed |
rizerve_delete_property | slug | Permanently deletes property and all related data ⚠️ |
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_list_bookings | status, property_slug, check_in_from, check_in_to, page, limit | List bookings with date and status filters |
rizerve_get_booking | id | Get a single booking by UUID |
rizerve_create_booking | property_id*, guest_name*, check_in*, check_out*, total_price*, guest_email, guests, notes | Create a booking — minimum stay rules are automatically enforced |
rizerve_update_booking_status | id, status | Transition status: pending → confirmed / cancelled, confirmed → cancelled / completed |
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_get_availability | slug, check_in, check_out | Check whether a property is available for a given date range |
rizerve_block_date | slug, date, available, reason | Block or unblock a single date with an optional reason label |
rizerve_batch_set_availability | ranges[] with property_id, date_from, date_to, available, reason | Bulk block or unblock up to 50 date ranges in a single call |
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_list_ical_feeds | slug | List all imported calendar feeds (Airbnb, Booking.com, VRBO) |
rizerve_import_ical_feed | slug, url, source | Import an external iCal feed — syncs automatically within minutes |
rizerve_export_ical | slug | Get the public iCal URL to share with OTAs for outbound calendar sync |
rizerve_delete_ical_feed | slug, feed_id | Remove an imported feed and its blocked dates ⚠️ |
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_get_property_stats | slug, period | Page views, booking count, conversion rate, revenue, and occupancy for a property |
rizerve_get_revenue_report | period, group_by | Revenue breakdown by day, week, month, or property |
rizerve_get_occupancy_report | period, property_slug | Occupancy rates across one or all properties for a given period |
| Tool | Key Arguments | Description |
|---|---|---|
rizerve_create_webhook | url, events[] | Register a webhook endpoint for booking.created, booking.status_changed, or availability.updated |
rizerve_list_webhooks | — | List all registered webhooks with failure statistics |
rizerve_delete_webhook | id | Remove a registered webhook |
rizerve_lookup_guest | email | Find all bookings associated with a guest’s email address |
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
# 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
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.
Get your API key from Rizerve Dashboard → Integrations → API Access.
{
"mcpServers": {
"rizerve": {
"command": "node",
"args": ["/path/to/rizerve-mcp-server/dist/index.js"],
"env": {
"RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
}
}
}
}
{
"mcpServers": {
"rizerve": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/rizerve-mcp-server",
"env": {
"RIZERVE_API_KEY": "rz_xxxxxxxxxxxxxxxx"
}
}
}
}
Connect to any MCP-compatible client and ask:
| Tool | Arguments | Description |
|---|---|---|
rizerve_list_properties | page, limit, published_only | List all properties with full details, prices, amenities |
rizerve_get_property | slug | Get single property by its public slug |
rizerve_create_property | name*, price_per_night*, location, bedrooms, amenities, … | Create a new property listing |
rizerve_update_property | slug, then any field to change | Update property fields (partial update) |
rizerve_delete_property | slug | Permanently delete property + all related data ⚠️ |
| Tool | Arguments | Description |
|---|---|---|
rizerve_list_bookings | status, property_slug, check_in_from, check_in_to, page, limit | List bookings with filters |
rizerve_get_booking | id | Get single booking by UUID |
rizerve_create_booking | property_id*, guest_name*, check_in*, check_out*, total_price*, guest_email, guest_phone, guests, notes | Create a new booking — auto-enforces minimum stay |
rizerve_update_booking_status | id, status | Transition: pending→confirmed/cancelled, confirmed→cancelled/completed |
| Tool | Arguments | Description |
|---|---|---|
rizerve_get_availability | slug, check_in, check_out | Check if a property is available for a date range |
rizerve_block_date | slug, date, available, reason | Block or unblock a single date |
rizerve_batch_set_availability | ranges[] (property_id, date_from, date_to, available, reason) | Bulk block/unblock up to 50 date ranges |
| Tool | Arguments | Description |
|---|---|---|
rizerve_list_ical_feeds | slug | List imported calendar feeds (Airbnb, Booking.com, VRBO) |
rizerve_import_ical_feed | slug, url, source | Import external iCal feed — auto-syncs within minutes |
rizerve_export_ical | slug | Get the public iCal URL to share with OTAs |
rizerve_delete_ical_feed | slug, feed_id | Remove imported feed and its dates ⚠️ |
| Tool | Arguments | Description |
|---|---|---|
rizerve_get_property_stats | slug, period | Page views, bookings, conversion, revenue, occupancy |
rizerve_get_revenue_report | period, group_by | Revenue breakdown by day/week/month/property |
rizerve_get_occupancy_report | period, property_slug | Occupancy rates across properties |
| Tool | Arguments | Description |
|---|---|---|
rizerve_create_webhook | url, events[] | Register webhook for booking.created, booking.status_changed, availability.updated |
rizerve_list_webhooks | — | List registered webhooks with failure stats |
rizerve_delete_webhook | id | Remove webhook |
rizerve_lookup_guest | email | Find all bookings for a guest by email |
19 tools total — full CRUD across properties, bookings, availability, iCal, analytics, webhooks, and guest history.
| Env Var | Default | Description |
|---|---|---|
RIZERVE_API_KEY | required | API key from Rizerve Dashboard → Integrations → API Access |
RIZERVE_API_URL | https://api.rizerve.io/v1 | API base URL (change for staging/testing) |
TRANSPORT | stdio | stdio for local MCP clients, http for remote access |
PORT | 3000 | HTTP port when TRANSPORT=http |
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
# Install npm install # Build npm run build # Watch mode npm run dev # Run with debug logging DEBUG=* npm start
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
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.
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.
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.
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 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.
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.
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.
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.
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).
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.
Coming soon