{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ttwtsux87r7p","handle":"nomad-stays","url":"https://wellknown.network/agents/nomad-stays","links":{"self":"https://wellknown.network/agents/nomad-stays/record.json","html":"https://wellknown.network/agents/nomad-stays","markdown":"https://wellknown.network/agents/nomad-stays/record.md","api":"https://wellknown.network/api/v1/agents/nomad-stays","status":"https://wellknown.network/api/v1/agents/nomad-stays/status","claim":"https://wellknown.network/agents/nomad-stays/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/nomad-stays/claim.json","badge":"https://wellknown.network/agents/nomad-stays/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/nomad-stays/history","tools":"https://wellknown.network/api/v1/agents/nomad-stays/tools"},"ard":{"identifier":"urn:air:mcp.nomadstays.com:server:nomad-stays","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Nomad Stays","summary":"Search remote-work accommodations worldwide; Trusted Stay Partners can manage their own listings.","description":"Search remote-work accommodations worldwide; Trusted Stay Partners can manage their own listings.","publisher":{"name":"nomadstays","url":null},"homepage":"https://mcp.nomadstays.com","repository":"https://github.com/nomadstays/nomadstays-mcp-server","version":"0.7.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.nomadstays.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-30T08:45:46.22451Z","publishedAt":"2026-07-30T08:45:46.22451Z","registryName":"io.github.nomadstays/mcp-server"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.travel","name":"Travel & Booking","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.992,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":0.583,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.583,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.569,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.525,"provenance":"derived"},{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.51,"provenance":"derived"}],"categories":["analytics","commerce","content","data","dev","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T09:23:48.433Z","lastProbedAt":"2026-10-10T09:23:48.433Z","statusComputedAt":"2026-10-10T09:25:54.409Z","reliability30d":{"probes":109,"successRate":1,"p50Ms":28,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":107,"ok":107,"authBoundaryOk":0,"serviceOk":107,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T09:23:48.433Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T02:31:11.703Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T20:29:10.529Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:31:40.918Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:25:02.259Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:45.672Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:26:17.019Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:24:59.110Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:25:31.755Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T22:23:52.279Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"toolCount":79,"toolsHash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","serverName":"nomadstays-mcp-server","capabilities":["resources","tools","prompts"],"serverVersion":"0.8.1","protocolVersion":"2025-06-18"}}],"tools":[{"name":"getStayByID","description":"Returns full details for a single stay. The id parameter searches both EntryId and StayId fields."},{"name":"signupNomadStaysAccount","description":"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. Th"},{"name":"getStaysByCountry","description":"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')"},{"name":"getStaysByContinent","description":"Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', "},{"name":"getStaysByLocation","description":"Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_descrip"},{"name":"getMarketplaceAdverts","description":"Returns Nomad Marketplace adverts — third-party partner deals and services (e.g. eSIMs, travel services) listed at nomadstays.com/nomad-marketplace. This is sep"},{"name":"getMarketplaceCategories","description":"Returns the list of Nomad Marketplace advertising categories (e.g. 'eSIM', 'Travel Insurance'). Use this to discover valid category values for getMarketplaceAdv"},{"name":"searchHelpCenter","description":"Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries."},{"name":"getHelpCenterArticle","description":"Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories."},{"name":"listHelpCenterCategories","description":"List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category."},{"name":"getStaysByLifestyle","description":"Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each s"},{"name":"getStaysByBudget","description":"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 lik"},{"name":"getStaysByAmenities","description":"Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomF"},{"name":"getStaysByWiFiSpeed","description":"Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended."},{"name":"getAllLifestyles","description":"Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLife"},{"name":"getAllAmenities","description":"List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFac"},{"name":"checkStayAvailability","description":"Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details."},{"name":"hasAvailabilityInWindow","description":"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 sea"},{"name":"findNearestAvailability","description":"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"},{"name":"getAvailabilityByMonth","description":"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 correspond"},{"name":"getRoomAvailability","description":"Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night."},{"name":"getRoomAmenities","description":"Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all fa"},{"name":"getMyStays","description":"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 a"},{"name":"getMyStayDetail","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"},{"name":"getMyStayOnboardingStatus","description":"Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-"},{"name":"getMyStayRooms","description":"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"},{"name":"getMyStayPackages","description":"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 befor"},{"name":"getMyStayOrganisationalData","description":"Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before "},{"name":"getMyBusinessProfile","description":"Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank "},{"name":"updateStayDetail","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 change"},{"name":"createStayRoom","description":"Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays a"},{"name":"updateStayRoom","description":"Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK"},{"name":"deleteStayRoom","description":"Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account."},{"name":"getRoomTypeOptions","description":"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 f"},{"name":"getRoomFacilityOptions","description":"List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-F"},{"name":"deleteRoomPhoto","description":"Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderRoomPhotos","description":"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 "},{"name":"createStayPackage","description":"Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account."},{"name":"updateStayPackage","description":"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 acco"},{"name":"deleteStayPackage","description":"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 tok"},{"name":"getCurrencyOptions","description":"List valid currency ids/codes for use as a package's currencyFK."},{"name":"updateStayOrganisationalData","description":"Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration num"},{"name":"updateHostBusinessProfile","description":"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 sp"},{"name":"uploadStayPhoto","description":"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 do"},{"name":"getMyStayContacts","description":"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"},{"name":"updateStayContacts","description":"Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getMyStayFacilities","description":"Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform support"},{"name":"updateStayFacilities","description":"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: "},{"name":"getFacilityGroups","description":"List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call "},{"name":"getStayTypeOptions","description":"List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getCountryOptions","description":"List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TO"},{"name":"getCancellationPolicyOptions","description":"List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"getAdditionalInformationOptions","description":"List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NO"},{"name":"getBusinessModelOptions","description":"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). Requi"},{"name":"getMyStayPhotos","description":"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 ca"},{"name":"deleteStayPhoto","description":"Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN."},{"name":"reorderStayPhotos","description":"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 g"},{"name":"getProductInfo","description":"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 c"},{"name":"purchaseProduct","description":"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), "},{"name":"getPurchaseStatus","description":"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 cla"},{"name":"listStayApplications","description":"List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_proper"},{"name":"getStayApplication","description":"Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields ar"},{"name":"createStayApplication","description":"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 thei"},{"name":"saveStayApplication","description":"Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fie"},{"name":"submitStayApplication","description":"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 ha"},{"name":"listExperienceApplications","description":"List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_"},{"name":"getExperienceApplication","description":"Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fie"},{"name":"createExperienceApplication","description":"Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaul"},{"name":"saveExperienceApplication","description":"Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only "},{"name":"submitExperienceApplication","description":"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 "},{"name":"quoteStayBooking","description":"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 p"},{"name":"bookStay","description":"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 o"},{"name":"getBookingStatus","description":"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"},{"name":"listMyBookings","description":"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 sti"},{"name":"listCoworkingApplications","description":"List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). C"},{"name":"getCoworkingApplication","description":"Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fiel"},{"name":"createCoworkingApplication","description":"Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application"},{"name":"saveCoworkingApplication","description":"Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pa"},{"name":"submitCoworkingApplication","description":"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 t"}],"package":null,"toolSurface":{"id":"ts_259gcrb7k4vu","endpointId":"ep_hkuep6f7sjsq","hash":"f5a41a794a3cfb08712dce8a14ef06c840b1754c591ed1258fde076330bd3324","toolCount":79,"serverName":"nomadstays-mcp-server","serverVersion":"0.8.1","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-03T09:22:03.272Z","lastSeenAt":"2026-10-10T09:23:48.426Z","observations":27,"toolNames":["getStayByID","signupNomadStaysAccount","getStaysByCountry","getStaysByContinent","getStaysByLocation","getMarketplaceAdverts","getMarketplaceCategories","searchHelpCenter","getHelpCenterArticle","listHelpCenterCategories","getStaysByLifestyle","getStaysByBudget","getStaysByAmenities","getStaysByWiFiSpeed","getAllLifestyles","getAllAmenities","checkStayAvailability","hasAvailabilityInWindow","findNearestAvailability","getAvailabilityByMonth","getRoomAvailability","getRoomAmenities","getMyStays","getMyStayDetail","getMyStayOnboardingStatus","getMyStayRooms","getMyStayPackages","getMyStayOrganisationalData","getMyBusinessProfile","updateStayDetail","createStayRoom","updateStayRoom","deleteStayRoom","getRoomTypeOptions","getRoomFacilityOptions","deleteRoomPhoto","reorderRoomPhotos","createStayPackage","updateStayPackage","deleteStayPackage","getCurrencyOptions","updateStayOrganisationalData","updateHostBusinessProfile","uploadStayPhoto","getMyStayContacts","updateStayContacts","getMyStayFacilities","updateStayFacilities","getFacilityGroups","getStayTypeOptions","getCountryOptions","getCancellationPolicyOptions","getAdditionalInformationOptions","getBusinessModelOptions","getMyStayPhotos","deleteStayPhoto","reorderStayPhotos","getProductInfo","purchaseProduct","getPurchaseStatus","listStayApplications","getStayApplication","createStayApplication","saveStayApplication","submitStayApplication","listExperienceApplications","getExperienceApplication","createExperienceApplication","saveExperienceApplication","submitExperienceApplication","quoteStayBooking","bookStay","getBookingStatus","listMyBookings","listCoworkingApplications","getCoworkingApplication","createCoworkingApplication","saveCoworkingApplication","submitCoworkingApplication"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_hkuep6f7sjsq","url":"https://mcp.nomadstays.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T20:29:10.565Z","auth":{"observedAt":"2026-10-09T20:29:10.859Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.nomadstays.com/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.nomadstays.com/mcp","authorizationServers":["https://nomadstays.com"],"scopesSupported":[]},"authorizationServer":{"url":"https://nomadstays.com/.well-known/oauth-authorization-server","issuer":"https://www.nomadstays.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_post"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T20:29:10.912Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.nomadstays.com","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-09-26T15:53:43.000Z","validTo":"2026-12-25T15:53:42.000Z","daysToExpiry":76,"sanCount":1,"fingerprint256":"CD:A5:2F:E5:64:9B:3E:6A:D0:8C:05:15:ED:27:1B:DC:1D:46:8B:50:E2:39:D4:03:78:C2:8E:5C:2B:12:A3:55"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.nomadstays/mcp-server","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.nomadstays%2Fmcp-server","firstSeenAt":"2026-09-06T22:22:27.347Z","fetchedAt":"2026-10-07T22:19:42.454Z","normalizedAt":"2026-10-07T22:19:42.454Z"}]},"firstSeenAt":"2026-09-06T22:22:27.347Z","updatedAt":"2026-10-10T09:26:31.788Z"}