Nomad Stays

io.github.nomadstaysPublished by GitHub account nomadstaysv0.7.0Updated Oct 24, 2026

Search remote-work accommodations worldwide; Trusted Stay Partners can manage their own listings.

Overview

AI-generated overview

Nomad Stays lets an assistant search remote-work accommodation worldwide, check availability, and, for hosts, manage their own listings.

What you can do
  • Search stays by country, continent, location, lifestyle, budget, amenities or WiFi speed, and read full stay details
  • Check availability for dates, per room, by month, or find the nearest open dates
  • Look up reference lists of lifestyles, amenities, currencies and room types or facilities
  • Browse and read Nomad Stays Help Center articles and categories
  • Create an account on someone's behalf, and with a token quote or book stays, run applications and enquiries
  • For hosts with a token: read and edit stay details, rooms, photos, packages, policies, facilities and business profile
When to use it
Useful when someone is planning a remote-work stay and wants an assistant to filter options by place, budget, amenities or dates. Also relevant for Trusted Stay Partners who want their own agent to maintain listing content instead of using the admin UI.
Requirements
Remote endpoint at mcp.nomadstays.com over streamable HTTP; no local install needed. Public search and help tools need no credentials. Account, booking, application and host management tools require a Nomad Stays account and an MCP agent token, passed as NOMADSTAYS_MCP_AGENT_TOKEN; host tokens require 2FA on the account. The self-hosted variant needs Node.js 20+ and a SQL Server connection string.
Before you install
The signup tool creates a real account from an unauthenticated call, though it stays inactive until the person confirms by email. Token-gated tools act on the account's behalf: they can create bookings and purchases with a checkout URL, submit applications, and write, reorder or delete rooms, photos and pricing packages, including hard-deleting packages. Stay and Experience applications carry a one-time EUR 39 fee. Personal, bank and tax details are excluded from tools.

Installation

In SourceWeft

  1. Open Nomad Stays in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.nomadstays%2Fmcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nomad-stays": {
      "type": "http",
      "url": "https://mcp.nomadstays.com/mcp"
    }
  }
}

README

NomadStays MCP Server

An MCP (Model Context Protocol) server that gives AI agents access to Nomad Stays accommodation data — search by country, continent, location, lifestyle, budget, amenities, and availability.

Compatible with Claude, ChatGPT, and any MCP-aware AI agent.

Tools available

Full, current tool list: 78 tools total. See mcp.nomadstays.com for the complete reference with parameters — this README lists them grouped by category; keep both in sync when tools are added or changed.

Search, availability, and reference (public, no auth)

ToolDescription
getStaysByCountrySearch stays by 2-letter country code or country name
getStaysByContinentSearch by continent (Europe, Asia, Africa, etc.)
getStaysByLocationFree-text search across city, region, location description
getStaysByLifestyleFilter by lifestyle category (Digital Nomad, Beach, City…)
getStaysByBudgetFind stays within a budget for a given duration and currency
getStaysByAmenitiesFilter by amenities (WiFi, Pool, Air Conditioning…)
getStaysByWiFiSpeedFilter by minimum WiFi download speed (Mbps)
getStayByIDFull details for a single stay
getStayCountsByCountryNumber of stays per country, most first (optional continent filter)
getAllLifestylesList all available lifestyle categories
getAllAmenitiesList all available amenities
checkStayAvailabilityCheck if a stay is available for given dates
findNearestAvailabilityFind nearest available dates when preferred dates are taken
getAvailabilityByMonthAll available windows in a specific month
getRoomAvailabilityPer-room availability for a date range
getRoomAmenitiesFull amenity list for a specific room including WiFi metrics
searchHelpCenterSearch Nomad Stays help centre articles
getHelpCenterArticleFetch a specific help article by ID
listHelpCenterCategoriesList all help centre categories

Account signup for AI agents

If the person you're assisting doesn't have a Nomad Stays account yet, use the signupNomadStaysAccount tool to create one for them — no authentication, browser, or CAPTCHA required.

ToolDescription
signupNomadStaysAccountCreate a new Nomad Stays account for someone who doesn't have one yet. Returns pending_email_confirmation — no session or token.

Notes:

  • The account is created but inactive until the human clicks the confirmation link emailed to them — no session or token is returned by this call, and the agent cannot sign in or act as the user itself. This is the trust boundary: it proves a real inbox exists behind the request, standing in for the CAPTCHA/honeypot checks the public browser signup form uses instead.
  • Rate-limited to 2 requests per 5 minutes per source IP, server-side (Controllers/AgentSignupApiController.cs in the main repo).
  • Once the human confirms their email and logs in normally at www.nomadstays.com/Account/Login, they can request an MCP bearer token or complete OAuth (see "Trusted Stay Partner management tools" below) to let their own agent act on their behalf going forward.

Product, purchase, and application tools (require an MCP agent token)

Stay, Experience, and Coworking applications each go through the same list / get / create / save / submit lifecycle. Stay and Experience applications carry a one-time EUR 39 Application Fee (products 8 and 9); Coworking applications have no fee.

ToolDescription
getProductInfoLook up a product's price and purchasability (product 8 = Stay Application, 9 = Experience Application)
purchaseProductStart a purchase on the caller's own behalf; returns a checkoutUrl or resolves as "waived"
getPurchaseStatusCheck whether a purchase has been paid, verified fresh against the payment provider
listStayApplications / getStayApplication / createStayApplication / saveStayApplication / submitStayApplicationFull Stay Application lifecycle
listExperienceApplications / getExperienceApplication / createExperienceApplication / saveExperienceApplication / submitExperienceApplicationFull Experience Application lifecycle (min. 4-day experiences, enforced server-side)
listCoworkingApplications / getCoworkingApplication / createCoworkingApplication / saveCoworkingApplication / submitCoworkingApplicationFull Coworking Application lifecycle — no Application Fee

Booking (require an MCP agent token)

ToolDescription
quoteStayBookingPrice a prospective booking (package, dates, guests) before committing
bookStayCreate a booking on the caller's own behalf; returns a checkoutUrl or resolves as confirmed
getBookingStatusCheck whether a booking is confirmed, verified fresh against the payment provider
listMyBookingsList the caller's own bookings, including needsAction/checkoutUrl for anything still pending
getCancellationOptionsWhether the caller's own paid booking can still be cancelled under the Stay's policy, the deadline and what they'd get back
cancelBookingCancel the caller's own paid booking (requires confirm: true); refund/credit to the member's wallet, Custom policy sends a request only
createStayEnquiryEnquire about a Stay that can't be booked right now; the Nomad Stays team replies to the member by email

Trusted Stay Partner management tools

The tools above are read-only and public (aside from applications, which are self-service but still token-gated). A separate set of tools lets an authorized Trusted Stay Partner's own AI agent read AND write their own listing data — with the same capabilities (no more, no less) as they have via the Nomad Stays admin UI. These require a bearer token issued from the partner's Operator Information page at www.nomadstays.com/stayadmin/user-profile-stays (2FA must be enabled on the account to request one), set as NOMADSTAYS_MCP_AGENT_TOKEN. Every call is scoped server-side to Stays the authenticated account actually owns.

ToolDescription
getMyStays / getMyStayDetail / updateStayDetailRead/update a Stay's core details (title, description, address, policies)
getMyStayOnboardingStatusThe six "Listing Completion" scores from the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-Fi, Operator Information) plus an overall percentage — Wi-Fi is a test-freshness score, not a speed rating
getMyStayRooms / createStayRoom / updateStayRoom / deleteStayRoomFull room CRUD, including bed sizes, facilities, and photos
getRoomTypeOptions / getRoomFacilityOptionsReference lookups for valid room types/facilities (differ for boutique vs standard Stays)
uploadStayPhoto / getMyStayPhotos / deleteStayPhoto / reorderStayPhotosStay-level photo management, including reordering
deleteRoomPhoto / reorderRoomPhotosRoom-level photo management
getMyStayPackages / createStayPackage / updateStayPackage / deleteStayPackagePricing package CRUD — sellPrice is always server-computed, never directly settable
getCurrencyOptions / getBusinessModelOptionsReference lookups for package currency and business model
getMyStayOrganisationalData / updateStayOrganisationalDataAddress, check-in/out policy, cancellation policy, pets/children/parking rules
getStayTypeOptions / getCountryOptions / getCancellationPolicyOptions / getAdditionalInformationOptionsReference lookups for organisational-data fields
getMyStayContacts / updateStayContactsPublic-facing contact details
getMyStayFacilities / updateStayFacilities / getFacilityGroupsFacility checkboxes, grouped exactly as on the admin UI
getMyBusinessProfile / updateHostBusinessProfileBusiness profile (excludes personal, bank, and tax fields — never exposed via MCP)

Key rules: boutique Stays (Boutique1–Boutique6 room types) and standard Stays are validated separately — always call getRoomTypeOptions first. Package price tiers are locked to 7/14/21/30 nights and don't all need to be set — a subset (e.g. 1-week-only) is valid. advertisingEndpoint only applies to Advertising-business-model Stays. Personal, bank, and tax details are permanently excluded from every tool.

Setup

1. Prerequisites

  • Node.js 20+
  • Access to a Nomad Stays SQL Server database (hosted on Coolify/Hetzner)

2. Install

bash
git clone https://github.com/nomadstays/nomadstays-mcp-server.gitcd nomadstays-mcp-servernpm install

3. Configure

bash
cp .env.example .env# Edit .env and set your NOMADSTAYS_DB_CONNECTION string

4. Build

bash
npm run build

5. Run (stdio mode — for Claude Desktop / local MCP clients)

bash
node build/index.js

6. Run (HTTP mode — for hosted / remote deployments)

bash
PORT=8080 node build/index.js

HTTP endpoints:

  • POST /mcp — MCP Streamable HTTP transport
  • GET /health — Health check
  • GET /api/mcp/stats/daily — Daily usage stats
  • GET /api/mcp/stats/tools — Per-tool usage stats

Claude Desktop configuration

Copy claude_desktop_config.example.json, update the path and connection string, then merge into your claude_desktop_config.json:

json
{  "mcpServers": {    "nomadstays": {      "command": "node",      "args": ["/path/to/nomadstays-mcp-server/build/index.js"],      "env": {        "NOMADSTAYS_DB_CONNECTION": "Server=tcp:..."      }    }  }}

Deploy

The production Nomad Stays deployment runs its MCP servers as Docker containers on Coolify (self-hosted on Hetzner) rather than Azure App Service. This repo doesn't include a Dockerfile of its own — containerize it with a standard Node.js build (Node 20+, npm run build, run dist/index.js) and deploy to any Docker-capable host, setting NOMADSTAYS_DB_CONNECTION (and PORT/HTTP_PORT for HTTP mode) as environment variables on the target platform.

Tech stack

Source: README.md at commit 11533a7

Tools

79

getStayByID

Get Stay Details

Returns full details for a single stay. The id parameter searches both EntryId and StayId fields.

Parametersidrequired

signupNomadStaysAccount

Sign Up for a Nomad Stays Account

Creates a new NomadStays account on behalf of a person who does not have one yet. No authentication required — this is how an AI agent gets a person started. The account is created but inactive until the person clicks the confirmation link sent to their email; this call returns no session or token, so the agent cannot sign in or act as the user itself. Once confirmed, the person can log in at nomadstays.com/Account/Login and request their own MCP bearer token or OAuth grant to let an agent manage their account/listings going forward.

ParametersemailrequiredlastNamerequiredpasswordrequiredfirstNamerequiredtelephonerequiredacceptGdprrequired

getStaysByCountry

Search Stays by Country

Returns stays from the NomadStays database. Search by 2-letter country code (e.g., 'MA', 'US') or country name (e.g., 'Antigua' matches 'Antigua and Barbuda')

Parameterslimitcountrycoderequired

getStaysByContinent

Search Stays by Continent

Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', 'Oceania')

Parameterslimitcontinentrequired

getStaysByLocation

Search Stays by Location

Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_description fields. Use this for flexible location searches (e.g., 'Paris', 'California', 'Beach', 'Mountain')

Parameterslimitlocationrequired

searchHelpCenter

Search Help Center

Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries.

Parameterslimitquery

getHelpCenterArticle

Get Help Center Article

Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories.

Parametersidrequired

listHelpCenterCategories

List Help Center Categories

List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category.

Takes no parameters.

getStaysByLifestyle

Search Stays by Lifestyle

Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each stay can belong to multiple lifestyle categories.

Parameterslimitlifestylerequired

getStaysByBudget

Search Stays by Budget

Search for stays that fit within a budget for a given duration. Country is OPTIONAL - can search globally or filter by specific country. Perfect for queries like 'Find me somewhere to stay for 1 month under EUR 1000' or 'Find me a place in Spain for 1 month under EUR 1000'.

ParameterslimitcurrencyrequiredmaxPricerequiredcontinentcheckInDatecountryCodedurationDaysrequired

getStaysByAmenities

Search Stays by Amenities

Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomFacilities). Use matchType 'any' to find stays with at least one amenity, or 'all' to find stays with all requested amenities. Can optionally filter by minimum WiFi download speed.

ParameterslimitamenitiesrequiredmatchTypeminWifiSpeed

getStaysByWiFiSpeed

Find Stays with Fast Wi-Fi

Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended.

ParameterslimitminWiFiDownloadSpeed

getAllLifestyles

List Lifestyle Categories

Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLifestyle.

Takes no parameters.

getStayCountsByCountry

Count Stays by Country

Returns how many stays NomadStays has in each country, most first. Each row has the country name, 2-letter code, continent, 'stays' (live public listings) and 'bookableNow' (those currently listed for booking). Use this for questions like 'which countries have the most stays', 'how many stays do you have in Spain' or 'where do you have stays'. Optionally filter by continent.

Parameterscontinent

getAllAmenities

List All Amenities

List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFacilityFk).

Takes no parameters.

checkStayAvailability

Check Stay Availability

Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details.

ParametersstayIdrequiredcheckInrequiredcheckOutrequiredroomType

hasAvailabilityInWindow

Check Availability in a Date Window

Efficiently checks whether a stay has ANY open booking window of a minimum length within a date range, without checking every single day. Use this to filter search results down to stays with real availability somewhere in the near future (e.g. 'available at all in the next 6 months for a month-long stay'), instead of calling checkStayAvailability repeatedly for individual dates.

ParametersstayIdrequiredfromDaterequiredwindowDaysminLengthOfStayrequired

findNearestAvailability

Find Nearest Available Dates

Find the nearest available dates when requested dates are not available. Searches for alternative check-in dates within a specified window and can adjust length of stay.

ParametersstayIdrequiredmaxLengthOfStayminLengthOfStayrequiredpreferredCheckInrequiredsearchWindowDays

getAvailabilityByMonth

Get Availability by Month

Get all available booking windows in a specific month that meet the minimum length of stay requirement. Returns all possible check-in dates and their corresponding available periods.

ParametersyearrequiredmonthrequiredstayIdrequiredminLengthOfStayrequired

getRoomAvailability

Check Room Availability by Night

Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night.

ParametersroomIdrequiredcheckInrequiredcheckOutrequired

getRoomAmenities

Get Room Amenities and Wi-Fi Speeds

Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all facilities, and network performance data.

ParametersroomIdrequired

getMyStays

List My Stays

List all Stays owned by the account bound to the MCP agent token. Returns stayId, title, and listed status for each — use this to find a stayId before calling any other owner-scoped tool. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getMyStayDetail

Get My Stay Title and Description

Get the current title, description, and listed status for one of your Stays. Call this before updateStayDetail so the agent knows the current values and doesn't accidentally overwrite them. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getMyStayOnboardingStatus

Get Listing Completion Status

Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-Fi, Operator Information), plus an overall completion percentage. Use this when a host asks how far along they are with onboarding or what's left to finish. Note: Wi-Fi is a test-freshness score (recency of the last speed test), not a speed rating. Operator Information is the same score the owner's dashboard shows, with a missingItems list of labels (e.g. 'Date of Birth', 'Banking Details') — those fields are owner-only and never writable via MCP, so relay the list to the owner. Stay Details is recalculated automatically after every MCP edit to details, organisational data, contacts, facilities or photos. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getMyStayRooms

List My Stay's Rooms

List all rooms currently configured on one of your Stays, including bed setup, occupancy, facilities (resolved to names, not just IDs), and every room/workspace photo as a viewable CDN URL. Call this before createStayRoom, updateStayRoom, deleteStayRoom, deleteRoomPhoto, or reorderRoomPhotos so the agent can show current values or find the right roomId/fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getMyStayPackages

List My Stay's Pricing Packages

List all pricing packages on one of your Stays, including their full price tiers (days, buy price, sell price, comparison price, listed status). Call this before createStayPackage or updateStayPackage — hosts often forget exactly what packages/pricing they've already set. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getMyStayOrganisationalData

Get My Stay's Organisational Data

Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before updateStayOrganisationalData so the agent knows current values. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getMyBusinessProfile

Get My Business Profile

Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank or tax-ID details — those are never exposed via MCP. Call this before updateHostBusinessProfile. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

updateStayDetail

Update Stay Title and Description

Update a Stay's title and/or description. Requires an MCP agent token (NOMADSTAYS_MCP_AGENT_TOKEN) scoped to the owning account. Only fields supplied are changed.

ParameterstitlestayIdrequireddescription

createStayRoom

Add a Room to a Stay

Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays are capped at 6 rooms total (one per Boutique1-6 slot) — creation is rejected once all 6 exist. Requires an MCP agent token scoped to the owning account.

ParametersbedsstayIdrequiredmaxPersonmcpRoomIdroomTitlerequiredroomTypeFKmainBedSizeotherBedSizeroomFacilityFkroomDescription

updateStayRoom

Update a Room

Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Requires an MCP agent token scoped to the owning account.

ParametersbedsroomIdrequiredstayIdrequiredmaxPersonmcpRoomIdroomTitleroomTypeFKmainBedSizeotherBedSizeroomFacilityFkroomDescription

deleteStayRoom

Delete a Room

Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account.

ParametersroomIdrequiredstayIdrequired

getRoomTypeOptions

List Room Type Options

List valid room types for a specific Stay's rooms (roomTypeFK in createStayRoom/updateStayRoom). Valid values depend on the Stay: boutique Stays choose from a fixed boutique type range; standard Stays are restricted to types already used on one of their own rooms. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

getRoomFacilityOptions

List Room Facility Options

List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-Fi is mandatory and always included even if not explicitly selected. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

deleteRoomPhoto

Delete a Room Photo

Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersroomIdrequiredstayIdrequiredfileNamerequiredroomArearequired

reorderRoomPhotos

Reorder Room Photos

Change the display order of a room's photo gallery. fileNames must be the FULL current gallery (same set, just reordered) — call getMyStayRooms first. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersroomIdrequiredstayIdrequiredroomArearequiredfileNamesrequired

createStayPackage

Create a Pricing Package

Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account.

ParameterslistedmaxPaxpricesstayIdrequiredendDatestartDatecurrencyFKrequiredroomTypeFKstayRoomFKdescriptionpackageNamerequiredadvertisingEndpoint

updateStayPackage

Update a Pricing Package

Update an existing pricing package on a Stay. Supplying 'prices' replaces ALL price rows for that package. Requires an MCP agent token scoped to the owning account.

ParameterslistedmaxPaxpricesstayIdrequiredendDateisActivepackageIdrequiredstartDatecurrencyFKroomTypeFKstayRoomFKdescription+2 more

deleteStayPackage

Delete a Pricing Package

Permanently delete a pricing package and all its price tiers from a Stay. This is a hard delete (unlike room deletion, which is soft). Requires an MCP agent token scoped to the owning account.

ParametersstayIdrequiredpackageIdrequired

getCurrencyOptions

List Currency Options

List valid currency ids/codes for use as a package's currencyFK.

Takes no parameters.

updateStayOrganisationalData

Update Stay Organisational Data

Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration numbers, 'Why Choose Us' reasons, and more. Only fields supplied are changed. IMPORTANT: countryId, petsAllowedId, childrenAllowedId, parkingId, cxPolicyId, and stayTypeId are lookup IDs, NOT plain text or booleans — call getCountryOptions / getAdditionalInformationOptions / getCancellationPolicyOptions / getStayTypeOptions first to find the correct ID to send. Requires an MCP agent token scoped to the owning account.

ParameterscitystategeoLatgeoLngstayIdrequiredaddressreason1reason2reason3postCodecheckInTocountryId+18 more

updateHostBusinessProfile

Update My Business Profile

Update the host account's business profile (legal business name, VAT/business registration numbers). Applies to the account owning the MCP agent token, not a specific stay. Only fields supplied are changed. Does NOT touch bank or tax-ID details — those are not MCP-writable.

ParametersvatNumberbusinessNameentityAccountbusinessNumber

uploadStayPhoto

Upload a Stay Photo

Upload a photo to one of your Stay's photo areas. Supply EXACTLY ONE of 'url' (a public https:// link, e.g. a Google Drive or Dropbox share link — the server downloads it) or 'base64' (the raw image bytes, base64-encoded — use this when you already have the image data in hand, e.g. a user attached a photo in the conversation, and have nowhere public to host it first). The photo is validated against the same minimum specs as a manual upload: JPEG, PNG, or WebP, under 20MB, and a minimum resolution that depends on area. Most areas require at least 1920x1080 landscape; 'host' requires at least 1080x1350 PORTRAIT — a landscape photo will be rejected for that area. Every upload is downscaled to fit within 2560x1440 and re-encoded server-side as WebP (stripping metadata and anything that isn't genuine image data) before storage. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Parametersurlarearequiredbase64roomIdstayIdrequired

getMyStayContacts

Get My Stay's Contacts and Social Links

Get a Stay's contact/owner/manager details and social media links: owner name/email/mobile, manager (day-to-day contact person) name/email/mobile, booking email/phone/mobile, host display name, and website/Facebook/Twitter/YouTube/Instagram/TikTok/LinkedIn links. Call this before updateStayContacts so the agent knows current values. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

updateStayContacts

Update Stay Contacts and Social Links

Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequiredtikToktwitterwebsiteyoutubelinkedIninstagramownerNameownerEmailmanagerNameownerMobilebookingEmail+6 more

getMyStayFacilities

Get My Stay's Facilities

Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform supports plus which ones are currently selected for this Stay. Call getFacilityGroups first if you don't know the exact group name. Common groups: 'General', 'Services', 'Languages Spoken', 'Meal', 'Position', 'Remote Worker'. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersgrouprequiredstayIdrequired

updateStayFacilities

Update Stay Facilities

Set which options are selected for one facility/checkbox group on a Stay — e.g. which languages are spoken. facilityDetailIds is the COMPLETE replacement list: anything not included will be UNCHECKED. Call getMyStayFacilities first to see current selections and valid IDs before changing them. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersgrouprequiredstayIdrequiredfacilityDetailIdsrequired

getFacilityGroups

List Facility Groups

List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call this first if you don't already know the exact group name to pass to getMyStayFacilities/updateStayFacilities. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getStayTypeOptions

List Accommodation Type Options

List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getCountryOptions

List Country Options

List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getCancellationPolicyOptions

List Cancellation Policy Options

List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getAdditionalInformationOptions

List Children, Pets and Parking Options

List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NOT booleans — they're lookup IDs (e.g. 'Yes', 'No', 'On Request') — call this to find the right value before writing petsAllowedId/childrenAllowedId/parkingId. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersfilterNamerequired

getBusinessModelOptions

List Business Model Options

List valid values for a Stay's listing/business model (businessModelId, read-only — displayed on the Stay but not editable via MCP or the host UI itself). Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getMyStayPhotos

List My Stay's Photos

Get every current photo for a Stay across all areas (listing gallery, main/hero, workspace/coworking gallery, host), each as a full https:// CDN URL an agent can view directly (not just a filename). Call this before deleteStayPhoto or reorderStayPhotos to see current filenames. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersstayIdrequired

deleteStayPhoto

Delete a Stay Photo

Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersarearequiredstayIdrequiredfileNamerequired

reorderStayPhotos

Reorder Stay Photos

Change the display order of a Stay's listing or workspace photo gallery. fileNames must be the FULL current gallery (same set of files, just reordered) — call getMyStayPhotos first. This only reorders; it cannot add or remove photos. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersarearequiredstayIdrequiredfileNamesrequired

getProductInfo

Get Product Price

Look up a Nomad Stays product's price and purchasability — currently only product 8, the Stay Application fee (EUR 39). Returns isWaivedForCaller: true if the caller is already a Stay Partner re-applying, in which case there's nothing to pay and purchaseProduct will process the waiver automatically. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersproductIdrequired

purchaseProduct

Start a Product Purchase

Start a purchase of a Nomad Stays product on the caller's own behalf. If the caller already qualifies for a waiver (e.g. an existing Stay Partner re-applying), this resolves immediately with no payment step and returns status 'waived'. Otherwise it returns a checkoutUrl hosted on nomadstays.com — you must hand this URL to the member and ask them to open it in their own browser and pay; you cannot complete payment on their behalf. Poll getPurchaseStatus with the returned saleId afterwards to find out when it's actually paid. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersproductIdrequiredapplicationId

getPurchaseStatus

Check Purchase Status

Check whether a purchase has been paid. Only ever reports 'paid' after a fresh server-side check against the payment provider — never trust the member's own claim that they've paid, always poll this instead. Possible statuses: pending, paid, failed, waived. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterssaleIdrequired

listStayApplications

List My Stay Applications

List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_property_details, pay_application_fee, submit, awaiting_review, or accepted). Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getStayApplication

Get a Stay Application

Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

createStayApplication

Start a Stay Application

Start a new Stay Application for the caller. Any fields can be supplied now or filled in later via saveStayApplication — the applicant's name defaults from their Nomad Stays profile if not supplied. Call getCountryOptions and getBusinessModelOptions first to resolve stayCountryId/postalCountryId/businessModelId, since country-specific rules (VAT number, tourism number, permitted business models) are enforced server-side and rejections name the specific field/reason. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterszipcitystatemobilestreetwebsitecommentsstayNamevatNumberhasKitchenbusinessNamemonthlyPrice+12 more

saveStayApplication

Update a Stay Application

Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterszipcitystatemobilestreetwebsitecommentsstayNamevatNumberhasKitchenbusinessNamemonthlyPrice+13 more

submitStayApplication

Submit a Stay Application

Submit a completed Stay Application for human review. Rejects with a missingFields list if any required field is still empty, or a 409 if the Application Fee hasn't been paid/waived yet (call purchaseProduct with productId 8 and applicationId first). There is no partial/optimistic submission — everything required must already be in place. On success the application moves to human review; nothing further is needed from the agent. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

listExperienceApplications

List My Experience Applications

List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_experience_details, pay_application_fee, submit, awaiting_review, or accepted). Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getExperienceApplication

Get an Experience Application

Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

createExperienceApplication

Start an Experience Application

Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaults from their Nomad Stays profile if not supplied. Call getCountryOptions and getBusinessModelOptions first to resolve experienceCountryId/postalCountryId/businessModelId, since country-specific rules (VAT number, tourism number, permitted business models) are enforced server-side and rejections name the specific field/reason. Experiences must run a minimum of 4 days. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterszipcitystatemaxPaxmobilestreetdaysQtywebsitecommentsvatNumberhasKitchendescription+16 more

saveExperienceApplication

Update an Experience Application

Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterszipcitystatemaxPaxmobilestreetdaysQtywebsitecommentsvatNumberhasKitchendescription+17 more

submitExperienceApplication

Submit an Experience Application

Submit a completed Experience Application for human review. Rejects with a missingFields list if any required field is still empty, or a 409 if the Application Fee hasn't been paid/waived yet (call purchaseProduct with productId 9 and applicationId first — Experience uses product 9, NOT product 8). There is no partial/optimistic submission. On success the application moves to human review. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

quoteStayBooking

Get a Booking Quote

Get a server-computed price and availability quote for booking a Stay package on the caller's own behalf. Price is always re-derived from the package's actual pricing tiers — never trust or reuse a price shown elsewhere. Picks the largest price tier whose length is <= the requested nights (e.g. 10 nights against 7/14/21/30-day tiers uses the 7-day tier's rate), falling back to the smallest tier if the stay is shorter than all of them. Returns a quoteId valid for about 15 minutes — call bookStay with it to actually create the booking and get a payment link. Requires the caller's token to carry the 'bookings' OAuth scope (McpMember role), separate from the listings-management 'McpAgent' scope other tools here use.

ParameterspetsroomsadultscheckInrequiredcheckOutrequiredchildrenpackageIdrequired

bookStay

Book a Stay

Create a real booking from a quoteId returned by quoteStayBooking, and return a hosted checkoutUrl. The quote's price/availability is re-validated server-side one more time before the booking is created — a stale or expired quote will be rejected with a message to call quoteStayBooking again. You MUST send the checkoutUrl to the member and tell them to open it in their own browser to pay — you cannot complete this payment on their behalf, and no card details ever pass through you. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.

ParametersquoteIdrequiredcontactNamecontactEmailcontactPhonespecialRequest

createStayEnquiry

Enquire About a Stay

Send an enquiry about a Stay that can't be booked right now — for example quoteStayBooking finds no bookable package, or the Stay page says it isn't bookable online. The enquiry goes to the Nomad Stays team, who check availability with the Stay and reply to the member by email (usually within one working day). The member's name and email come from their Nomad Stays account; do not ask for them. Only send an enquiry the member has asked for, and include what they told you (who is travelling, work needs, questions). Use bookStay instead whenever a quote succeeds. Requires the 'bookings' scope.

ParametersnightsstayIdrequiredmessagerequiredarrivalDate

getBookingStatus

Check Booking Status

Check a Stay booking's real payment status by PNR. Status is always freshly re-verified against Airwallex directly if not already confirmed paid — never trust a client-supplied claim of success. Only ever returns bookings owned by the caller's own account. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.

Parameterspnrrequired

listMyBookings

List My Bookings

List all Stay bookings owned by the caller's own account, most recent first, with each one's current status. Each booking includes needsAction: true if it's still unpaid, with a ready-to-use checkoutUrl — call this proactively (e.g. at the start of a session, or when the member asks what's pending) and surface any needsAction bookings to the member, since there is no other way for them to be notified of an incomplete booking through this connection. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.

Takes no parameters.

listCoworkingApplications

List My Coworking Applications

List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). Coworking has no Application Fee, so unlike Stay/Experience there is no pay_application_fee step. Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

Takes no parameters.

getCoworkingApplication

Get a Coworking Application

Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

createCoworkingApplication

Start a Coworking Application

Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application Fee, and no billing step at all — once coworkingName, applicantName, applicantEmail, city and country are present, nextAction goes straight to 'submit'. Call getCountryOptions first to find a valid country name (must be the exact tbCountry.CountryName, not an ID). Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterscityaddresscountrywebsitetelephoneapplicantNamecoworkingNameapplicantEmail

saveCoworkingApplication

Update a Coworking Application

Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParameterscityaddresscountrywebsitetelephoneapplicantNameapplicationIdrequiredcoworkingNameapplicantEmail

submitCoworkingApplication

Submit a Coworking Application

Submit a completed Coworking Application for human review. Rejects with a missingFields list if any required field is still empty. There is no Application Fee to pay for Coworking, so — unlike submitStayApplication/submitExperienceApplication — this never returns a pay_application_fee/409-unpaid response. On success the application moves to human review. Requires NOMADSTAYS_MCP_AGENT_TOKEN.

ParametersapplicationIdrequired

Version history

1
  1. v0.7.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts